|
|
|
|
@ -1076,7 +1076,14 @@ class Exchange:
|
|
|
|
|
Verify stop_loss against stoploss-order value (limit or price)
|
|
|
|
|
Returns True if adjustment is necessary.
|
|
|
|
|
"""
|
|
|
|
|
raise OperationalException(f"stoploss is not implemented for {self.name}.")
|
|
|
|
|
if not self._ft_has.get('stoploss_on_exchange'):
|
|
|
|
|
raise OperationalException(f"stoploss is not implemented for {self.name}.")
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
order.get('stopPrice', None) is None
|
|
|
|
|
or ((side == "sell" and stop_loss > float(order['stopPrice'])) or
|
|
|
|
|
(side == "buy" and stop_loss < float(order['stopPrice'])))
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def _get_stop_order_type(self, user_order_type) -> Tuple[str, str]:
|
|
|
|
|
|
|
|
|
|
@ -1106,7 +1113,7 @@ class Exchange:
|
|
|
|
|
'In stoploss limit order, stop price should be more than limit price')
|
|
|
|
|
return limit_rate
|
|
|
|
|
|
|
|
|
|
def _get_stop_params(self, ordertype: str, stop_price: float) -> Dict:
|
|
|
|
|
def _get_stop_params(self, side: BuySell, ordertype: str, stop_price: float) -> Dict:
|
|
|
|
|
params = self._params.copy()
|
|
|
|
|
# Verify if stopPrice works for your exchange!
|
|
|
|
|
params.update({'stopPrice': stop_price})
|
|
|
|
|
@ -1155,7 +1162,8 @@ class Exchange:
|
|
|
|
|
return dry_order
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
params = self._get_stop_params(ordertype=ordertype, stop_price=stop_price_norm)
|
|
|
|
|
params = self._get_stop_params(side=side, ordertype=ordertype,
|
|
|
|
|
stop_price=stop_price_norm)
|
|
|
|
|
if self.trading_mode == TradingMode.FUTURES:
|
|
|
|
|
params['reduceOnly'] = True
|
|
|
|
|
|
|
|
|
|
|