calculate_n_extrema,
fit_regressor,
format_number,
+ get_label_defaults,
get_min_max_label_period_candles,
get_optuna_callbacks,
get_optuna_study_model_parameters,
- midpoint,
soft_extremum,
- validate_range,
zigzag,
- get_label_defaults,
)
debug = False
https://github.com/sponsors/robcaulk
"""
- version = "3.7.119"
+ version = "3.7.120"
@cached_property
def _optuna_config(self) -> dict[str, Any]:
self._optuna_label_candle: dict[str, int] = {}
self._optuna_label_candles: dict[str, int] = {}
self._optuna_label_incremented_pairs: list[str] = []
- self._default_label_natr_ratio, self._default_label_period_candles = get_label_defaults(self.ft_params, logger)
+ self._default_label_natr_ratio, self._default_label_period_candles = (
+ get_label_defaults(self.ft_params, logger)
+ )
for pair in self.pairs:
self._optuna_hp_value[pair] = -1
self._optuna_train_value[pair] = -1
f"Initialized {self.__class__.__name__} {self.freqai_info.get('regressor', 'xgboost')} regressor model version {self.version}"
)
-
def get_optuna_params(self, pair: str, namespace: str) -> dict[str, Any]:
if namespace == "hp":
params = self._optuna_hp_params.get(pair)
format_number,
get_callable_sha256,
get_distance,
+ get_label_defaults,
get_zl_ma_fn,
- midpoint,
non_zero_diff,
price_retracement_percent,
smooth_extrema,
vwapb,
zigzag,
zlema,
- get_label_defaults,
-
)
debug = False
INTERFACE_VERSION = 3
-
def version(self) -> str:
return "3.3.164"
/ "models"
/ self.freqai_info.get("identifier")
)
- self._default_label_natr_ratio, self._default_label_period_candles = get_label_defaults(self.freqai_info.get("feature_parameters", {}), logger)
+ feature_parameters = self.freqai_info.get("feature_parameters", {})
+ self._default_label_natr_ratio, self._default_label_period_candles = (
+ get_label_defaults(feature_parameters, logger)
+ )
self._label_params: dict[str, dict[str, Any]] = {}
for pair in self.pairs:
self._label_params[pair] = (
self.optuna_load_best_params(pair, "label")
if self.optuna_load_best_params(pair, "label")
else {
- "label_period_candles": self.freqai_info.get(
- "feature_parameters", {}
- ).get(
+ "label_period_candles": feature_parameters.get(
"label_period_candles",
self._default_label_period_candles,
),
"label_natr_ratio": float(
- self.freqai_info.get("feature_parameters", {}).get(
+ feature_parameters.get(
"label_natr_ratio",
self._default_label_natr_ratio,
)
format_number(self._reversal_max_natr_ratio_percent),
)
-
def feature_engineering_expand_all(
self, dataframe: DataFrame, period: int, metadata: dict[str, Any], **kwargs
) -> DataFrame:
return sanitized_min, sanitized_max
-def get_label_defaults(params_dict: dict[str, Any], logger: Logger) -> tuple[float, int]:
- """Compute default label_natr_ratio and label_period_candles.
-
- Reads min/max ranges from params_dict (feature/ft params) and validates them with
- validate_range, then returns midpoint defaults.
- """
- feature_parameters = params_dict or {}
-
- # NATR ratio defaults
- default_min_label_natr_ratio = 9.0
- default_max_label_natr_ratio = 12.0
+def get_label_defaults(
+ feature_parameters: dict[str, Any],
+ logger: Logger,
+ *,
+ default_min_label_period_candles: int = 12,
+ default_max_label_period_candles: int = 24,
+ default_min_label_natr_ratio: float = 9.0,
+ default_max_label_natr_ratio: float = 12.0,
+) -> tuple[float, int]:
min_label_natr_ratio = feature_parameters.get(
"min_label_natr_ratio", default_min_label_natr_ratio
)
non_negative=True,
finite_only=True,
)
- default_label_natr_ratio = float(midpoint(min_label_natr_ratio, max_label_natr_ratio))
+ default_label_natr_ratio = float(
+ midpoint(min_label_natr_ratio, max_label_natr_ratio)
+ )
- # Period candles defaults
- default_min_label_period_candles = 12
- default_max_label_period_candles = 24
min_label_period_candles = feature_parameters.get(
"min_label_period_candles", default_min_label_period_candles
)