From df7496e4ded44b9296a49c972ec15c44e4489506 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Thu, 22 May 2025 10:01:57 +0200 Subject: [PATCH] fix(qav3): ensure TP target is always computed 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 | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 95e2d12..b26349b 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.52" + return "3.3.53" timeframe = "5m" @@ -495,14 +495,24 @@ class QuickAdapterV3(IStrategy): if not QuickAdapterV3.is_trade_duration_valid(trade_duration_candles): return None entry_date = QuickAdapterV3.get_trade_entry_date(trade) + trade_zl_natr = zero_lag_series( + df.loc[df["date"] >= entry_date, "natr_label_period_candles"], + period=trade_duration_candles, + ) + if trade_zl_natr.empty or trade_zl_natr.isna().all(): + return None kama = get_ma_fn("kama") - take_profit_natr = kama( - zero_lag_series( - df.loc[df["date"] >= entry_date, "natr_label_period_candles"], - period=trade_duration_candles, - ), - timeperiod=trade_duration_candles, - ).iloc[-1] + trade_kama_natr = kama(trade_zl_natr, timeperiod=trade_duration_candles) + if ( + trade_kama_natr is None + or trade_kama_natr.empty + or trade_kama_natr.isna().all() + ): + 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