diff --git a/config_examples/config_freqai.example.json b/config_examples/config_freqai.example.json index e9fc50a4a..aeb1cb13d 100644 --- a/config_examples/config_freqai.example.json +++ b/config_examples/config_freqai.example.json @@ -52,6 +52,7 @@ } ], "freqai": { + "enabled": true, "startup_candles": 10000, "purge_old_models": true, "train_period_days": 15, diff --git a/freqtrade/constants.py b/freqtrade/constants.py index b5d6b4b8e..ddbc84fa9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -486,6 +486,7 @@ CONF_SCHEMA = { "freqai": { "type": "object", "properties": { + "enabled": {"type": "boolean", "default": False}, "keras": {"type": "boolean", "default": False}, "conv_width": {"type": "integer", "default": 2}, "train_period_days": {"type": "integer", "default": 0}, @@ -525,12 +526,15 @@ CONF_SCHEMA = { }, }, }, - "required": ["train_period_days", - "backtest_period_days", - "identifier", - "feature_parameters", - "data_split_parameters", - "model_training_parameters"] + "required": [ + "enabled", + "train_period_days", + "backtest_period_days", + "identifier", + "feature_parameters", + "data_split_parameters", + "model_training_parameters" + ] }, }, } diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c00f30686..7691b96f1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -89,7 +89,7 @@ class Backtesting: self.dataprovider = DataProvider(self.config, self.exchange) if self.config.get('strategy_list'): - if self.config.get('freqai'): + if self.config.get('freqai', {}).get('enabled', False): raise OperationalException( "You can't use strategy_list and freqai at the same time.") for strat in list(self.config['strategy_list']): @@ -210,7 +210,7 @@ class Backtesting: """ self.progress.init_step(BacktestState.DATALOAD, 1) - if self.config.get('freqai') is not None: + if self.config.get('freqai', {}).get('enabled', False): startup_candles = int(self.config.get('freqai', {}).get('startup_candles', 0)) if not startup_candles: raise OperationalException('FreqAI backtesting module requires user set ' diff --git a/freqtrade/plugins/pairlist/pairlist_helpers.py b/freqtrade/plugins/pairlist/pairlist_helpers.py index a07a0f783..f1eca6df0 100644 --- a/freqtrade/plugins/pairlist/pairlist_helpers.py +++ b/freqtrade/plugins/pairlist/pairlist_helpers.py @@ -44,7 +44,7 @@ def expand_pairlist(wildcardpl: List[str], available_pairs: List[str], def dynamic_expand_pairlist(config: dict, markets: list) -> List[str]: expanded_pairs = expand_pairlist(config['pairs'], markets) - if config.get('freqai', {}): + if config.get('freqai', {}).get('enabled', False): corr_pairlist = config['freqai']['feature_parameters']['include_corr_pairlist'] expanded_pairs += [pair for pair in corr_pairlist if pair not in config['pairs']] diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index cda8a1cbc..d10699e3b 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -146,7 +146,7 @@ class IStrategy(ABC, HyperStrategyMixin): self._ft_informative.append((informative_data, cls_method)) def load_freqAI_model(self) -> None: - if self.config.get('freqai', None): + if self.config.get('freqai', {}).get('enabled', False): # Import here to avoid importing this if freqAI is disabled from freqtrade.resolvers.freqaimodel_resolver import FreqaiModelResolver diff --git a/tests/freqai/conftest.py b/tests/freqai/conftest.py index ee02cc097..63f3ef2c7 100644 --- a/tests/freqai/conftest.py +++ b/tests/freqai/conftest.py @@ -17,6 +17,7 @@ def freqai_conf(default_conf, tmpdir): freqaiconf = deepcopy(default_conf) freqaiconf.update( { + "enabled": True, "datadir": Path(default_conf["datadir"]), "strategy": "freqai_test_strat", "user_data_dir": Path(tmpdir),