parent
410324ac19
commit
1dc3c58775
@ -9,7 +9,7 @@ from collections import deque
|
|||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from typing import Any, Dict, List, Optional, Tuple
|
from typing import Any, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
from pandas import DataFrame, to_timedelta
|
from pandas import DataFrame, Timedelta, Timestamp, to_timedelta
|
||||||
|
|
||||||
from freqtrade.configuration import TimeRange
|
from freqtrade.configuration import TimeRange
|
||||||
from freqtrade.constants import (FULL_DATAFRAME_THRESHOLD, Config, ListPairsWithTimeframes,
|
from freqtrade.constants import (FULL_DATAFRAME_THRESHOLD, Config, ListPairsWithTimeframes,
|
||||||
@ -206,9 +206,11 @@ class DataProvider:
|
|||||||
existing_df, _ = self.__producer_pairs_df[producer_name][pair_key]
|
existing_df, _ = self.__producer_pairs_df[producer_name][pair_key]
|
||||||
|
|
||||||
# CHECK FOR MISSING CANDLES
|
# CHECK FOR MISSING CANDLES
|
||||||
timeframe_delta = to_timedelta(timeframe) # Convert the timeframe to a timedelta for pandas
|
# Convert the timeframe to a timedelta for pandas
|
||||||
local_last = existing_df.iloc[-1]['date'] # We want the last date from our copy
|
timeframe_delta: Timedelta = to_timedelta(timeframe)
|
||||||
incoming_first = dataframe.iloc[0]['date'] # We want the first date from the incoming
|
local_last: Timestamp = existing_df.iloc[-1]['date'] # We want the last date from our copy
|
||||||
|
# We want the first date from the incoming
|
||||||
|
incoming_first: Timestamp = dataframe.iloc[0]['date']
|
||||||
|
|
||||||
# Remove existing candles that are newer than the incoming first candle
|
# Remove existing candles that are newer than the incoming first candle
|
||||||
existing_df1 = existing_df[existing_df['date'] < incoming_first]
|
existing_df1 = existing_df[existing_df['date'] < incoming_first]
|
||||||
@ -221,7 +223,7 @@ class DataProvider:
|
|||||||
# we missed some candles between our data and the incoming
|
# we missed some candles between our data and the incoming
|
||||||
# so return False and candle_difference.
|
# so return False and candle_difference.
|
||||||
if candle_difference > 1:
|
if candle_difference > 1:
|
||||||
return (False, candle_difference)
|
return (False, int(candle_difference))
|
||||||
if existing_df1.empty:
|
if existing_df1.empty:
|
||||||
appended_df = dataframe
|
appended_df = dataframe
|
||||||
else:
|
else:
|
||||||
|
@ -437,6 +437,7 @@ def test_dp__add_external_df(default_conf_usdt):
|
|||||||
# Add the same dataframe again - dataframe size shall not change.
|
# Add the same dataframe again - dataframe size shall not change.
|
||||||
res = dp._add_external_df('ETH/USDT', df, last_analyzed, timeframe, CandleType.SPOT)
|
res = dp._add_external_df('ETH/USDT', df, last_analyzed, timeframe, CandleType.SPOT)
|
||||||
assert res[0] is True
|
assert res[0] is True
|
||||||
|
assert isinstance(res[1], int)
|
||||||
assert res[1] == 0
|
assert res[1] == 0
|
||||||
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
||||||
assert len(df) == 24
|
assert len(df) == 24
|
||||||
@ -446,6 +447,7 @@ def test_dp__add_external_df(default_conf_usdt):
|
|||||||
|
|
||||||
res = dp._add_external_df('ETH/USDT', df2, last_analyzed, timeframe, CandleType.SPOT)
|
res = dp._add_external_df('ETH/USDT', df2, last_analyzed, timeframe, CandleType.SPOT)
|
||||||
assert res[0] is True
|
assert res[0] is True
|
||||||
|
assert isinstance(res[1], int)
|
||||||
assert res[1] == 0
|
assert res[1] == 0
|
||||||
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
||||||
assert len(df) == 48
|
assert len(df) == 48
|
||||||
@ -455,6 +457,7 @@ def test_dp__add_external_df(default_conf_usdt):
|
|||||||
|
|
||||||
res = dp._add_external_df('ETH/USDT', df3, last_analyzed, timeframe, CandleType.SPOT)
|
res = dp._add_external_df('ETH/USDT', df3, last_analyzed, timeframe, CandleType.SPOT)
|
||||||
assert res[0] is True
|
assert res[0] is True
|
||||||
|
assert isinstance(res[1], int)
|
||||||
assert res[1] == 0
|
assert res[1] == 0
|
||||||
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
||||||
# New length = 48 + 12 (since we have a 12 hour offset).
|
# New length = 48 + 12 (since we have a 12 hour offset).
|
||||||
@ -478,6 +481,7 @@ def test_dp__add_external_df(default_conf_usdt):
|
|||||||
res = dp._add_external_df('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT)
|
res = dp._add_external_df('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT)
|
||||||
assert res[0] is False
|
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
|
# 36 hours - from 2022-01-03 12:00:00+00:00 to 2022-01-05 00:00:00+00:00
|
||||||
|
assert isinstance(res[1], int)
|
||||||
assert res[1] == 36
|
assert res[1] == 36
|
||||||
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
df, _ = dp.get_producer_df('ETH/USDT', timeframe, CandleType.SPOT)
|
||||||
# New length = 61 + 1
|
# New length = 61 + 1
|
||||||
@ -488,4 +492,5 @@ def test_dp__add_external_df(default_conf_usdt):
|
|||||||
res = dp._add_external_df('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT)
|
res = dp._add_external_df('ETH/USDT', df4, last_analyzed, timeframe, CandleType.SPOT)
|
||||||
assert res[0] is False
|
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
|
# 36 hours - from 2022-01-03 12:00:00+00:00 to 2022-01-05 00:00:00+00:00
|
||||||
|
assert isinstance(res[1], int)
|
||||||
assert res[1] == 0
|
assert res[1] == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user