Я использую Копра для получения данных в реальном времени от Coinbase Pro. Этот код начинает выводить ленту веб-сокетов. Я понятия не имею, как собрать данные в переменной и сделать DF с ним? Конечная цель - поместить ее в базу данных.
Цель:
- Сбор данных из канала WebSocket с шагом 5 минут (цели OHLCV)
- Положить каждые 5 минутсбор в собственном DataFrame
- Создание 5-минутных свечей OHLCV с этим DataFrame
- Отправка данных OHLCV в базу данных PostgreSQL
import asyncio
from copra.websocket import Channel, Client
loop = asyncio.get_event_loop()
ws = Client(loop, Channel('matches', 'BTC-USD'))
async def work():
while True:
await asyncio.sleep(30)
print("Task Executed")
loop = asyncio.get_event_loop()
try:
asyncio.ensure_future(work())
loop.run_forever()
except KeyboardInterrupt:
pass
finally:
print("Closing Loop")
loop.close()
Пример вывода:
{'type': 'match', 'trade_id': 75894771, 'maker_order_id': '9742d468-770d-4403-82fc-23b87ce6aa9d', 'taker_order_id': 'f76e05d1-c206-4482-bce1-9763c73970d0', 'side': 'sell', 'size': '0.00280190', 'price': '8348.99', 'product_id': 'BTC-USD', 'sequence': 11001219347, 'time': '2019-10-13T01:59:42.814000Z'}
{'type': 'match', 'trade_id': 75894772, 'maker_order_id': '9742d468-770d-4403-82fc-23b87ce6aa9d', 'taker_order_id': '391c748a-ca33-4a11-9a9d-bbe3565e643e', 'side': 'sell', 'size': '0.00256354', 'price': '8348.99', 'product_id': 'BTC-USD', 'sequence': 11001219566, 'time': '2019-10-13T01:59:43.827000Z'}
{'type': 'match', 'trade_id': 75894773, 'maker_order_id': 'af29c906-be3d-41ca-904b-b87a7bb2270d', 'taker_order_id': 'a9a5ed9b-b83e-4408-bfb6-62b0dad6fce6', 'side': 'sell', 'size': '0.00400000', 'price': '8349.48', 'product_id': 'BTC-USD', 'sequence': 11001220104, 'time': '2019-10-13T01:59:45.944000Z'}