]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
refactor(qav3): cleanup zigzag() implementation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 22 May 2025 08:50:30 +0000 (10:50 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 22 May 2025 08:50:30 +0000 (10:50 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py
quickadapter/user_data/strategies/Utils.py

index ef88f88ad61c5c6b6caeb61b3dda123b8174700a..2d50c6ce0786fc96c7cafc1e28c00113dc79faf4 100644 (file)
@@ -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
 
index 707539e729ca0d9848eb69a54f3bb05a385bb2ef..6b7dd024268d78b1c2c16bf0e1e3a0d3f4aaee1c 100644 (file)
@@ -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