mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 16:28:06 +00:00
47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
- [Async Orderbooks](./examples/py/)
|
|
|
|
|
|
```python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import asyncio
|
|
import ccxt
|
|
import ccxt.async_support as ccxta # noqa: E402
|
|
import time
|
|
import os
|
|
import sys
|
|
|
|
|
|
|
|
async def async_client(exchange, symbol):
|
|
client = getattr(ccxta, exchange)()
|
|
await client.load_markets()
|
|
if symbol not in client.symbols:
|
|
raise Exception(exchange + ' does not support symbol ' + symbol)
|
|
while True:
|
|
try:
|
|
orderbook = await client.fetch_order_book(symbol)
|
|
datetime = client.iso8601(client.milliseconds())
|
|
print(datetime, client.id, symbol, orderbook['bids'][0], orderbook['asks'][0])
|
|
except Exception as e:
|
|
print(type(e).__name__, e.args, str(e)) # comment if not needed
|
|
# break # uncomment to break it
|
|
# pass # uncomment to do nothing and just retry again on next iteration
|
|
# or add your own reaction according to the purpose of your app
|
|
await client.close()
|
|
|
|
|
|
async def multi_orderbooks(exchanges, symbol):
|
|
input_coroutines = [async_client(exchange, symbol) for exchange in exchanges]
|
|
await asyncio.gather(*input_coroutines, return_exceptions=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
# Consider review request rate limit in the methods you call
|
|
exchanges = ["bittrex", "bitfinex", "poloniex"]
|
|
symbol = 'ETH/BTC'
|
|
|
|
asyncio.run(multi_orderbooks(exchanges, symbol))
|
|
|
|
``` |