量化交易中的地理延迟测试

3 篇文章 0 订阅
1 篇文章 0 订阅

Lantency

延迟,对于高频交易/量化交易是非常重要的因素。

客户端是没有办法缩减线路延迟的,所以我们需要尽可能的将我们的服务器放在交易所的服务器旁边。

一般来说,交易所会给提供api但不会提供交易所服务器的位置和延迟信息。所以我们要做的就是在自己的服务器测试延迟。

RTT

round-trip delay(RTD) 或者round-trip time(RTT) 是指一个信号从发送到确认接收到该信号的时间。这个时间包括两个通信端点路径之间的传播时间。在计算机网络的上下文中,信号通常是数据包。RTT也被称为ping时间,可以通过ping命令确认。

这里我们使用rtt来测量延迟,因为实际上下单的话,也是应用的这个延迟。

通常的测试方法

通常可以通过请求的方式来测量请求所花的时间。
以CB交易所为例

# python version
# use coinbase exchange for exchange
import requests
from datetime import datetime


url = 'https://api.exchange.coinbase.com/products/USDT-GBP/'

headers = {"Accept": "application/json"}

start_time = datetime.now()

for i in range(10):
	response = requests.get(url)
	# if need 
	# print(response.json()) 
end_time = datetime.now()

print('rtt is ', (end_time - start_time) / 10)

# output: rtt is  0:00:00.444431
// Golang version
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"time"
)

func main() {

	url := "https://api.exchange.coinbase.com/products/USDT-GBP/"

	startTime := time.Now()

	req, _ := http.NewRequest("GET", url, nil)

	// here is err handle

	req.Header.Add("Accept", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	endTime := time.Now()

	fmt.Println("res is ", endTime.Sub(startTime)/10)
	// fmt.Println("res is ", Time.Since(startTime)/10) same sample

	fmt.Println(res)
	fmt.Println(string(body))

}

# output: res is  33.981093ms

ccxt

为了节省时间,可以用一些现有的轮子,比如Python中的ccxt库。

这是一个多语言的加密交易库,有写好的多个交易所的api。可以直接拿来使用,这样就不用每个交易所的api都看一遍,但是,还是有必要浏览一下的!

usage

pip install ccxt

我们主要使用cctx中的exchange.py里面的方法即可。

import ccxt
from datetime import datetime

# print(ccxt.exchanges) see all exchanges which cctx support

start_time = datetime.now()
exchange = ccxt.bitstamp() # cctx.kraken()  cctx.binance() etc.....
for i in range(10):
    exchange.fetch_ticker('BTC/USDT')
    
end_time = datetime.now()
print('rtt is :', (end_time - start_time)/10)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值