|
|
|
|
@ -248,7 +248,7 @@ class IDataHandler(ABC):
|
|
|
|
|
timerange=timerange_startup,
|
|
|
|
|
candle_type=candle_type
|
|
|
|
|
)
|
|
|
|
|
if self._check_empty_df(pairdf, pair, timeframe, warn_no_data):
|
|
|
|
|
if self._check_empty_df(pairdf, pair, timeframe, candle_type, warn_no_data):
|
|
|
|
|
return pairdf
|
|
|
|
|
else:
|
|
|
|
|
enddate = pairdf.iloc[-1]['date']
|
|
|
|
|
@ -256,7 +256,7 @@ class IDataHandler(ABC):
|
|
|
|
|
if timerange_startup:
|
|
|
|
|
self._validate_pairdata(pair, pairdf, timeframe, candle_type, timerange_startup)
|
|
|
|
|
pairdf = trim_dataframe(pairdf, timerange_startup)
|
|
|
|
|
if self._check_empty_df(pairdf, pair, timeframe, warn_no_data):
|
|
|
|
|
if self._check_empty_df(pairdf, pair, timeframe, candle_type, warn_no_data):
|
|
|
|
|
return pairdf
|
|
|
|
|
|
|
|
|
|
# incomplete candles should only be dropped if we didn't trim the end beforehand.
|
|
|
|
|
@ -265,18 +265,19 @@ class IDataHandler(ABC):
|
|
|
|
|
fill_missing=fill_missing,
|
|
|
|
|
drop_incomplete=(drop_incomplete and
|
|
|
|
|
enddate == pairdf.iloc[-1]['date']))
|
|
|
|
|
self._check_empty_df(pairdf, pair, timeframe, warn_no_data)
|
|
|
|
|
self._check_empty_df(pairdf, pair, timeframe, candle_type, warn_no_data)
|
|
|
|
|
return pairdf
|
|
|
|
|
|
|
|
|
|
def _check_empty_df(self, pairdf: DataFrame, pair: str, timeframe: str, warn_no_data: bool):
|
|
|
|
|
def _check_empty_df(self, pairdf: DataFrame, pair: str, timeframe: str,
|
|
|
|
|
candle_type: CandleType, warn_no_data: bool):
|
|
|
|
|
"""
|
|
|
|
|
Warn on empty dataframe
|
|
|
|
|
"""
|
|
|
|
|
if pairdf.empty:
|
|
|
|
|
if warn_no_data:
|
|
|
|
|
logger.warning(
|
|
|
|
|
f'No history data for pair: "{pair}", timeframe: {timeframe}. '
|
|
|
|
|
'Use `freqtrade download-data` to download the data'
|
|
|
|
|
f"No history for {pair}, {candle_type}, {timeframe} found. "
|
|
|
|
|
"Use `freqtrade download-data` to download the data"
|
|
|
|
|
)
|
|
|
|
|
return True
|
|
|
|
|
return False
|
|
|
|
|
|