From 9db915853ab4b9d454f618eda68ccb3a4ad02e2d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 26 Sep 2019 11:59:21 +0300 Subject: [PATCH 1/2] Allow use of config in custom hyperopt methods --- freqtrade/optimize/hyperopt_interface.py | 6 ++++++ freqtrade/resolvers/hyperopt_resolver.py | 5 +---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 0e2e75d2e..9973739e8 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -36,6 +36,12 @@ class IHyperOpt(ABC): """ ticker_interval: str + def __init__(self, config: dict) -> None: + self.config = config + + # Assign ticker_interval to be used in hyperopt + IHyperOpt.ticker_interval = str(config['ticker_interval']) + @staticmethod @abstractmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 3ffdc5e1f..e96394d69 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -34,9 +34,6 @@ class HyperOptResolver(IResolver): self.hyperopt = self._load_hyperopt(hyperopt_name, config, extra_dir=config.get('hyperopt_path')) - # Assign ticker_interval to be used in hyperopt - IHyperOpt.ticker_interval = str(config['ticker_interval']) - if not hasattr(self.hyperopt, 'populate_buy_trend'): logger.warning("Hyperopt class does not provide populate_buy_trend() method. " "Using populate_buy_trend from the strategy.") @@ -65,7 +62,7 @@ class HyperOptResolver(IResolver): abs_paths.insert(0, Path(extra_dir).resolve()) hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt, - object_name=hyperopt_name) + object_name=hyperopt_name, kwargs={'config': config}) if hyperopt: return hyperopt raise OperationalException( From 42b5a0977e2b7b03917bbcbb12c1961c7c4c77bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Sep 2019 10:14:38 +0200 Subject: [PATCH 2/2] fix failing test --- tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 0888c79d4..1a22d116d 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -153,7 +153,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: delattr(hyperopts, 'populate_sell_trend') mocker.patch( 'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt', - MagicMock(return_value=hyperopts) + MagicMock(return_value=hyperopts(default_conf)) ) x = HyperOptResolver(default_conf, ).hyperopt assert not hasattr(x, 'populate_buy_trend')