From 1055862bc0d691196c564e405a142ef258b03486 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 May 2021 21:15:01 +0200 Subject: [PATCH] Extract data-load + dump from hyperopt (Reduces memory-usage as the dataframes go out of scope) --- freqtrade/optimize/hyperopt.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 422879451..534da34fc 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -345,12 +345,7 @@ class Hyperopt: def _set_random_state(self, random_state: Optional[int]) -> int: return random_state or random.randint(1, 2**16 - 1) - def start(self) -> None: - self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) - logger.info(f"Using optimizer random state: {self.random_state}") - self.hyperopt_table_header = -1 - # Initialize spaces ... - self.init_spaces() + def prepare_hyperopt_data(self) -> None: data, timerange = self.backtesting.load_bt_data() logger.info("Dataload complete. Calculating indicators") preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) @@ -367,6 +362,15 @@ class Hyperopt: dump(preprocessed, self.data_pickle_file) + def start(self) -> None: + self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) + logger.info(f"Using optimizer random state: {self.random_state}") + self.hyperopt_table_header = -1 + # Initialize spaces ... + self.init_spaces() + + self.prepare_hyperopt_data() + # We don't need exchange instance anymore while running hyperopt self.backtesting.exchange.close() self.backtesting.exchange._api = None # type: ignore