@@ -294,10 +294,17 @@ async def get_closed_orders(self, symbol=None, since=None, limit=None, **kwargs)
294294 super ().get_closed_orders , symbol = symbol , since = since , limit = limit , ** kwargs
295295 )
296296
297- async def get_order (self , exchange_order_id : str , symbol : str = None , ** kwargs : dict ) -> dict :
297+ async def get_order (
298+ self ,
299+ exchange_order_id : str ,
300+ symbol : typing .Optional [str ] = None ,
301+ order_type : typing .Optional [trading_enums .TraderOrderType ] = None ,
302+ ** kwargs : dict
303+ ) -> dict :
298304 try :
299- kwargs = self ._get_okx_order_params (exchange_order_id , ** kwargs )
300- order = await super ().get_order (exchange_order_id , symbol = symbol , ** kwargs )
305+ order = await super ().get_order (
306+ exchange_order_id , symbol = symbol , order_type = order_type , ** kwargs
307+ )
301308 return order
302309 except trading_errors .NotSupported :
303310 if kwargs .get ("stop" , False ):
@@ -306,35 +313,31 @@ async def get_order(self, exchange_order_id: str, symbol: str = None, **kwargs:
306313 return await self .get_order_from_open_and_closed_orders (exchange_order_id , symbol = symbol , ** kwargs )
307314 raise
308315
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 ):
316+ def _order_request_kwargs_factory (
317+ self ,
318+ exchange_order_id : str ,
319+ order_type : typing .Optional [trading_enums .TraderOrderType ] = None ,
320+ ** kwargs
321+ ) -> dict :
317322 params = kwargs or {}
318323 try :
319324 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 ) \
325+ order_type = (
326+ order_type or
327+ self .exchange_manager .exchange_personal_data .orders_manager .get_order (
328+ None , exchange_order_id = exchange_order_id
329+ ).order_type
330+ )
331+ params ["stop" ] = (
332+ trading_personal_data .is_stop_order (order_type )
325333 or trading_personal_data .is_take_profit_order (order_type )
326- except KeyError :
327- pass
334+ )
335+ except KeyError as err :
336+ self .logger .warning (
337+ f"Order { exchange_order_id } not found in order manager: considering it a regular (no stop/take profit) order { err } "
338+ )
328339 return params
329340
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-
338341 def _is_oco_order (self , params ):
339342 return all (
340343 oco_order_param in (params or {})
0 commit comments