@@ -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 :
@@ -294,10 +295,17 @@ async def get_closed_orders(self, symbol=None, since=None, limit=None, **kwargs)
294295 super ().get_closed_orders , symbol = symbol , since = since , limit = limit , ** kwargs
295296 )
296297
297- async def get_order (self , exchange_order_id : str , symbol : str = None , ** kwargs : dict ) -> dict :
298+ async def get_order (
299+ self ,
300+ exchange_order_id : str ,
301+ symbol : typing .Optional [str ] = None ,
302+ order_type : typing .Optional [trading_enums .TraderOrderType ] = None ,
303+ ** kwargs : dict
304+ ) -> dict :
298305 try :
299- kwargs = self ._get_okx_order_params (exchange_order_id , ** kwargs )
300- order = await super ().get_order (exchange_order_id , symbol = symbol , ** kwargs )
306+ order = await super ().get_order (
307+ exchange_order_id , symbol = symbol , order_type = order_type , ** kwargs
308+ )
301309 return order
302310 except trading_errors .NotSupported :
303311 if kwargs .get ("stop" , False ):
@@ -306,35 +314,31 @@ async def get_order(self, exchange_order_id: str, symbol: str = None, **kwargs:
306314 return await self .get_order_from_open_and_closed_orders (exchange_order_id , symbol = symbol , ** kwargs )
307315 raise
308316
309- async def cancel_order (
310- self , exchange_order_id : str , symbol : str , order_type : trading_enums .TraderOrderType , ** kwargs : dict
311- ) -> trading_enums .OrderStatus :
312- return await super ().cancel_order (
313- exchange_order_id , symbol , order_type , ** self ._get_okx_order_params (exchange_order_id , order_type , ** kwargs )
314- )
315-
316- def _get_okx_order_params (self , exchange_order_id , order_type = None , ** kwargs ):
317+ def order_request_kwargs_factory (
318+ self ,
319+ exchange_order_id : str ,
320+ order_type : typing .Optional [trading_enums .TraderOrderType ] = None ,
321+ ** kwargs
322+ ) -> dict :
317323 params = kwargs or {}
318324 try :
319325 if "stop" not in params :
320- order_type = order_type or \
321- self .exchange_manager .exchange_personal_data .orders_manager .get_order (
322- None , exchange_order_id = exchange_order_id
323- ).order_type
324- params ["stop" ] = trading_personal_data .is_stop_order (order_type ) \
326+ order_type = (
327+ order_type or
328+ self .exchange_manager .exchange_personal_data .orders_manager .get_order (
329+ None , exchange_order_id = exchange_order_id
330+ ).order_type
331+ )
332+ params ["stop" ] = (
333+ trading_personal_data .is_stop_order (order_type )
325334 or trading_personal_data .is_take_profit_order (order_type )
326- except KeyError :
327- pass
335+ )
336+ except KeyError as err :
337+ self .logger .warning (
338+ f"Order { exchange_order_id } not found in order manager: considering it a regular (no stop/take profit) order { err } "
339+ )
328340 return params
329341
330- async def _verify_order (self , created_order , order_type , symbol , price , quantity , side , get_order_params = None ):
331-
332- if trading_personal_data .is_stop_order (order_type ) or trading_personal_data .is_take_profit_order (order_type ):
333- get_order_params = get_order_params or {}
334- get_order_params ["stop" ] = True
335- return await super ()._verify_order (created_order , order_type , symbol , price , quantity , side ,
336- get_order_params = get_order_params )
337-
338342 def _is_oco_order (self , params ):
339343 return all (
340344 oco_order_param in (params or {})
0 commit comments