split load tickerdata function

This commit is contained in:
kryofly 2018-01-05 10:20:48 +01:00
parent c60ef181dc
commit 421ccb23d3
2 changed files with 38 additions and 13 deletions

View File

@ -12,6 +12,27 @@ from freqtrade.analyze import populate_indicators, parse_ticker_dataframe
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def load_tickerdata_file(pair, ticker_interval):
"""
Load a pair from file,
:return dict OR empty if unsuccesful
"""
path = testdata_path()
file = '{abspath}/{pair}-{ticker_interval}.json'.format(
abspath=path,
pair=pair,
ticker_interval=ticker_interval,
)
# The file does not exist we download it
if not os.path.isfile(file):
return None
# Read the file, load the json
with open(file) as tickerdata:
pairdata = json.load(tickerdata)
return pairdata
def load_data(ticker_interval: int = 5, pairs: Optional[List[str]] = None, def load_data(ticker_interval: int = 5, pairs: Optional[List[str]] = None,
refresh_pairs: Optional[bool] = False) -> Dict[str, List]: refresh_pairs: Optional[bool] = False) -> Dict[str, List]:
""" """
@ -20,7 +41,6 @@ def load_data(ticker_interval: int = 5, pairs: Optional[List[str]] = None,
:param pairs: list of pairs :param pairs: list of pairs
:return: dict :return: dict
""" """
path = testdata_path()
result = {} result = {}
_pairs = pairs or hyperopt_optimize_conf()['exchange']['pair_whitelist'] _pairs = pairs or hyperopt_optimize_conf()['exchange']['pair_whitelist']
@ -31,18 +51,13 @@ def load_data(ticker_interval: int = 5, pairs: Optional[List[str]] = None,
download_pairs(_pairs) download_pairs(_pairs)
for pair in _pairs: for pair in _pairs:
file = '{abspath}/{pair}-{ticker_interval}.json'.format( pairdata = load_tickerdata_file(pair, ticker_interval)
abspath=path, if not pairdata:
pair=pair, # download the tickerdata from exchange
ticker_interval=ticker_interval,
)
# The file does not exist we download it
if not os.path.isfile(file):
download_backtesting_testdata(pair=pair, interval=ticker_interval) download_backtesting_testdata(pair=pair, interval=ticker_interval)
# and retry reading the pair
# Read the file, load the json pairdata = load_tickerdata_file(pair, ticker_interval)
with open(file) as tickerdata: result[pair] = pairdata
result[pair] = json.load(tickerdata)
return result return result

View File

@ -5,7 +5,11 @@ import logging
from shutil import copyfile from shutil import copyfile
from freqtrade import exchange, optimize from freqtrade import exchange, optimize
from freqtrade.exchange import Bittrex from freqtrade.exchange import Bittrex
from freqtrade.optimize.__init__ import testdata_path, download_pairs, download_backtesting_testdata from freqtrade.optimize.__init__ import testdata_path, download_pairs,\
download_backtesting_testdata, load_tickerdata_file
# Change this if modifying BTC_UNITEST testdatafile
_btc_unittest_length = 13681
def _backup_file(file: str, copy_file: bool = False) -> None: def _backup_file(file: str, copy_file: bool = False) -> None:
@ -164,3 +168,9 @@ def test_download_backtesting_testdata(default_conf, ticker_history, mocker):
download_backtesting_testdata(pair="BTC-STORJ", interval=5) download_backtesting_testdata(pair="BTC-STORJ", interval=5)
assert os.path.isfile(file2) is True assert os.path.isfile(file2) is True
_clean_test_file(file2) _clean_test_file(file2)
def test_load_tickerdata_file():
assert not load_tickerdata_file('BTC_UNITEST', 7)
tickerdata = load_tickerdata_file('BTC_UNITEST', 1)
assert _btc_unittest_length == len(tickerdata)