self.check_envs: bool = self.rl_config.get("check_envs", True)
self.progressbar_callback: Optional[ProgressBarCallback] = None
# Optuna hyperopt
- self.rl_config_optuna: dict = self.freqai_info.get("rl_config_optuna", {})
+ self.rl_config_optuna: Dict[str, Any] = self.freqai_info.get(
+ "rl_config_optuna", {}
+ )
self.hyperopt: bool = (
self.freqai_info.get("enabled", False)
and self.rl_config_optuna.get("enabled", False)
def _predict(window):
observation: DataFrame = dataframe.iloc[window.index]
- action_masks_param: dict = {}
+ action_masks_param: Dict[str, Any] = {}
if self.live and self.rl_config.get("add_state_info", False):
position, pnl, trade_duration = self.get_state_info(dk.pair)
import logging
from functools import cached_property, reduce
-# from typing import Any
+from typing import Any
# import talib.abstract as ta
from pandas import DataFrame
return self.is_short_allowed()
# def feature_engineering_expand_all(
- # self, dataframe: DataFrame, period: int, metadata: dict, **kwargs
+ # self, dataframe: DataFrame, period: int, metadata: dict[str, Any], **kwargs
# ) -> DataFrame:
# dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
# return dataframe
def feature_engineering_expand_basic(
- self, dataframe: DataFrame, metadata: dict, **kwargs
+ self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
dataframe["%-close_pct_change"] = dataframe.get("close").pct_change()
dataframe["%-raw_volume"] = dataframe.get("volume")
return dataframe
def feature_engineering_standard(
- self, dataframe: DataFrame, metadata: dict, **kwargs
+ self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
dates = dataframe.get("date")
dataframe["%-day_of_week"] = (dates.dt.dayofweek + 1) / 7
return dataframe
def set_freqai_targets(
- self, dataframe: DataFrame, metadata: dict, **kwargs
+ self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
dataframe[ACTION_COLUMN] = 0
return dataframe
- def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
+ def populate_indicators(
+ self, dataframe: DataFrame, metadata: dict[str, Any]
+ ) -> DataFrame:
dataframe = self.freqai.start(dataframe, metadata, self)
return dataframe
- def populate_entry_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
+ def populate_entry_trend(
+ self, df: DataFrame, metadata: dict[str, Any]
+ ) -> DataFrame:
enter_long_conditions = [df.get("do_predict") == 1, df.get(ACTION_COLUMN) == 1]
df.loc[
return df
- def populate_exit_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
+ def populate_exit_trend(self, df: DataFrame, metadata: dict[str, Any]) -> DataFrame:
exit_long_conditions = [df.get("do_predict") == 1, df.get(ACTION_COLUMN) == 2]
df.loc[reduce(lambda x, y: x & y, exit_long_conditions), "exit_long"] = 1
version = "3.7.94"
@cached_property
- def _optuna_config(self) -> dict:
+ def _optuna_config(self) -> dict[str, Any]:
optuna_default_config = {
"enabled": False,
"n_jobs": min(
self._optuna_hp_value: dict[str, float] = {}
self._optuna_train_value: dict[str, float] = {}
self._optuna_label_values: dict[str, list] = {}
- self._optuna_hp_params: dict[str, dict] = {}
- self._optuna_train_params: dict[str, dict] = {}
- self._optuna_label_params: dict[str, dict] = {}
+ self._optuna_hp_params: dict[str, dict[str, Any]] = {}
+ self._optuna_train_params: dict[str, dict[str, Any]] = {}
+ self._optuna_label_params: dict[str, dict[str, Any]] = {}
self.init_optuna_label_candle_pool()
self._optuna_label_candle: dict[str, int] = {}
self._optuna_label_candles: dict[str, int] = {}
/ "models"
/ self.freqai_info.get("identifier")
)
- self._label_params: dict[str, dict] = {}
+ self._label_params: dict[str, dict[str, Any]] = {}
for pair in self.pairs:
self._label_params[pair] = (
self.optuna_load_best_params(pair, "label")
)
def feature_engineering_expand_all(
- self, dataframe: DataFrame, period: int, metadata: dict, **kwargs
+ self, dataframe: DataFrame, period: int, metadata: dict[str, Any], **kwargs
) -> DataFrame:
highs = dataframe.get("high")
lows = dataframe.get("low")
return dataframe
def feature_engineering_expand_basic(
- self, dataframe: DataFrame, metadata: dict, **kwargs
+ self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
highs = dataframe.get("high")
lows = dataframe.get("low")
raise ValueError(f"Invalid pattern '{pattern}': {e}")
def set_freqai_targets(
- self, dataframe: DataFrame, metadata: dict, **kwargs
+ self, dataframe: DataFrame, metadata: dict[str, Any], **kwargs
) -> DataFrame:
pair = str(metadata.get("pair"))
label_period_candles = self.get_label_period_candles(pair)
logger.info(f"{n_extrema=}")
return dataframe
- def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
+ def populate_indicators(
+ self, dataframe: DataFrame, metadata: dict[str, Any]
+ ) -> DataFrame:
dataframe = self.freqai.start(dataframe, metadata, self)
dataframe["DI_catch"] = np.where(
return dataframe
- def populate_entry_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
+ def populate_entry_trend(
+ self, df: DataFrame, metadata: dict[str, Any]
+ ) -> DataFrame:
enter_long_conditions = [
df.get("do_predict") == 1,
df.get("DI_catch") == 1,
return df
- def populate_exit_trend(self, df: DataFrame, metadata: dict) -> DataFrame:
+ def populate_exit_trend(self, df: DataFrame, metadata: dict[str, Any]) -> DataFrame:
return df
def get_trade_entry_date(self, trade: Trade) -> datetime.datetime:
def get_ma_fn(mamode: str) -> Callable[[pd.Series, int], np.ndarray]:
- mamodes: dict = {
+ mamodes: dict[str, Callable[[pd.Series, int], np.ndarray]] = {
"sma": ta.SMA,
"ema": ta.EMA,
"wma": ta.WMA,