From: Jérôme Benoit Date: Fri, 20 Jun 2025 15:15:06 +0000 (+0200) Subject: fix(qav3): reinit candle pool instead if empty instead of raising error X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=1d8c09a18f4f90ca356814b6c6933bd33b79f6d9;p=freqai-strategies.git fix(qav3): reinit candle pool instead if empty instead of raising error Signed-off-by: Jérôme Benoit --- 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()) )