我一直在为一些加密货币交易所开发一个做市机器人。我需要能够同时发送创建和取消订单,因为它将在多个市场上交易。延迟尖峰仅在同步发送 api 请求时出现,并且延迟尖峰的增加与我的服务器与交换的距离成正比。延迟峰值通常是 api 延迟中位数的 2-3 倍。这让我相信一些 api 请求正在等待其他人的响应。下面是我用来测试这个的代码
<code>
To change the current value of the Gauge, you need to change 88 to something else in HTML section and update the .sc-percentage rotate value from 158deg to something else.
This will be a part of the Simple Chart library.
</code>
<div class="sc-gauge">
<div class="sc-background">
<div class="sc-percentage"></div>
<div class="sc-mask"></div>
<span class="sc-value">0.2</span>
</div>
<span class="sc-min">0</span>
<span class="sc-max">2</span>
</div>
这里是一些响应时间
cli = ccxt.bittrex(api)
def create_order(t):
time.sleep(t - time.time())
st = time.time()
resp = cli.create_order('BTC/USDT', 'limit', 'buy', 0.002, 10000)
mt = time.time()
cli.cancel_order(resp['id'], symbol='BTC/USDT')
et = time.time()
print('create_order time: {}, cancel_order time: {}, start_time: {}'.format(mt - st, et - mt, st))
st = time.time() + 2
l = [st] * 10
executor = ThreadPoolExecutor(max_workers=100)
completed = executor.map(create_order, l)
如果您查看所有线程大致同时发送订单的开始时间,但在底部您可以看到创建订单 api 响应时间比其他所有线程长约 2-3 倍,倒数第二个取消订单花费了大约 2-3 倍的时间。我试过使用 golang 来查看 python 是否是问题,但我得到了类似的结果。我也累了,不使用ccxt还是一样的结果
我在我的个人计算机上运行它,但我有一个更接近 Bittrex 的服务器,它获得了更好的响应时间,但仍然有类似的延迟峰值。例如,我的服务器上创建订单响应时间的中位数是 40 毫秒,但随机会飙升至 120 毫秒。