From 1d8c09a18f4f90ca356814b6c6933bd33b79f6d9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 20 Jun 2025 17:15:06 +0200 Subject: [PATCH] fix(qav3): reinit candle pool instead if empty instead of raising error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../freqaimodels/QuickAdapterRegressorV3.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 795ff67..3cee27f 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -190,7 +190,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): raise ValueError(f"Invalid namespace: {namespace}") @lru_cache(maxsize=8) - def get_optuna_label_all_candles(self) -> list[int]: + def build_optuna_label_candle_pool(self) -> list[int]: n_pairs = len(self.pairs) label_frequency_candles = max( 2, 2 * n_pairs, int(self.ft_params.get("label_frequency_candles", 12)) @@ -203,16 +203,22 @@ class QuickAdapterRegressorV3(BaseRegressionModel): ] def init_optuna_label_candle_pool(self) -> None: - self._optuna_label_candle_pool = self.get_optuna_label_all_candles() + self._optuna_label_candle_pool = self.build_optuna_label_candle_pool() random.shuffle(self._optuna_label_candle_pool) if len(self._optuna_label_candle_pool) == 0: raise RuntimeError("Failed to initialize optuna label candle pool") def set_optuna_label_candle(self, pair: str) -> None: if len(self._optuna_label_candle_pool) == 0: - raise RuntimeError( - "Optuna label candle pool is empty, cannot set optuna label candle" + logger.warning( + "Optuna label candle pool is empty, reinitializing it" + f"{self._optuna_label_candle_pool=}" + f"{self.build_optuna_label_candle_pool()=}" + f"{self._optuna_label_candle.values()=}" + f"{self._optuna_label_candles.values()=}" + f"{self._optuna_label_incremented_pairs=}" ) + self.init_optuna_label_candle_pool() optuna_label_candle_pool = copy.deepcopy(self._optuna_label_candle_pool) for p in self.pairs: if p == pair: @@ -232,7 +238,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): self._optuna_label_candle[pair] = optuna_label_candle self._optuna_label_candle_pool.remove(optuna_label_candle) optuna_label_available_candles = ( - set(self.get_optuna_label_all_candles()) + set(self.build_optuna_label_candle_pool()) - set(self._optuna_label_candle_pool) - set(self._optuna_label_candle.values()) ) -- 2.43.0