码迷,mamicode.com
首页 > 其他好文 > 详细

深交易所敲门机制的原理

时间:2017-12-14 14:52:22      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:time   缓存   操作   www.   获取   bug   升级   调用   说明   

交易所网关升级到新版本之后,连续两天在开市前两秒钟的时候崩溃了,把coredump文件发给交易所,他们定位是操作系统时间问题导致的,简单说就是他们会取操作系统两个时间T1,T2,T1在前,T2在后,理论上T2>T1,但是操作系统层面有bug,导致T2<T1,这时候网关程序就崩溃了。
 
可以使用ping命令来检测这个问题,如果ping的时间为负值,则说明操作系统存在这个bug。
ping命令的源代码如下,通过调过用操作系统GetTickCount() 获取时间戳计算数据包的传输时间。
printf(" time: %d ms ",GetTickCount()-icmphdr->timestamp); 
 
深交所5代系统的敲门机制,目的是为了消除网络延时对首笔订单排队的影响,保证交易的公平性。
以下是知乎上找到关于交易所敲门机制的描述:
 
作者:何波
链接:https://www.zhihu.com/question/53152697/answer/133709189
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

update1
有人问到交易所敲门机制的原理,我简单说一下,上交所和深交所的敲门机制不同,深交所新的第五代交易系统和之前的也不同,以深交所第五代交易系统为例:

在9:14:57 TGW会向柜台发送一个预开市信号,柜台系统收到该信号时就可以开始申报委托,申报的委托不会被拒绝,暂时缓存在TGW内存中,不会发往交易所。TGW在发送预开市信号后,即开始与交易系统后台以ping-pong的形式测试回路时延,共测试N次,取平均值,假设为W;在每次测试中,交易系统后台都会返回收到ping包时距离9:30:00的时长,假设最后一次测试的时长为T。

TGW在收到最后一次pong包时,等待T-W时间后,开始发送第一笔委托,如果委托以平台未开放被拒绝,则立即重新发送第一笔委托,直到委托被平台接受,然后继续发送后续委托。


也有人提到PTP协议,ptp协议得交易所链路上支持,虽然交易所不支持ptp,但是交易所交易主机是有原子钟的,我们通过gps铷原子钟去保持相对的时间戳。

--------------------------------------------------------------------------------------------------------

技术分享图片


谢邀~~~
我们的确用了铷原子钟,不过我们不是做高频交易,而是做券商的柜台交易系统。下图就是手机实拍的原子钟图。
我们用原子钟做什么呢?一个是用来和交易所对时。大家都知道早盘集合竞价期间,交易所都采取敲门机制,也就是只有第一笔订单被接收了,后续订单才能往交易所送,那第一笔订单如果报太早了会被交易所拒绝,就进入50ms左右的轮询,如果报太晚就不能及时将订单送出。所以这个时间就很精妙拉。
还有一个就是产生内部高精度定时器,远比调用os层的定时器来的精确。

利益相关:中泰证券极速交易系统XTP的牵头人。


作者:何波
链接:https://www.zhihu.com/question/53152697/answer/133709189
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

深交易所敲门机制的原理

标签:time   缓存   操作   www.   获取   bug   升级   调用   说明   

原文地址:http://www.cnblogs.com/timlong/p/8037383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!