Back to Ccxt

Async Macd

wiki/examples/py/async-macd.md

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

from asyncio import gather, run
import pandas_ta as ta
import pandas as pd
import os
import sys


import ccxt.async_support as ccxt  # noqa: E402
print('CCXT Version:', ccxt.__version__)

async def run_ohlcv_loop(exchange, symbol, timeframe, limit):
   since = None
   fast = 12
   slow = 26
   signal = 9
   while True:
       try:
           ohlcv = await exchange.fetch_ohlcv(symbol, timeframe, since, limit)
           if len(ohlcv):
               df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])

               macd = df.ta.macd(fast=fast, slow=slow, signal=signal)
               df = pd.concat([df, macd], axis=1)
               print('----------------------------------------------------------')
               print(exchange.iso8601(exchange.milliseconds()), symbol, timeframe)
               print(df[-signal:])
       except Exception as e:
           print(type(e).__name__, str(e))


async def main():
   exchange = ccxt.binance()
   timeframe = '1m'
   limit = 50
   symbols = [
       'BTC/USDT',
       'ETH/USDT',
   ]
   loops = [run_ohlcv_loop(exchange, symbol, timeframe, limit) for symbol in symbols]
   await gather(*loops)
   await exchange.close()


run(main())