]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
perf(qav3): fine tune extrema labeling
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 4 Apr 2025 16:46:37 +0000 (18:46 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 4 Apr 2025 16:46:37 +0000 (18:46 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/strategies/QuickAdapterV3.py

index 5cfae52d0d6149cab4b57d3fb41d35b8d80117cd..c642cf2240946b1a15311603e20f341dbc4c5114 100644 (file)
@@ -59,7 +59,7 @@ class QuickAdapterV3(IStrategy):
     INTERFACE_VERSION = 3
 
     def version(self) -> str:
-        return "3.2.9"
+        return "3.2.10"
 
     timeframe = "5m"
 
@@ -78,7 +78,7 @@ class QuickAdapterV3(IStrategy):
 
     @cached_property
     def entry_natr_ratio(self) -> float:
-        return self.config.get("entry_pricing", {}).get("entry_natr_ratio", 0.0025)
+        return self.config.get("entry_pricing", {}).get("entry_natr_ratio", 0.00025)
 
     # reward_risk_ratio = reward / risk
     # reward_risk_ratio = 1.0 means 1:1 RR
@@ -349,15 +349,25 @@ class QuickAdapterV3(IStrategy):
 
     def set_freqai_targets(self, dataframe, metadata, **kwargs):
         label_period_candles = self.get_label_period_candles(str(metadata.get("pair")))
+        peaks_distance = label_period_candles * 2
+        peaks_width = label_period_candles // 2
+        # To match current market condition, use the current close price and NATR to evaluate peaks prominence
+        peaks_prominence = (
+            dataframe["close"].iloc[-1]
+            * ta.NATR(dataframe, timeperiod=peaks_distance).iloc[-1]
+            * 0.0025
+        )
         min_peaks, _ = find_peaks(
             -dataframe["low"].values,
-            distance=label_period_candles * 2,
-            width=label_period_candles / 2,
+            distance=peaks_distance,
+            width=peaks_width,
+            prominence=peaks_prominence,
         )
         max_peaks, _ = find_peaks(
             dataframe["high"].values,
-            distance=label_period_candles * 2,
-            width=label_period_candles / 2,
+            distance=peaks_distance,
+            width=peaks_width,
+            prominence=peaks_prominence,
         )
         dataframe[EXTREMA_COLUMN] = 0
         for mp in min_peaks: