wiki/examples/py/async-macd.md
# -*- 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())