From 608f35a30617b04bb9eac4f353645c8f04b2f20e Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 4 Apr 2025 16:28:02 +0200 Subject: [PATCH] perf(qav3): fine tune extrema labeling 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 | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 2bf02c3..5cfae52 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -13,7 +13,7 @@ from freqtrade.strategy.interface import IStrategy from freqtrade.strategy import stoploss_from_absolute from technical.pivots_points import pivots_points from freqtrade.persistence import Trade -from scipy.signal import argrelmin, argrelmax +from scipy.signal import find_peaks import numpy as np import pandas_ta as pta @@ -59,7 +59,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.2.8" + return "3.2.9" timeframe = "5m" @@ -349,18 +349,20 @@ class QuickAdapterV3(IStrategy): def set_freqai_targets(self, dataframe, metadata, **kwargs): label_period_candles = self.get_label_period_candles(str(metadata.get("pair"))) - min_peaks = argrelmin( - dataframe["low"].values, - order=label_period_candles, + min_peaks, _ = find_peaks( + -dataframe["low"].values, + distance=label_period_candles * 2, + width=label_period_candles / 2, ) - max_peaks = argrelmax( + max_peaks, _ = find_peaks( dataframe["high"].values, - order=label_period_candles, + distance=label_period_candles * 2, + width=label_period_candles / 2, ) dataframe[EXTREMA_COLUMN] = 0 - for mp in min_peaks[0]: + for mp in min_peaks: dataframe.at[mp, EXTREMA_COLUMN] = -1 - for mp in max_peaks[0]: + for mp in max_peaks: dataframe.at[mp, EXTREMA_COLUMN] = 1 dataframe["minima"] = np.where(dataframe[EXTREMA_COLUMN] == -1, -1, 0) dataframe["maxima"] = np.where(dataframe[EXTREMA_COLUMN] == 1, 1, 0) -- 2.43.0