Trim dataframe, not tickerlist
This commit is contained in:
parent
866908d2ca
commit
db520a09ee
@ -37,7 +37,7 @@ class IDataHandler(ABC):
|
|||||||
:param pair: Pair to load data for
|
:param pair: Pair to load data for
|
||||||
:param timeframe: Ticker timeframe (e.g. "5m")
|
:param timeframe: Ticker timeframe (e.g. "5m")
|
||||||
:param timerange: Limit data to be loaded to this timerange
|
:param timerange: Limit data to be loaded to this timerange
|
||||||
:param fill_up_missing: Fill missing values with "No action"-candles
|
:param fill_missing: Fill missing values with "No action"-candles
|
||||||
:param drop_incomplete: Drop last candle assuming it may be incomplete.
|
:param drop_incomplete: Drop last candle assuming it may be incomplete.
|
||||||
:param startup_candles: Additional candles to load at the start of the period
|
:param startup_candles: Additional candles to load at the start of the period
|
||||||
:return: DataFrame with ohlcv data, or empty DataFrame
|
:return: DataFrame with ohlcv data, or empty DataFrame
|
||||||
@ -75,30 +75,3 @@ class IDataHandler(ABC):
|
|||||||
if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000:
|
if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000:
|
||||||
logger.warning('Missing data at end for pair %s, data ends at %s',
|
logger.warning('Missing data at end for pair %s, data ends at %s',
|
||||||
pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
|
pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]:
|
|
||||||
"""
|
|
||||||
TODO: investigate if this is needed ... we can probably cover this in a dataframe
|
|
||||||
Trim tickerlist based on given timerange
|
|
||||||
"""
|
|
||||||
if not tickerlist:
|
|
||||||
return tickerlist
|
|
||||||
|
|
||||||
start_index = 0
|
|
||||||
stop_index = len(tickerlist)
|
|
||||||
|
|
||||||
if timerange.starttype == 'date':
|
|
||||||
while (start_index < len(tickerlist) and
|
|
||||||
tickerlist[start_index][0] < timerange.startts * 1000):
|
|
||||||
start_index += 1
|
|
||||||
|
|
||||||
if timerange.stoptype == 'date':
|
|
||||||
while (stop_index > 0 and
|
|
||||||
tickerlist[stop_index-1][0] > timerange.stopts * 1000):
|
|
||||||
stop_index -= 1
|
|
||||||
|
|
||||||
if start_index > stop_index:
|
|
||||||
raise ValueError(f'The timerange [{timerange.startts},{timerange.stopts}] is incorrect')
|
|
||||||
|
|
||||||
return tickerlist[start_index:stop_index]
|
|
||||||
|
@ -8,6 +8,7 @@ from pandas import DataFrame, read_json, to_datetime
|
|||||||
from freqtrade import misc
|
from freqtrade import misc
|
||||||
from freqtrade.configuration import TimeRange
|
from freqtrade.configuration import TimeRange
|
||||||
from freqtrade.data.converter import clean_ohlcv_dataframe
|
from freqtrade.data.converter import clean_ohlcv_dataframe
|
||||||
|
from freqtrade.data.history import trim_dataframe
|
||||||
|
|
||||||
from .idatahandler import IDataHandler
|
from .idatahandler import IDataHandler
|
||||||
|
|
||||||
@ -54,9 +55,15 @@ class JsonDataHandler(IDataHandler):
|
|||||||
drop_incomplete: bool = True,
|
drop_incomplete: bool = True,
|
||||||
) -> DataFrame:
|
) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Load data for one pair from disk.
|
Internal method used to load data for one pair from disk.
|
||||||
Implements the loading and conversation to a Pandas dataframe.
|
Implements the loading and conversation to a Pandas dataframe.
|
||||||
:return: Dataframe
|
:param pair: Pair to load data for
|
||||||
|
:param timeframe: Ticker timeframe (e.g. "5m")
|
||||||
|
:param timerange: Limit data to be loaded to this timerange
|
||||||
|
:param fill_missing: Fill missing values with "No action"-candles
|
||||||
|
:param drop_incomplete: Drop last candle assuming it may be incomplete.
|
||||||
|
:param startup_candles: Additional candles to load at the start of the period
|
||||||
|
:return: DataFrame with ohlcv data, or empty DataFrame
|
||||||
"""
|
"""
|
||||||
filename = self._pair_data_filename(self._datadir, pair, timeframe)
|
filename = self._pair_data_filename(self._datadir, pair, timeframe)
|
||||||
pairdata = read_json(filename, orient='values')
|
pairdata = read_json(filename, orient='values')
|
||||||
@ -67,7 +74,7 @@ class JsonDataHandler(IDataHandler):
|
|||||||
infer_datetime_format=True)
|
infer_datetime_format=True)
|
||||||
|
|
||||||
if timerange:
|
if timerange:
|
||||||
pairdata = IDataHandler.trim_tickerlist(pairdata, timerange)
|
pairdata = trim_dataframe(pairdata, timerange)
|
||||||
|
|
||||||
return clean_ohlcv_dataframe(pairdata, timeframe,
|
return clean_ohlcv_dataframe(pairdata, timeframe,
|
||||||
pair=pair,
|
pair=pair,
|
||||||
|
@ -285,6 +285,7 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to:
|
|||||||
for timeframe in timeframes:
|
for timeframe in timeframes:
|
||||||
for pair in config['pairs']:
|
for pair in config['pairs']:
|
||||||
data = src.ohlcv_load(pair=pair, timeframe=timeframe,
|
data = src.ohlcv_load(pair=pair, timeframe=timeframe,
|
||||||
|
timerange=None,
|
||||||
fill_missing=False,
|
fill_missing=False,
|
||||||
drop_incomplete=False,
|
drop_incomplete=False,
|
||||||
startup_candles=0)
|
startup_candles=0)
|
||||||
|
Loading…
Reference in New Issue
Block a user