mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-14 20:01:18 +00:00
feat: don't cancel stoploss early if it's not necessary
This commit is contained in:
@@ -1063,7 +1063,16 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def cancel_stoploss_on_exchange(self, trade: Trade) -> Trade:
|
def cancel_stoploss_on_exchange(self, trade: Trade, allow_nonblocking: bool = False) -> Trade:
|
||||||
|
"""
|
||||||
|
Cancels on exchange stoploss orders for the given trade.
|
||||||
|
:param trade: Trade for which to cancel stoploss order
|
||||||
|
:param allow_nonblocking: If True, will skip cancelling stoploss on exchange
|
||||||
|
if the exchange supports blocking stoploss orders.
|
||||||
|
"""
|
||||||
|
if allow_nonblocking and not self.exchange.get_option("stoploss_blocks_assets", True):
|
||||||
|
logger.info(f"Skipping cancelling stoploss on exchange for {trade}.")
|
||||||
|
return trade
|
||||||
# First cancelling stoploss on exchange ...
|
# First cancelling stoploss on exchange ...
|
||||||
for oslo in trade.open_sl_orders:
|
for oslo in trade.open_sl_orders:
|
||||||
try:
|
try:
|
||||||
@@ -2088,7 +2097,7 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
limit = self.get_valid_price(custom_exit_price, proposed_limit_rate)
|
limit = self.get_valid_price(custom_exit_price, proposed_limit_rate)
|
||||||
|
|
||||||
# First cancelling stoploss on exchange ...
|
# First cancelling stoploss on exchange ...
|
||||||
trade = self.cancel_stoploss_on_exchange(trade)
|
trade = self.cancel_stoploss_on_exchange(trade, allow_nonblocking=True)
|
||||||
|
|
||||||
order_type = ordertype or self.strategy.order_types[exit_type]
|
order_type = ordertype or self.strategy.order_types[exit_type]
|
||||||
if exit_check.exit_type == ExitType.EMERGENCY_EXIT:
|
if exit_check.exit_type == ExitType.EMERGENCY_EXIT:
|
||||||
|
|||||||
Reference in New Issue
Block a user