+26
-21
@@ -169,27 +169,11 @@ class Okx(Exchange):
|
|||||||
params['posSide'] = self._get_posSide(side, True)
|
params['posSide'] = self._get_posSide(side, True)
|
||||||
return params
|
return params
|
||||||
|
|
||||||
def fetch_stoploss_order(self, order_id: str, pair: str, params: Dict = {}) -> Dict:
|
def _convert_stop_order(self, pair: str, order_id: str, order: Dict) -> Dict:
|
||||||
if self._config['dry_run']:
|
if (
|
||||||
return self.fetch_dry_run_order(order_id)
|
order['status'] == 'closed'
|
||||||
|
and (real_order_id := order.get('info', {}).get('ordId')) is not None
|
||||||
try:
|
):
|
||||||
params1 = {'stop': True}
|
|
||||||
order_reg = self._api.fetch_order(order_id, pair, params=params1)
|
|
||||||
self._log_exchange_response('fetch_stoploss_order', order_reg)
|
|
||||||
return order_reg
|
|
||||||
except ccxt.OrderNotFound:
|
|
||||||
pass
|
|
||||||
params2 = {'stop': True, 'ordType': 'conditional'}
|
|
||||||
for method in (self._api.fetch_open_orders, self._api.fetch_closed_orders,
|
|
||||||
self._api.fetch_canceled_orders):
|
|
||||||
try:
|
|
||||||
orders = method(pair, params=params2)
|
|
||||||
orders_f = [order for order in orders if order['id'] == order_id]
|
|
||||||
if orders_f:
|
|
||||||
order = orders_f[0]
|
|
||||||
if (order['status'] == 'closed'
|
|
||||||
and (real_order_id := order.get('info', {}).get('ordId')) is not None):
|
|
||||||
# Once a order triggered, we fetch the regular followup order.
|
# Once a order triggered, we fetch the regular followup order.
|
||||||
order_reg = self.fetch_order(real_order_id, pair)
|
order_reg = self.fetch_order(real_order_id, pair)
|
||||||
self._log_exchange_response('fetch_stoploss_order1', order_reg)
|
self._log_exchange_response('fetch_stoploss_order1', order_reg)
|
||||||
@@ -200,6 +184,27 @@ class Okx(Exchange):
|
|||||||
return order_reg
|
return order_reg
|
||||||
order['type'] = 'stoploss'
|
order['type'] = 'stoploss'
|
||||||
return order
|
return order
|
||||||
|
|
||||||
|
def fetch_stoploss_order(self, order_id: str, pair: str, params: Dict = {}) -> Dict:
|
||||||
|
if self._config['dry_run']:
|
||||||
|
return self.fetch_dry_run_order(order_id)
|
||||||
|
|
||||||
|
try:
|
||||||
|
params1 = {'stop': True}
|
||||||
|
order_reg = self._api.fetch_order(order_id, pair, params=params1)
|
||||||
|
self._log_exchange_response('fetch_stoploss_order', order_reg)
|
||||||
|
return self._convert_stop_order(pair, order_id, order_reg)
|
||||||
|
except ccxt.OrderNotFound:
|
||||||
|
pass
|
||||||
|
params2 = {'stop': True, 'ordType': 'conditional'}
|
||||||
|
for method in (self._api.fetch_open_orders, self._api.fetch_closed_orders,
|
||||||
|
self._api.fetch_canceled_orders):
|
||||||
|
try:
|
||||||
|
orders = method(pair, params=params2)
|
||||||
|
orders_f = [order for order in orders if order['id'] == order_id]
|
||||||
|
if orders_f:
|
||||||
|
order = orders_f[0]
|
||||||
|
return self._convert_stop_order(pair, order_id, order)
|
||||||
except ccxt.BaseError:
|
except ccxt.BaseError:
|
||||||
pass
|
pass
|
||||||
raise RetryableOrderError(
|
raise RetryableOrderError(
|
||||||
|
|||||||
Reference in New Issue
Block a user