如何突破商品期货Tick接收限制
2018-08-24 09:10
423 查看
什么是Tick?
举个例子,交易数据可以想象成一条河流,Tick就是这条河流在某个截面的数据。国内期货最细粒度就是每秒两次。也就是说国内期货500毫秒最多发送一个Tick。
国内大多数软件是怎么获取Tick的?
那么500毫秒内实际上发生的成交往往多于一次,里面具体什么情况完全是个黑盒子。特别在商品期货高频交易策略中,Tick行情的接收速度对策略的盈利结果有着决定性的影响。
而市面上大多数交易框架,都是采用回调模式的机制,也就是500毫秒最多只有一个Tick,这还是理想状态。真实情况下onBar/onTick,Tick不漏掉就不错了。为什么呢?因为onBar/onTick函数里面,你要处理一整遍代码逻辑,很浪费时间,不管你愿不愿意,你的策略逻辑必须被打断,必须采用状态机的模式,比如:
更为先进的机制
发明者量化交易平台并没有采用这种落后的回调机制,而是采用了不打断策略逻辑的main函数入口机制,让用户可以更自然的控制策略流程。用C++与Golang做为稳定的策略低层,策略上层用Javascript/Python处理逻辑问题。结合事件触发机制,同样的也能使策略在第一时间最快的速度处理行情。
不要说脚本语言速度慢,除非你用它来做神经网络训练,就算用神经网络训练, 加入Jit热编译后,他在任何场合都够用的了, Chrome秒IE十条街就是例子。入门级的策略这里就不再写了, 就以期货高频Tick的合成来说。
比如我们连接一个期货公司,只能收到这个期货公司的行情,我们接收行情的速度跟质量也跟自己的网络有关系,跟期货公司前置机的负载也有关系,那么,怎么样才能做到更快的获取更准确的期货Tick数据呢?
在发明者的策略模型下,你很容易就能操作N家不同期货公司的账户,并把他们的行情,融合处理,以最快的速度下单。正常情况下,我们最多可以从期货公司拿到两个Tick每秒,但通过融合行情的技术,以MA801为例,我们可以拿到最多一秒6次不重复的Tick。
代码演示
废话不多说,直接上代码(此代码只能实盘,不能回测,如果您不用发明者可以只参考原理):实盘添加交易所时,可以添加N个期货公司,进行行情的并发融合处理。这里暂时添加两个,演示说明:
代码如下:
演示效果
如上图,可以看到21:24:44秒的时候第一个期货公司的数据比第二个先到,添加两个期货公司就看出来效果了,如果添加5个以上期货公司一起融合。
那么你基本上没有漏Tick的可能,如果用来开发高频交易策略,你已经解决了很重要也是决定性的一步,Tick接收的速度以及稳定性。
原文链接:https://quant.la/Article/View/24/展示BotVS如何突破行情Tick接收的限制.html
举个例子,交易数据可以想象成一条河流,Tick就是这条河流在某个截面的数据。国内期货最细粒度就是每秒两次。也就是说国内期货500毫秒最多发送一个Tick。
国内大多数软件是怎么获取Tick的?
那么500毫秒内实际上发生的成交往往多于一次,里面具体什么情况完全是个黑盒子。特别在商品期货高频交易策略中,Tick行情的接收速度对策略的盈利结果有着决定性的影响。
而市面上大多数交易框架,都是采用回调模式的机制,也就是500毫秒最多只有一个Tick,这还是理想状态。真实情况下onBar/onTick,Tick不漏掉就不错了。为什么呢?因为onBar/onTick函数里面,你要处理一整遍代码逻辑,很浪费时间,不管你愿不愿意,你的策略逻辑必须被打断,必须采用状态机的模式,比如:
更为先进的机制
发明者量化交易平台并没有采用这种落后的回调机制,而是采用了不打断策略逻辑的main函数入口机制,让用户可以更自然的控制策略流程。用C++与Golang做为稳定的策略低层,策略上层用Javascript/Python处理逻辑问题。结合事件触发机制,同样的也能使策略在第一时间最快的速度处理行情。
不要说脚本语言速度慢,除非你用它来做神经网络训练,就算用神经网络训练, 加入Jit热编译后,他在任何场合都够用的了, Chrome秒IE十条街就是例子。入门级的策略这里就不再写了, 就以期货高频Tick的合成来说。
比如我们连接一个期货公司,只能收到这个期货公司的行情,我们接收行情的速度跟质量也跟自己的网络有关系,跟期货公司前置机的负载也有关系,那么,怎么样才能做到更快的获取更准确的期货Tick数据呢?
在发明者的策略模型下,你很容易就能操作N家不同期货公司的账户,并把他们的行情,融合处理,以最快的速度下单。正常情况下,我们最多可以从期货公司拿到两个Tick每秒,但通过融合行情的技术,以MA801为例,我们可以拿到最多一秒6次不重复的Tick。
代码演示
废话不多说,直接上代码(此代码只能实盘,不能回测,如果您不用发明者可以只参考原理):实盘添加交易所时,可以添加N个期货公司,进行行情的并发融合处理。这里暂时添加两个,演示说明:
代码如下:
演示效果
如上图,可以看到21:24:44秒的时候第一个期货公司的数据比第二个先到,添加两个期货公司就看出来效果了,如果添加5个以上期货公司一起融合。
那么你基本上没有漏Tick的可能,如果用来开发高频交易策略,你已经解决了很重要也是决定性的一步,Tick接收的速度以及稳定性。
原文链接:https://quant.la/Article/View/24/展示BotVS如何突破行情Tick接收的限制.html
相关文章推荐
- [转] 如何突破Windows系统单进程最大线程数2000的限制
- exchange邮箱如何限制总容量与发送接收的大小
- 如何突破局域网对上网用户的一些限制
- 如何突破局域网限制
- [置顶] 如何利用chrome插件tampermonkey突破百度云盘下载限制
- 如何突破滚动条最大值是32767的限制(vb6)
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 局域网如何突破每IP限制流量的经验和总结
- C++ 如何突破private成员的访问限制
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 如何突破Windows环境限制打开“命令提示符”
- 如何突破限制,在PC上调试微信手机页面
- 如何突破Class中的范围限制[Flash8 Guys]
- 如何突破经济学人阅读数量限制
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- 在Windows Server 2003 Enterprise 上如何讓oracle突破內存的限制
- 如何突破局域网对上网用户的限制
- 如何在32位程序中突破地址空间限制使用超过4G的内存
- AD如何委派权限可以让域用户有加入域的权限|突破10次限制