From a2ccc1526e30f2e1e68032464173c742c152ca90 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Jun 2021 07:07:34 +0200 Subject: [PATCH] Load parameters from file --- freqtrade/resolvers/strategy_resolver.py | 15 +++++++++++++++ freqtrade/strategy/hyper.py | 3 ++- freqtrade/strategy/interface.py | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index ccd7cea69..1239b78b3 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -53,6 +53,21 @@ class StrategyResolver(IResolver): ) strategy.timeframe = strategy.ticker_interval + if strategy._ft_params_from_file: + # Set parameters from Hyperopt results file + params = strategy._ft_params_from_file + strategy.minimal_roi = params.get('roi', strategy.minimal_roi) + + strategy.stoploss = params.get('stoploss', {}).get('stoploss', strategy.stoploss) + trailing = params.get('trailing', {}) + strategy.trailing_stop = trailing.get('trailing_stop', strategy.trailing_stop) + strategy.trailing_stop_positive = trailing.get('trailing_stop_positive', + strategy.trailing_stop_positive) + strategy.trailing_stop_positive_offset = trailing.get( + 'trailing_stop_positive_offset', strategy.trailing_stop_positive_offset) + strategy.trailing_only_offset_is_reached = trailing.get( + 'trailing_only_offset_is_reached', strategy.trailing_only_offset_is_reached) + # Set attributes # Check if we need to override configuration # (Attribute name, default, subkey) diff --git a/freqtrade/strategy/hyper.py b/freqtrade/strategy/hyper.py index 0ced4dfb1..6f96224ee 100644 --- a/freqtrade/strategy/hyper.py +++ b/freqtrade/strategy/hyper.py @@ -309,6 +309,7 @@ class HyperStrategyMixin(object): """ params = self.load_params_from_file() params = params.get('params', {}) + self._ft_params_from_file = params buy_params = deep_merge_dicts(params.get('buy', {}), getattr(self, 'buy_params', None)) sell_params = deep_merge_dicts(params.get('sell', {}), getattr(self, 'sell_params', None)) @@ -324,7 +325,7 @@ class HyperStrategyMixin(object): if filename.is_file(): logger.info(f"Loading parameters from file {filename}") params = json_load(filename.open('r')) - if params.get('strategy_name') != self.get_strategy_name(): + if params.get('strategy_name') != self.__class__.__name__: raise OperationalException('Invalid parameter file provided') return params logger.info("Found no parameter file.") diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 7aa7e57d9..26bcb0369 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -62,6 +62,7 @@ class IStrategy(ABC, HyperStrategyMixin): _populate_fun_len: int = 0 _buy_fun_len: int = 0 _sell_fun_len: int = 0 + _ft_params_from_file: Dict = {} # associated minimal roi minimal_roi: Dict