From 5a28275d3baa8479e8215e3647ea8a32ac76f72b Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 19 May 2025 12:14:32 +0200 Subject: [PATCH] fix(qav3): better handling of low volality regime at pivots labeling 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 | 10 +++++----- quickadapter/user_data/strategies/Utils.py | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 7a2fcbc..100f164 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -45,7 +45,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): https://github.com/sponsors/robcaulk """ - version = "3.7.43" + version = "3.7.44" @cached_property def _optuna_config(self) -> dict: @@ -899,8 +899,8 @@ def zigzag( natr_pos = natr_values[pos] lookback_natr = natr_values[start:end] median_natr = np.median(lookback_natr) - if median_natr == 0: - median_natr = np.finfo(float).eps + if np.isclose(median_natr, 0): + return max_factor natr_ratio = natr_pos / median_natr smoothed_natr_ratio = np.sqrt(natr_ratio) @@ -946,8 +946,8 @@ def zigzag( natr_min = np.min(lookback_natr) natr_max = np.max(lookback_natr) natr_range = natr_max - natr_min - if natr_range == 0: - natr_range = np.finfo(float).eps + if np.isclose(natr_range, 0): + return min_value normalized_natr_pos = (natr_pos - natr_min) / natr_range return min_value + (max_value - min_value) * normalized_natr_pos diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index d6d7629..6315583 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -396,8 +396,8 @@ def zigzag( natr_pos = natr_values[pos] lookback_natr = natr_values[start:end] median_natr = np.median(lookback_natr) - if median_natr == 0: - median_natr = np.finfo(float).eps + if np.isclose(median_natr, 0): + return max_factor natr_ratio = natr_pos / median_natr smoothed_natr_ratio = np.sqrt(natr_ratio) @@ -443,8 +443,8 @@ def zigzag( natr_min = np.min(lookback_natr) natr_max = np.max(lookback_natr) natr_range = natr_max - natr_min - if natr_range == 0: - natr_range = np.finfo(float).eps + if np.isclose(natr_range, 0): + return min_value normalized_natr_pos = (natr_pos - natr_min) / natr_range return min_value + (max_value - min_value) * normalized_natr_pos -- 2.43.0