Test add_external_candle
This commit is contained in:
		| @@ -2,13 +2,13 @@ from datetime import datetime, timezone | ||||
| from unittest.mock import MagicMock | ||||
|  | ||||
| import pytest | ||||
| from pandas import DataFrame | ||||
| from pandas import DataFrame, Timestamp | ||||
|  | ||||
| from freqtrade.data.dataprovider import DataProvider | ||||
| from freqtrade.enums import CandleType, RunMode | ||||
| from freqtrade.exceptions import ExchangeError, OperationalException | ||||
| from freqtrade.plugins.pairlistmanager import PairListManager | ||||
| from tests.conftest import get_patched_exchange | ||||
| from tests.conftest import generate_test_data, get_patched_exchange | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('candle_type', [ | ||||
| @@ -412,3 +412,67 @@ def test_dp_send_msg(default_conf): | ||||
|     dp = DataProvider(default_conf, None) | ||||
|     dp.send_msg(msg, always_send=True) | ||||
|     assert msg not in dp._msg_queue | ||||
|  | ||||
|  | ||||
| def test_dp__add_external_candle(default_conf_usdt): | ||||
|     timeframe = '1h' | ||||
|     default_conf_usdt["timeframe"] = timeframe | ||||
|     dp = DataProvider(default_conf_usdt, None) | ||||
|     df = generate_test_data(timeframe, 24, '2022-01-01 00:00:00+00:00') | ||||
|     last_analyzed = datetime.now(timezone.utc) | ||||
|  | ||||
|     res = dp._add_external_candle('ETH/USDT', df, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is False | ||||
|     # Why 1000 ?? | ||||
|     assert res[1] == 1000 | ||||
|  | ||||
|     dp._add_external_df('ETH/USDT', df, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     # BTC is not stored yet | ||||
|     res = dp._add_external_candle('BTC/USDT', df, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is False | ||||
|     df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT) | ||||
|     assert len(df) == 24 | ||||
|  | ||||
|     # Add the same dataframe again - dataframe size shall not change. | ||||
|     res = dp._add_external_candle('ETH/USDT', df, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is True | ||||
|     assert res[1] == 0 | ||||
|     df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT) | ||||
|     assert len(df) == 24 | ||||
|  | ||||
|     # Add a new day. | ||||
|     df2 = generate_test_data(timeframe, 24, '2022-01-02 00:00:00+00:00') | ||||
|  | ||||
|     res = dp._add_external_candle('ETH/USDT', df2, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is True | ||||
|     assert res[1] == 0 | ||||
|     df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT) | ||||
|     assert len(df) == 48 | ||||
|  | ||||
|     # Add a dataframe with a 12 hour offset - so 12 candles are overlapping, and 12 valid. | ||||
|     df3 = generate_test_data(timeframe, 24, '2022-01-02 12:00:00+00:00') | ||||
|  | ||||
|     res = dp._add_external_candle('ETH/USDT', df3, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is True | ||||
|     assert res[1] == 0 | ||||
|     df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT) | ||||
|     # New length = 48 + 12 (since we have a 12 hour offset). | ||||
|     assert len(df) == 60 | ||||
|     assert df.iloc[-1]['date'] == df3.iloc[-1]['date'] | ||||
|     assert df.iloc[-1]['date'] == Timestamp('2022-01-03 11:00:00+00:00') | ||||
|  | ||||
|     # Generate 1 new candle | ||||
|     df4 = generate_test_data(timeframe, 1, '2022-01-03 12:00:00+00:00') | ||||
|     res = dp._add_external_candle('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     # assert res[0] is True | ||||
|     # assert res[1] == 0 | ||||
|     df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT) | ||||
|     # New length = 61 + 1 | ||||
|     assert len(df) == 61 | ||||
|  | ||||
|     # Gap in the data ... | ||||
|     df4 = generate_test_data(timeframe, 1, '2022-01-05 00:00:00+00:00') | ||||
|     res = dp._add_external_candle('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT) | ||||
|     assert res[0] is False | ||||
|     # 36 hours - from 2022-01-03 12:00:00+00:00 to 2022-01-05 00:00:00+00:00 | ||||
|     assert res[1] == 36 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user