Improve wording of "no history found" error

This commit is contained in:
Matthias 2022-01-22 11:50:46 +01:00
parent bf0b95b3d8
commit 88ccfedd32
4 changed files with 18 additions and 14 deletions

View File

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

View File

@ -1372,10 +1372,10 @@ def test_start_list_data(testdatadir, capsys):
start_list_data(pargs) start_list_data(pargs)
captured = capsys.readouterr() captured = capsys.readouterr()
assert "Found 3 pair / timeframe combinations." in captured.out assert "Found 5 pair / timeframe combinations." in captured.out
assert "\n| Pair | Timeframe | Type |\n" in captured.out assert "\n| Pair | Timeframe | Type |\n" in captured.out
assert "\n| XRP/USDT | 1h | futures |\n" in captured.out assert "\n| XRP/USDT | 1h | futures |\n" in captured.out
assert "\n| XRP/USDT | 1h | mark |\n" in captured.out assert "\n| XRP/USDT | 1h, 8h | mark |\n" in captured.out
@pytest.mark.usefixtures("init_persistence") @pytest.mark.usefixtures("init_persistence")

View File

@ -81,7 +81,7 @@ def test_load_data_7min_timeframe(mocker, caplog, default_conf, testdatadir) ->
assert isinstance(ld, DataFrame) assert isinstance(ld, DataFrame)
assert ld.empty assert ld.empty
assert log_has( assert log_has(
'No history data for pair: "UNITTEST/BTC", timeframe: 7m. ' 'No history for UNITTEST/BTC, spot, 7m found. '
'Use `freqtrade download-data` to download the data', caplog 'Use `freqtrade download-data` to download the data', caplog
) )
@ -138,8 +138,8 @@ def test_load_data_with_new_pair_1min(ohlcv_history_list, mocker, caplog,
load_pair_history(datadir=tmpdir1, timeframe='1m', pair='MEME/BTC', candle_type=candle_type) load_pair_history(datadir=tmpdir1, timeframe='1m', pair='MEME/BTC', candle_type=candle_type)
assert not file.is_file() assert not file.is_file()
assert log_has( assert log_has(
'No history data for pair: "MEME/BTC", timeframe: 1m. ' f"No history for MEME/BTC, {candle_type}, 1m found. "
'Use `freqtrade download-data` to download the data', caplog "Use `freqtrade download-data` to download the data", caplog
) )
# download a new pair if refresh_pairs is set # download a new pair if refresh_pairs is set
@ -744,6 +744,8 @@ def test_datahandler_ohlcv_get_available_data(testdatadir):
('UNITTEST/USDT', '1h', 'mark'), ('UNITTEST/USDT', '1h', 'mark'),
('XRP/USDT', '1h', 'futures'), ('XRP/USDT', '1h', 'futures'),
('XRP/USDT', '1h', 'mark'), ('XRP/USDT', '1h', 'mark'),
('XRP/USDT', '8h', 'mark'),
('XRP/USDT', '8h', 'funding_rate'),
} }
paircombs = JsonGzDataHandler.ohlcv_get_available_data(testdatadir, 'spot') paircombs = JsonGzDataHandler.ohlcv_get_available_data(testdatadir, 'spot')

View File

@ -1171,7 +1171,7 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat
@pytest.mark.filterwarnings("ignore:deprecated") @pytest.mark.filterwarnings("ignore:deprecated")
def test_backtest_start_nomock_futures(default_conf_usdt, mocker, def test_backtest_start_nomock_futures(default_conf_usdt, mocker,
caplog, testdatadir, capsys): caplog, testdatadir, capsys):
# Tests detail-data loading # Tests detail-data loading
default_conf_usdt.update({ default_conf_usdt.update({
"trading_mode": "futures", "trading_mode": "futures",
@ -1270,6 +1270,7 @@ def test_backtest_start_nomock_futures(default_conf_usdt, mocker,
assert 'SELL REASON STATS' in captured.out assert 'SELL REASON STATS' in captured.out
assert 'LEFT OPEN TRADES REPORT' in captured.out assert 'LEFT OPEN TRADES REPORT' in captured.out
@pytest.mark.filterwarnings("ignore:deprecated") @pytest.mark.filterwarnings("ignore:deprecated")
def test_backtest_start_multi_strat_nomock_detail(default_conf, mocker, def test_backtest_start_multi_strat_nomock_detail(default_conf, mocker,
caplog, testdatadir, capsys): caplog, testdatadir, capsys):