mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
67 lines
2.3 KiB
Python
67 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
sys.path.append(root + '/python')
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
import ccxt.pro
|
|
|
|
print('CCXT Version:', ccxt.pro.__version__)
|
|
|
|
orderbooks = {}
|
|
|
|
def handle_all_orderbooks(exchange, orderbooks, spot, future):
|
|
if spot in orderbooks and future in orderbooks:
|
|
spot_order_book = orderbooks[spot]
|
|
future_order_book = orderbooks[future]
|
|
timestamp = exchange.milliseconds()
|
|
spot_lag = abs(timestamp - spot_order_book['timestamp']) if spot_order_book['timestamp'] else 10000
|
|
future_lag = abs(timestamp - future_order_book['timestamp']) if future_order_book['timestamp'] else 10000
|
|
if spot_lag >= 10000 or future_lag >= 10000:
|
|
print('Lag > 10 seconds')
|
|
|
|
async def symbol_loop(exchange, symbol, spot, future):
|
|
while True:
|
|
try:
|
|
orderbook = await exchange.watch_order_book(symbol)
|
|
orderbooks[symbol] = orderbook
|
|
print(exchange.id, '{:13s}'.format(symbol), orderbook['datetime'], orderbook['asks'][0], orderbook['bids'][0])
|
|
#
|
|
# here you can do what you want
|
|
# with the most recent versions of each orderbook you have so far
|
|
#
|
|
# you can also wait until all of them are available
|
|
# by just looking into all the orderbooks and counting them
|
|
#
|
|
# we just print them here to keep this example simple
|
|
#
|
|
handle_all_orderbooks(exchange, orderbooks, spot, future)
|
|
except Exception as e:
|
|
print(str(e))
|
|
# raise e # uncomment to break all loops in case of an error in any one of them
|
|
break # you can break just this one loop if it fails
|
|
|
|
|
|
async def main():
|
|
spot = 'BTC/USDT'
|
|
future = 'BTC/USDT:USDT'
|
|
symbols = [ spot, future ]
|
|
exchange = ccxt.pro.bitmart()
|
|
loops = [
|
|
symbol_loop(exchange, spot, spot, future),
|
|
symbol_loop(exchange, future, spot, future),
|
|
]
|
|
await asyncio.gather(*loops)
|
|
await exchange.close()
|
|
|
|
|
|
asyncio.run(main())
|
|
|