From 5677c4882edd9faa39efa5df5d832bed5a6b76c2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 13 May 2019 23:56:59 +0300 Subject: [PATCH] minor: add ticker data validation; log backtesting interval --- freqtrade/optimize/hyperopt.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 252b76252..5b8797d99 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -24,7 +24,8 @@ from freqtrade import DependencyException from freqtrade.arguments import Arguments from freqtrade.configuration import Configuration from freqtrade.data.history import load_data -from freqtrade.optimize import get_timeframe +from freqtrade.exchange import timeframe_to_minutes +from freqtrade.optimize import get_timeframe, validate_backtest_data from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.resolvers import HyperOptResolver @@ -282,9 +283,25 @@ class Hyperopt(Backtesting): timerange=timerange ) + if not data: + logger.critical("No data found. Terminating.") + return + + min_date, max_date = get_timeframe(data) + # Validate dataframe for missing values (mainly at start and end, as fillup is called) + validate_backtest_data(data, min_date, max_date, + timeframe_to_minutes(self.ticker_interval)) + logger.info( + 'Backtesting data from %s up to %s (%s days)..', + min_date.isoformat(), + max_date.isoformat(), + (max_date - min_date).days + ) + if self.has_space('buy') or self.has_space('sell'): self.strategy.advise_indicators = \ self.custom_hyperopt.populate_indicators # type: ignore + dump(self.strategy.tickerdata_to_dataframe(data), TICKERDATA_PICKLE) # We don't need exchange instance anymore while running hyperopt