From 949c3c660b9ef9fc77c808a76979ecefea80cbf4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Oct 2023 19:05:15 +0100 Subject: [PATCH] Ignore "nan" enter and exit tags these happen if strings are assigned to individual rows without initializing the whole column --- freqtrade/strategy/interface.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index cbe6afc26..651ca14bf 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -1006,7 +1006,7 @@ class IStrategy(ABC, HyperStrategyMixin): exit_ = latest.get(SignalType.EXIT_LONG.value, 0) == 1 exit_tag = latest.get(SignalTagType.EXIT_TAG.value, None) # Tags can be None, which does not resolve to False. - exit_tag = exit_tag if isinstance(exit_tag, str) else None + exit_tag = exit_tag if isinstance(exit_tag, str) and exit_tag != 'nan' else None logger.debug(f"exit-trigger: {latest['date']} (pair={pair}) " f"enter={enter} exit={exit_}") @@ -1038,17 +1038,17 @@ class IStrategy(ABC, HyperStrategyMixin): exit_short = latest.get(SignalType.EXIT_SHORT.value, 0) == 1 enter_signal: Optional[SignalDirection] = None - enter_tag_value: Optional[str] = None + enter_tag: Optional[str] = None if enter_long == 1 and not any([exit_long, enter_short]): enter_signal = SignalDirection.LONG - enter_tag_value = latest.get(SignalTagType.ENTER_TAG.value, None) + enter_tag = latest.get(SignalTagType.ENTER_TAG.value, None) if (self.config.get('trading_mode', TradingMode.SPOT) != TradingMode.SPOT and self.can_short and enter_short == 1 and not any([exit_short, enter_long])): enter_signal = SignalDirection.SHORT - enter_tag_value = latest.get(SignalTagType.ENTER_TAG.value, None) + enter_tag = latest.get(SignalTagType.ENTER_TAG.value, None) - enter_tag_value = enter_tag_value if isinstance(enter_tag_value, str) else None + enter_tag = enter_tag if isinstance(enter_tag, str) and enter_tag != 'nan' else None timeframe_seconds = timeframe_to_seconds(timeframe) @@ -1058,11 +1058,11 @@ class IStrategy(ABC, HyperStrategyMixin): timeframe_seconds=timeframe_seconds, enter=bool(enter_signal) ): - return None, enter_tag_value + return None, enter_tag logger.debug(f"entry trigger: {latest['date']} (pair={pair}) " - f"enter={enter_long} enter_tag_value={enter_tag_value}") - return enter_signal, enter_tag_value + f"enter={enter_long} enter_tag_value={enter_tag}") + return enter_signal, enter_tag def ignore_expired_candle( self,