|
|
|
|
@ -885,7 +885,6 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|
|
|
|
if exit_ and not enter:
|
|
|
|
|
exit_signal = ExitType.EXIT_SIGNAL
|
|
|
|
|
else:
|
|
|
|
|
trade_type = "exit_short" if trade.is_short else "sell"
|
|
|
|
|
custom_reason = strategy_safe_wrapper(self.custom_exit, default_retval=False)(
|
|
|
|
|
pair=trade.pair, trade=trade, current_time=current_time,
|
|
|
|
|
current_rate=current_rate, current_profit=current_profit)
|
|
|
|
|
@ -893,7 +892,7 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|
|
|
|
exit_signal = ExitType.CUSTOM_EXIT
|
|
|
|
|
if isinstance(custom_reason, str):
|
|
|
|
|
if len(custom_reason) > CUSTOM_EXIT_MAX_LENGTH:
|
|
|
|
|
logger.warning(f'Custom {trade_type} reason returned from '
|
|
|
|
|
logger.warning(f'Custom exit reason returned from '
|
|
|
|
|
f'custom_exit is too long and was trimmed'
|
|
|
|
|
f'to {CUSTOM_EXIT_MAX_LENGTH} characters.')
|
|
|
|
|
custom_reason = custom_reason[:CUSTOM_EXIT_MAX_LENGTH]
|
|
|
|
|
|