From 4faa009cc9e1bc7c2fc22b40a5b7f129a08040af Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 23 May 2025 14:49:06 +0200 Subject: [PATCH] fix(qav3): gracefully handle take profit computation error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../user_data/strategies/QuickAdapterV3.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index ff28dea..abe56c2 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -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 ( -- 2.43.0