Skip to content

Commit f9aaff8

Browse files
committed
[Exchanges] set fetch_stop_order_in_different_request
1 parent aca7791 commit f9aaff8

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

Trading/Exchange/binance/binance_exchange.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import ccxt
2121

2222
import octobot_commons.constants as commons_constants
23+
import octobot_commons.symbols as symbols
2324

2425
import octobot_trading.enums as trading_enums
2526
import octobot_trading.exchanges as exchanges
@@ -145,7 +146,6 @@ def supports_native_edit_order(self, order_type: trading_enums.TraderOrderType)
145146
if self.exchange_manager.is_future:
146147
# replace not supported in futures stop orders
147148
return not is_stop
148-
return True
149149

150150
async def get_account_id(self, **kwargs: dict) -> str:
151151
try:
@@ -286,7 +286,7 @@ def get_order_additional_params(self, order) -> dict:
286286
params["reduceOnly"] = order.reduce_only
287287
return params
288288

289-
def _order_request_kwargs_factory(
289+
def order_request_kwargs_factory(
290290
self,
291291
exchange_order_id: str,
292292
order_type: typing.Optional[trading_enums.TraderOrderType] = None,
@@ -311,6 +311,11 @@ def _order_request_kwargs_factory(
311311
)
312312
return params
313313

314+
def fetch_stop_order_in_different_request(self, symbol: str) -> bool:
315+
# Override in tentacles when stop orders need to be fetched in a separate request from CCXT
316+
# Binance futures uses the algo orders endpoint for stop orders (but not for inverse orders)
317+
return self.exchange_manager.is_future and not symbols.parse_symbol(symbol).is_inverse()
318+
314319
async def _create_market_sell_order(
315320
self, symbol, quantity, price=None, reduce_only: bool = False, params=None
316321
) -> dict:

Trading/Exchange/kucoin/kucoin_exchange.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -393,19 +393,18 @@ async def get_balance(self, **kwargs: dict):
393393
return balance
394394
return await super().get_balance(**kwargs)
395395

396+
def fetch_stop_order_in_different_request(self, symbol: str) -> bool:
397+
# Override in tentacles when stop orders need to be fetched in a separate request from CCXT
398+
# Kucoin uses the algo orders endpoint for all stop orders
399+
return True
400+
396401
@_kucoin_retrier
397402
async def get_open_orders(self, symbol=None, since=None, limit=None, **kwargs) -> list:
398403
if limit is None:
399404
# default is 50, The maximum cannot exceed 1000
400405
# https://www.kucoin.com/docs/rest/futures-trading/orders/get-order-list
401406
limit = 200
402-
regular_orders = await super().get_open_orders(symbol=symbol, since=since, limit=limit, **kwargs)
403-
stop_orders = []
404-
if "stop" not in kwargs:
405-
# add untriggered stop orders (different api endpoint)
406-
kwargs["stop"] = True
407-
stop_orders = await super().get_open_orders(symbol=symbol, since=since, limit=limit, **kwargs)
408-
return regular_orders + stop_orders
407+
return await super().get_open_orders(symbol=symbol, since=since, limit=limit, **kwargs)
409408

410409
@_kucoin_retrier
411410
async def get_order(

Trading/Exchange/okx/okx_exchange.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ def get_bundled_order_parameters(self, order, stop_loss_price=None, take_profit_
267267
return params
268268

269269
async def _get_all_typed_orders(self, method, symbol=None, since=None, limit=None, **kwargs) -> list:
270+
# todo replace by settings fetch_stop_order_in_different_request method when OKX will be stable again
270271
limit = self._fix_limit(limit)
271272
is_stop_order = kwargs.get("stop", False)
272273
if is_stop_order and self.connector.adapter.OKX_ORDER_TYPE not in kwargs:
@@ -313,7 +314,7 @@ async def get_order(
313314
return await self.get_order_from_open_and_closed_orders(exchange_order_id, symbol=symbol, **kwargs)
314315
raise
315316

316-
def _order_request_kwargs_factory(
317+
def order_request_kwargs_factory(
317318
self,
318319
exchange_order_id: str,
319320
order_type: typing.Optional[trading_enums.TraderOrderType] = None,

0 commit comments

Comments
 (0)