]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
fix(qav3): avoid config access to uninitialized properties
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 30 Sep 2025 10:55:09 +0000 (12:55 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 30 Sep 2025 10:55:09 +0000 (12:55 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py
quickadapter/user_data/strategies/QuickAdapterV3.py

index 2c8b2af74b8f0aa8ae039aa627a739aebcfbd2e1..adf8c34a513ac3f1bb7538f04ffd2f722e3fdf18 100644 (file)
@@ -68,7 +68,9 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
         optuna_default_config = {
             "enabled": False,
             "n_jobs": min(
-                self.freqai_info.get("optuna_hyperopt", {}).get("n_jobs", 1),
+                self.config.get("freqai", {})
+                .get("optuna_hyperopt", {})
+                .get("n_jobs", 1),
                 max(int(self.max_system_threads / 4), 1),
             ),
             "storage": "file",
@@ -84,7 +86,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
         }
         return {
             **optuna_default_config,
-            **self.freqai_info.get("optuna_hyperopt", {}),
+            **self.config.get("freqai", {}).get("optuna_hyperopt", {}),
         }
 
     @property
@@ -95,7 +97,13 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
             )
         n_pairs = len(self.pairs)
         label_frequency_candles = max(
-            2, 2 * n_pairs, int(self.ft_params.get("label_frequency_candles", 12))
+            2,
+            2 * n_pairs,
+            int(
+                self.config.get("feature_parameters", {}).get(
+                    "label_frequency_candles", 12
+                )
+            ),
         )
         cache_key = label_frequency_candles
         if cache_key not in self._optuna_label_candle_pool_full_cache:
index aa26cd794699dcf8e58b26d3f1a9b3865219f4cb..ccd0c393da08b6b26783de87300b34e9fa950cf9 100644 (file)
@@ -108,7 +108,7 @@ class QuickAdapterV3(IStrategy):
     def minimal_roi(self) -> dict[str, Any]:
         timeframe_minutes = timeframe_to_minutes(self.config.get("timeframe", "5m"))
         fit_live_predictions_candles = int(
-            self.freqai_info.get("fit_live_predictions_candles", 100)
+            self.config.get("freqai", {}).get("fit_live_predictions_candles", 100)
         )
         return {str(timeframe_minutes * fit_live_predictions_candles): -1}
 
@@ -146,7 +146,7 @@ class QuickAdapterV3(IStrategy):
     @cached_property
     def protections(self) -> list[dict[str, Any]]:
         fit_live_predictions_candles = int(
-            self.freqai_info.get("fit_live_predictions_candles", 100)
+            self.config.get("freqai", {}).get("fit_live_predictions_candles", 100)
         )
         estimated_trade_duration_candles = int(
             self.config.get("estimated_trade_duration_candles", 48)
@@ -187,7 +187,7 @@ class QuickAdapterV3(IStrategy):
     @cached_property
     def startup_candle_count(self) -> int:
         # Match the predictions warmup period
-        return self.freqai_info.get("fit_live_predictions_candles", 100)
+        return self.config.get("freqai", {}).get("fit_live_predictions_candles", 100)
 
     @cached_property
     def max_open_trades_per_side(self) -> int: