]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
fix(qav3): gracefully handle take profit computation error
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 23 May 2025 12:49:06 +0000 (14:49 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 23 May 2025 12:49:06 +0000 (14:49 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/strategies/QuickAdapterV3.py

index ff28dea3495e3dfe608202e290b897b95cba760d..abe56c23b92588a909e5df909e670c02c1fe69de 100644 (file)
@@ -60,7 +60,7 @@ class QuickAdapterV3(IStrategy):
     INTERFACE_VERSION = 3
 
     def version(self) -> str:
-        return "3.3.58"
+        return "3.3.59"
 
     timeframe = "5m"
 
@@ -497,20 +497,23 @@ class QuickAdapterV3(IStrategy):
         trade_zl_natr = zero_lag_series(
             df["natr_label_period_candles"], period=trade_duration_candles
         )
-        if trade_zl_natr.empty or trade_zl_natr.isna().all():
+        if trade_zl_natr.empty:
             return None
-        kama = get_ma_fn("kama")
-        trade_kama_natr = kama(trade_zl_natr, timeperiod=trade_duration_candles)
-        if (
-            not isinstance(trade_kama_natr, Series)
-            or trade_kama_natr.empty
-            or trade_kama_natr.isna().all()
-        ):
+        take_profit_natr = np.nan
+        if trade_duration_candles >= 2:
+            kama = get_ma_fn("kama")
+            try:
+                trade_kama_natr = kama(
+                    trade_zl_natr, timeperiod=trade_duration_candles
+                ).dropna()
+                if not trade_kama_natr.empty:
+                    take_profit_natr = trade_kama_natr.iloc[-1]
+            except Exception:
+                pass
+        if isna(take_profit_natr):
             take_profit_natr = (
                 trade_zl_natr.ewm(span=trade_duration_candles).mean().iloc[-1]
             )
-        else:
-            take_profit_natr = trade_kama_natr.iloc[-1]
         if isna(take_profit_natr) or take_profit_natr < 0:
             return None
         return (