stable/scripts/download_backtest_data.py
2018-05-16 23:43:58 -07:00

180 lines
3.4 KiB
Python
Executable File

#!/usr/bin/env python3
"""This script generate json data from bittrex"""
import json
import sys
import os
import arrow
from freqtrade import (exchange, arguments, misc)
DEFAULT_DL_PATH = 'freqtrade/tests/testdata'
arguments = arguments.Arguments(sys.argv[1:], 'download utility')
arguments.testdata_dl_options()
args = arguments.parse_args()
TICKER_INTERVALS = ['1m', '5m', '1h', '4h']
PAIRS = [
"ETH/BTC",
"LTC/BTC",
"BNB/BTC",
"NEO/BTC",
"GAS/BTC",
"MCO/BTC",
"WTC/BTC",
"QTUM/BTC",
"OMG/BTC",
"ZRX/BTC",
"STRAT/BTC",
"SNGLS/BTC",
"BQX/BTC",
"KNC/BTC",
"FUN/BTC",
"SNM/BTC",
"LINK/BTC",
"XVG/BTC",
"SALT/BTC",
"IOTA/BTC",
"MDA/BTC",
"MTL/BTC",
"SUB/BTC",
"EOS/BTC",
"SNT/BTC",
"ETC/BTC",
"MTH/BTC",
"ENG/BTC",
"DNT/BTC",
"BNT/BTC",
"AST/BTC",
"DASH/BTC",
"ICN/BTC",
"OAX/BTC",
"BTG/BTC",
"EVX/BTC",
"REQ/BTC",
"LRC/BTC",
"VIB/BTC",
"HSR/BTC",
"TRX/BTC",
"POWR/BTC",
"ARK/BTC",
"XRP/BTC",
"MOD/BTC",
"ENJ/BTC",
"STORJ/BTC",
"VEN/BTC",
"KMD/BTC",
"RCN/BTC",
"NULS/BTC",
"RDN/BTC",
"XMR/BTC",
"DLT/BTC",
"AMB/BTC",
"BAT/BTC",
"ZEC/BTC",
"BCPT/BTC",
"ARN/BTC",
"GVT/BTC",
"CDT/BTC",
"GXS/BTC",
"POE/BTC",
"QSP/BTC",
"BTS/BTC",
"XZC/BTC",
"LSK/BTC",
"TNT/BTC",
"FUEL/BTC",
"MANA/BTC",
"BCD/BTC",
"DGD/BTC",
"ADX/BTC",
"ADA/BTC",
"PPT/BTC",
"CMT/BTC",
"XLM/BTC",
"CND/BTC",
"LEND/BTC",
"WABI/BTC",
"TNB/BTC",
"WAVES/BTC",
"ICX/BTC",
"GTO/BTC",
"OST/BTC",
"ELF/BTC",
"AION/BTC",
"NEBL/BTC",
"BRD/BTC",
"EDO/BTC",
"WINGS/BTC",
"NAV/BTC",
"LUN/BTC",
"TRIG/BTC",
"APPC/BTC",
"VIBE/BTC",
"RLC/BTC",
"INS/BTC",
"PIVX/BTC",
"IOST/BTC",
"CHAT/BTC",
"STEEM/BTC",
"VIA/BTC",
"BLZ/BTC",
"AE/BTC",
"RPX/BTC",
"NCASH/BTC",
"POA/BTC",
"ZIL/BTC",
"ONT/BTC",
"STORM/BTC",
"XEM/BTC",
"WAN/BTC",
"QLC/BTC",
"SYS/BTC",
"WPR/BTC",
"GRS/BTC",
"CLOAK/BTC",
"GNT/BTC",
"LOOM/BTC",
"BCN/BTC",
"REP/BTC"
]
if args.pairs_file:
with open(args.pairs_file) as file:
PAIRS = json.load(file)
PAIRS = list(set(PAIRS))
dl_path = DEFAULT_DL_PATH
if args.export and os.path.exists(args.export):
dl_path = args.export
since_time = None
if args.days:
since_time = arrow.utcnow().shift(days=-args.days).timestamp * 1000
print(f'About to download pairs: {PAIRS} to {dl_path}')
# Init exchange
exchange._API = exchange.init_ccxt({'key': '',
'secret': '',
'name': args.exchange})
for pair in PAIRS:
for tick_interval in TICKER_INTERVALS:
print(f'downloading pair {pair}, interval {tick_interval}')
data = exchange.get_ticker_history(pair, tick_interval, since_ms=since_time)
if not data:
print('\tNo data was downloaded')
break
print('\tData was downloaded for period %s - %s' % (
arrow.get(data[0][0] / 1000).format(),
arrow.get(data[-1][0] / 1000).format()))
# save data
pair_print = pair.replace('/', '_')
filename = f'{pair_print}-{tick_interval}.json'
misc.file_dump_json(os.path.join(dl_path, filename), data)