Tests need to pass pair to parse_ticker_dataframe
This commit is contained in:
		| @@ -17,6 +17,7 @@ def parse_ticker_dataframe(ticker: list, ticker_interval: str, pair: str, *, | ||||
|     Converts a ticker-list (format ccxt.fetch_ohlcv) to a Dataframe | ||||
|     :param ticker: ticker list, as returned by exchange.async_get_candle_history | ||||
|     :param ticker_interval: ticker_interval (e.g. 5m). Used to fill up eventual missing data | ||||
|     :param pair: Pair this data is for (used to warn if fillup was necessary) | ||||
|     :param fill_missing: fill up missing candles with 0 candles | ||||
|                          (see ohlcv_fill_up_missing_data for details) | ||||
|     :param drop_incomplete: Drop the last candle of the dataframe, assuming it's incomplete | ||||
|   | ||||
| @@ -650,7 +650,7 @@ def ticker_history_list(): | ||||
|  | ||||
| @pytest.fixture | ||||
| def ticker_history(ticker_history_list): | ||||
|     return parse_ticker_dataframe(ticker_history_list, "5m", fill_missing=True) | ||||
|     return parse_ticker_dataframe(ticker_history_list, "5m", pair="UNITTEST/BTC", fill_missing=True) | ||||
|  | ||||
|  | ||||
| @pytest.fixture | ||||
| @@ -855,7 +855,8 @@ def tickers(): | ||||
| @pytest.fixture | ||||
| def result(): | ||||
|     with open('freqtrade/tests/testdata/UNITTEST_BTC-1m.json') as data_file: | ||||
|         return parse_ticker_dataframe(json.load(data_file), '1m', fill_missing=True) | ||||
|         return parse_ticker_dataframe(json.load(data_file), '1m', | ||||
|                                       pair="UNITTEST/BTC", fill_missing=True) | ||||
|  | ||||
| # FIX: | ||||
| # Create an fixture/function | ||||
|   | ||||
| @@ -15,7 +15,8 @@ def test_parse_ticker_dataframe(ticker_history_list, caplog): | ||||
|  | ||||
|     caplog.set_level(logging.DEBUG) | ||||
|     # Test file with BV data | ||||
|     dataframe = parse_ticker_dataframe(ticker_history_list, '5m', fill_missing=True) | ||||
|     dataframe = parse_ticker_dataframe(ticker_history_list, '5m', | ||||
|                                        pair="UNITTEST/BTC", fill_missing=True) | ||||
|     assert dataframe.columns.tolist() == columns | ||||
|     assert log_has('Parsing tickerlist to dataframe', caplog.record_tuples) | ||||
|  | ||||
| @@ -27,12 +28,13 @@ def test_ohlcv_fill_up_missing_data(caplog): | ||||
|                              pair='UNITTEST/BTC', | ||||
|                              fill_up_missing=False) | ||||
|     caplog.set_level(logging.DEBUG) | ||||
|     data2 = ohlcv_fill_up_missing_data(data, '1m') | ||||
|     data2 = ohlcv_fill_up_missing_data(data, '1m', 'UNITTEST/BTC') | ||||
|     assert len(data2) > len(data) | ||||
|     # Column names should not change | ||||
|     assert (data.columns == data2.columns).all() | ||||
|  | ||||
|     assert log_has(f"Missing data fillup: before: {len(data)} - after: {len(data2)}", | ||||
|     assert log_has(f"Missing data fillup for UNITTEST/BTC: before: " | ||||
|                    f"{len(data)} - after: {len(data2)}", | ||||
|                    caplog.record_tuples) | ||||
|  | ||||
|     # Test fillup actually fixes invalid backtest data | ||||
| @@ -78,10 +80,10 @@ def test_ohlcv_fill_up_missing_data2(caplog): | ||||
|     ] | ||||
|  | ||||
|     # Generate test-data without filling missing | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, fill_missing=False) | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", fill_missing=False) | ||||
|     assert len(data) == 3 | ||||
|     caplog.set_level(logging.DEBUG) | ||||
|     data2 = ohlcv_fill_up_missing_data(data, ticker_interval) | ||||
|     data2 = ohlcv_fill_up_missing_data(data, ticker_interval, "UNITTEST/BTC") | ||||
|     assert len(data2) == 4 | ||||
|     # 3rd candle has been filled | ||||
|     row = data2.loc[2, :] | ||||
| @@ -94,7 +96,7 @@ def test_ohlcv_fill_up_missing_data2(caplog): | ||||
|     # Column names should not change | ||||
|     assert (data.columns == data2.columns).all() | ||||
|  | ||||
|     assert log_has(f"Missing data fillup: before: {len(data)} - after: {len(data2)}", | ||||
|     assert log_has(f"Missing data fillup for UNITTEST/BTC: before: {len(data)} - after: {len(data2)}", | ||||
|                    caplog.record_tuples) | ||||
|  | ||||
|  | ||||
| @@ -134,12 +136,14 @@ def test_ohlcv_drop_incomplete(caplog): | ||||
|      ] | ||||
|     ] | ||||
|     caplog.set_level(logging.DEBUG) | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, fill_missing=False, drop_incomplete=False) | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", | ||||
|                                   fill_missing=False, drop_incomplete=False) | ||||
|     assert len(data) == 4 | ||||
|     assert not log_has("Dropping last candle", caplog.record_tuples) | ||||
|  | ||||
|     # Drop last candle | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, fill_missing=False, drop_incomplete=True) | ||||
|     data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", | ||||
|                                   fill_missing=False, drop_incomplete=True) | ||||
|     assert len(data) == 3 | ||||
|  | ||||
|     assert log_has("Dropping last candle", caplog.record_tuples) | ||||
|   | ||||
| @@ -263,7 +263,7 @@ def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=Fals | ||||
|     hz = 0.1 | ||||
|     base = 0.001 | ||||
|  | ||||
|     ETHBTC = [ | ||||
|     NEOBTC = [ | ||||
|         [ | ||||
|             ticker_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, | ||||
|             math.sin(x * hz) / 1000 + base, | ||||
| @@ -285,8 +285,8 @@ def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=Fals | ||||
|             123.45 | ||||
|         ] for x in range(0, 500)] | ||||
|  | ||||
|     pairdata = {'NEO/BTC': parse_ticker_dataframe(ETHBTC, '1h', fill_missing=True), | ||||
|                 'LTC/BTC': parse_ticker_dataframe(LTCBTC, '1h', fill_missing=True)} | ||||
|     pairdata = {'NEO/BTC': parse_ticker_dataframe(NEOBTC, '1h', pair="NEO/BTC", fill_missing=True), | ||||
|                 'LTC/BTC': parse_ticker_dataframe(LTCBTC, '1h', pair="LTC/BTC", fill_missing=True)} | ||||
|     return pairdata | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -78,7 +78,8 @@ def load_data_test(what): | ||||
|                 pair[x][5]  # Keep old volume | ||||
|             ] for x in range(0, datalen) | ||||
|         ] | ||||
|     return {'UNITTEST/BTC': parse_ticker_dataframe(data, '1m', fill_missing=True)} | ||||
|     return {'UNITTEST/BTC': parse_ticker_dataframe(data, '1m', pair="UNITTEST/BTC", | ||||
|                                                    fill_missing=True)} | ||||
|  | ||||
|  | ||||
| def simple_backtest(config, contour, num_results, mocker) -> None: | ||||
| @@ -107,7 +108,8 @@ def simple_backtest(config, contour, num_results, mocker) -> None: | ||||
| def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, | ||||
|                      timerange=None, exchange=None, live=False): | ||||
|     tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) | ||||
|     pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', fill_missing=True)} | ||||
|     pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", | ||||
|                                                        fill_missing=True)} | ||||
|     return pairdata | ||||
|  | ||||
|  | ||||
| @@ -355,7 +357,8 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker) -> None: | ||||
|     patch_exchange(mocker) | ||||
|     timerange = TimeRange(None, 'line', 0, -100) | ||||
|     tick = history.load_tickerdata_file(None, 'UNITTEST/BTC', '1m', timerange=timerange) | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', fill_missing=True)} | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", | ||||
|                                                          fill_missing=True)} | ||||
|  | ||||
|     backtesting = Backtesting(default_conf) | ||||
|     data = backtesting.strategy.tickerdata_to_dataframe(tickerlist) | ||||
|   | ||||
| @@ -427,7 +427,8 @@ def test_has_space(hyperopt): | ||||
|  | ||||
| def test_populate_indicators(hyperopt) -> None: | ||||
|     tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m') | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', fill_missing=True)} | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", | ||||
|                                                          fill_missing=True)} | ||||
|     dataframes = hyperopt.strategy.tickerdata_to_dataframe(tickerlist) | ||||
|     dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], | ||||
|                                                              {'pair': 'UNITTEST/BTC'}) | ||||
| @@ -440,7 +441,8 @@ def test_populate_indicators(hyperopt) -> None: | ||||
|  | ||||
| def test_buy_strategy_generator(hyperopt) -> None: | ||||
|     tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m') | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', fill_missing=True)} | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", | ||||
|                                                          fill_missing=True)} | ||||
|     dataframes = hyperopt.strategy.tickerdata_to_dataframe(tickerlist) | ||||
|     dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], | ||||
|                                                              {'pair': 'UNITTEST/BTC'}) | ||||
|   | ||||
| @@ -10,7 +10,8 @@ from freqtrade.strategy.default_strategy import DefaultStrategy | ||||
| @pytest.fixture | ||||
| def result(): | ||||
|     with open('freqtrade/tests/testdata/ETH_BTC-1m.json') as data_file: | ||||
|         return parse_ticker_dataframe(json.load(data_file), '1m', fill_missing=True) | ||||
|         return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", | ||||
|                                       fill_missing=True) | ||||
|  | ||||
|  | ||||
| def test_default_strategy_structure(): | ||||
|   | ||||
| @@ -111,7 +111,8 @@ def test_tickerdata_to_dataframe(default_conf) -> None: | ||||
|  | ||||
|     timerange = TimeRange(None, 'line', 0, -100) | ||||
|     tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m', timerange=timerange) | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', fill_missing=True)} | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", | ||||
|                                                          fill_missing=True)} | ||||
|     data = strategy.tickerdata_to_dataframe(tickerlist) | ||||
|     assert len(data['UNITTEST/BTC']) == 102       # partial candle was removed | ||||
|  | ||||
|   | ||||
| @@ -17,7 +17,8 @@ def test_shorten_date() -> None: | ||||
|  | ||||
|  | ||||
| def test_datesarray_to_datetimearray(ticker_history_list): | ||||
|     dataframes = parse_ticker_dataframe(ticker_history_list, "5m", fill_missing=True) | ||||
|     dataframes = parse_ticker_dataframe(ticker_history_list, "5m", pair="UNITTEST/BTC", | ||||
|                                         fill_missing=True) | ||||
|     dates = datesarray_to_datetimearray(dataframes['date']) | ||||
|  | ||||
|     assert isinstance(dates[0], datetime.datetime) | ||||
| @@ -34,7 +35,8 @@ def test_datesarray_to_datetimearray(ticker_history_list): | ||||
| def test_common_datearray(default_conf) -> None: | ||||
|     strategy = DefaultStrategy(default_conf) | ||||
|     tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m') | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, "1m", fill_missing=True)} | ||||
|     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, "1m", pair="UNITTEST/BTC", | ||||
|                                                          fill_missing=True)} | ||||
|     dataframes = strategy.tickerdata_to_dataframe(tickerlist) | ||||
|  | ||||
|     dates = common_datearray(dataframes) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user