加密货币交易的随机 API 延迟峰值

时间:2021-04-29 17:15:05

标签: python api networking exchange-server cryptocurrency

我一直在为一些加密货币交易所开发一个做市机器人。我需要能够同时发送创建和取消订单,因为它将在多个市场上交易。延迟尖峰仅在同步发送 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 毫秒。

0 个答案:

没有答案