mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-11 01:08:07 +00:00
commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# -*- 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())
|
||||
|
||||
Reference in New Issue
Block a user