From: Jérôme Benoit Date: Fri, 1 Aug 2025 12:24:38 +0000 (+0200) Subject: perf(qav3): refine trade entry confirmations boundaries X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=8049c12c8ed8ca8db8e5dd983f8737543a8d767f;p=freqai-strategies.git perf(qav3): refine trade entry confirmations boundaries Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index a6784cd..1532423 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -615,8 +615,10 @@ class QuickAdapterRegressorV3(BaseRegressionModel): ) -> float: values = series.to_numpy() - if values.size < 2 or np.all(np.isclose(values, values[0])): - return values.mean() if values.size > 0 else np.nan + if values.size == 0: + return np.nan + if values.size == 1 or np.all(np.isclose(values, values[0])): + return values.mean() try: return threshold_func(values) except Exception: diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 922f5c9..3a68998 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -65,7 +65,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.3.120" + return "3.3.121" timeframe = "5m" @@ -971,15 +971,18 @@ class QuickAdapterV3(IStrategy): return False lower_bound = 0 upper_bound = 0 - price_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio( - pair, 0.00075 + unfavorable_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio( + pair, 0.00125 + ) + favorable_deviation = (last_candle_natr / 100.0) * self.get_entry_natr_ratio( + pair, 0.00225 ) if side == "long": - lower_bound = last_candle_weighted_close * (1 - 2 * price_deviation) - upper_bound = last_candle_weighted_close * (1 + price_deviation) + lower_bound = last_candle_weighted_close * (1 - favorable_deviation) + upper_bound = last_candle_weighted_close * (1 + unfavorable_deviation) elif side == "short": - lower_bound = last_candle_weighted_close * (1 - price_deviation) - upper_bound = last_candle_weighted_close * (1 + 2 * price_deviation) + lower_bound = last_candle_weighted_close * (1 - unfavorable_deviation) + upper_bound = last_candle_weighted_close * (1 + favorable_deviation) if lower_bound < 0: logger.info( f"User denied {side} entry for {pair}: calculated lower bound {lower_bound} is below zero"