From d8bc860953871cb0adb7b5b011e4c7117aabeecb Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Thu, 22 May 2025 10:50:30 +0200 Subject: [PATCH] refactor(qav3): cleanup zigzag() implementation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../user_data/freqaimodels/QuickAdapterRegressorV3.py | 5 +++-- quickadapter/user_data/strategies/Utils.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index ef88f88..2d50c6c 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -914,14 +914,15 @@ def zigzag( ) -> float: start = max(0, pos - natr_period) end = min(pos + 1, n) + median_factor = np.median([min_factor, max_factor]) if start >= end: - return (min_factor + max_factor) / 2 + return median_factor natr_values = get_natr_values(natr_period) lookback_natr_values = natr_values[start:end] quantile = calculate_quantile(lookback_natr_values, natr_values[pos]) if np.isnan(quantile): - return (min_factor + max_factor) / 2 + return median_factor return max_factor - (max_factor - min_factor) * quantile diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index 707539e..6b7dd02 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -403,14 +403,15 @@ def zigzag( ) -> float: start = max(0, pos - natr_period) end = min(pos + 1, n) + median_factor = np.median([min_factor, max_factor]) if start >= end: - return (min_factor + max_factor) / 2 + return median_factor natr_values = get_natr_values(natr_period) lookback_natr_values = natr_values[start:end] quantile = calculate_quantile(lookback_natr_values, natr_values[pos]) if np.isnan(quantile): - return (min_factor + max_factor) / 2 + return median_factor return max_factor - (max_factor - min_factor) * quantile -- 2.43.0