zoukankan      html  css  js  c++  java
  • 深交易所的敲门机制

    交易所网关升级到新版本之后,连续两天在开市前两秒钟的时候崩溃了,把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
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    python链接Hive
    input type=file输入框
    JQ剪辑图片插件,适用于移动端和PC端
    随笔
    Js获取当前日期时间及其它操作
    SQL中like语句的索引使用
    MS SQLSERVER 数据库表存储结构
    Jdom 解析 XML
    sqlserver 查询时,datetime的相关函数
    xml转换String输出
  • 原文地址:https://www.cnblogs.com/timlong/p/8037383.html
Copyright © 2011-2022 走看看