Back to Ccxt

Watch Ticker To Csv

wiki/examples/py/watch-ticker-to-csv.md

4.5.571.6 KB
Original Source
python
# -*- coding: utf-8 -*-

from asyncio import gather, run
import ccxt.pro
from pprint import pprint


async def watch_ticker_continuously(exchange, symbol):
   filename = exchange.id + '-' + symbol.replace('/', '-') + '.csv'
   print('Watching', exchange.id, symbol, filename)
   keys = ['index', 'exchange', 'symbol', 'timestamp', 'open', 'high', 'low', 'close', 'baseVolume']
   with open(filename, 'w') as file:
       file.write(','.join(keys) + "\n")
   index = 0
   while True:
       try:
           ticker = await exchange.watch_ticker(symbol)
           values = [str(index), exchange.id] + [str(ticker[key]) for key in keys[2:]]
           print(*values)
           with open(filename, 'a') as file:
               file.write(','.join(values) + "\n")
           index += 1
       except Exception as e:
           print(e)


async def watch_tickers_continuously(exchange_id, overrides, symbols):
   exchange_class = getattr(ccxt.pro, exchange_id)
   exchange = exchange_class(overrides)
   coroutines = [watch_ticker_continuously(exchange, symbol) for symbol in symbols]
   await gather(*coroutines)
   await exchange.close()


async def main():
   exchanges = {
       'binance': {'options': {'defaultType': 'future'}},
       'huobipro': {}
   }
   symbols = ['BTC/USDT', 'ETH/USDT', 'LTC/USDT', 'XRP/USDT', 'BCH/USDT']
   coroutines = [watch_tickers_continuously(exchange_id, exchanges[exchange_id], symbols) for exchange_id in exchanges.keys()]
   return await gather(*coroutines)


run(main())