Skip to content

Latest commit

 

History

History
120 lines (76 loc) · 4.77 KB

ob_workflow.md

File metadata and controls

120 lines (76 loc) · 4.77 KB

订单簿重建流程

标的交易阶段判断

交易阶段切换(主要是集合竞价的结束)将导致撮合的产生,从而需要生成新的订单簿。 尽早地感知到交易阶段的切换可尽早地输出新订单簿。

交易阶段分类

  • 市场阶段
内部编码 阶段 对应深交所编码 对应上交所编码 物理世界时间
0 启动(开市前) 'S'=启动(开市前) 'S'=启动(开市前)时段 <9:15:00
1 开盘集合竞价 'O'=开盘集合竞价 'C'=开盘集合竞价时段 [9:15:00, 9:25:00)
2 开盘集合竞价后休市 'B'=休市 'B'=休市时段 [9:25:00, 9:30:00)
3 连续竞价(上午) 'T'=连续竞价 'T'=连续交易时段 [9:30:00, 11:30:00)
4 中午休市 'B'=休市 'B'=休市时段 [11:30:00, 13:00:00)
5 连续竞价(下午) 'T'=连续竞价 'T'=连续交易时段 [13:00:00, 14:57:00)
6 收盘集合竞价 'C'=收盘集合竞价 'U'=收盘集合竞价时段 [14:57:00, 15:00:00)
7 盘后交易 'A'=盘后交易 创业板[15:05:00, 15:30:00) *
8 已闭市 'E'=已闭市 'E'=闭市时段 >=15:00:00
9 波动性中断 'V'=波动性中断 'V'=波动性中断
10 停牌 'H'=临时停牌 'P'=产品停牌
11 熔断时段 'M' or 'N'

盘后交易消息不在本项目使用的L2行情中,有独立的盘后定价交易快照行情。

市场交易阶段与L2消息,OrderBook阶段切换设计

市场交易阶段

  • 标的状态
内部编码 状态 对应深交所编码 对应上交所编码
0 可交易 '0'=正常状态 '1'=可正常交易/已上市/可接受订单申报;
1 不可交易 '1'=全天停牌 '0'=不可正常交易/未上市/不接受订单申报;

期权限制开仓与否不影响OB重建,因此不需要反映到状态中。

判断流程

  • 仅快照内有交易阶段代码,逐笔消息用时间戳来推算交易阶段
  • 在交易阶段切换时标的快照不一定及时到来
  • 逐笔消息可以弥补快照缺失时的判断
  • 整个 宏单元 或 所有 宏单元 共享一个交易所交易阶段标志
  • 大多数情况下市场状态将早于标的状态更新
    • 即:当FPGA收到第一个切换交易阶段的消息时(可能是快照,也可能是逐笔),意味着物理世界的时间已经切换,因此整个FPGA的交易阶段也应跟着切换
  • 为防止某只标的的快照比另一只的逐笔来的更早,从而提前触发另一只的阶段切换:
    • 快照触发标的自身的阶段切换
    • 任意一只标的的逐笔时戳触发全局的阶段切换

集合竞价重建流程

集合竞价期间的逐笔消息类型和动作:

  • 限价委托 -> 追加到委托数组;更新价格档位统计;更新价格档位排队订单
  • 撤单 -> 查找并删除委托;更新价格档位统计;更新价格档位排队订单

集合竞价期间的快照生成:

  1. 查找 最低卖出价格档、最高买入价格档

  2. 初始 撮合成交价:

    2.1 若 最低卖和最高买都不存在,则 撮合成交价 为0;

    2.2 若 最低卖和最高买有一个不存在,则 撮合成交价 为另一个;

    2.3 若 最低卖和最高买都存在:

     2.3.1 若 最低卖和最高买 无交叉,则 撮合成交价 为0;
    
     2.3.2 若 最低卖和最高买 有交叉,则待计算。
    
  3. 初始 总成交数量 = 0

  4. 撮合循环:

    4.1 最低卖和最高买 有一个不存在,或 最低卖和最高买 无交叉,则结束循环

    4.2 匹配成交量 等于双方委托量中较少的数量

    4.3 总成交数量 += 匹配成交量

    4.4 双方委托量各自减去 匹配成交量

    4.5 若减完后,双方委托量均为0,则 撮合成交价 为双方价格均值

    4.6 若减完后,某方仍有委托量,则 撮合成交价 为此方价格

    4.7 若减完后,某方委托量为0,则移动此方价格档至下一档,回到4.1

  5. 撮合完成后:

    5.1 若交易阶段没有切换,则生成临时匹配快照,即各方最多2档,其中:

     5.1.2 若无匹配成交,即 总成交数量 为0,则不揭示任何价格档位。
     5.1.2 若有匹配成交,则揭示的买一和卖一档位的价格为 最终撮合成交价,数量为 总成交数量
     5.1.3 若有匹配成交,则揭示的买二和卖二档位的价格为0
     5.1.4 若有匹配成交,则揭示的买二和卖二档位的数量为撮合后 最优档剩余委托数量,其中某方应为0
     5.1.5 买卖三及以上档位价格和数量都为0
    

    5.2 若交易阶段已切换,则生成正常快照,即买卖均为十档

    5.3 若交易阶段已切换,则未成交的剩余顶点和价格档位即组成开盘时的订单簿

连续竞价期间 撮合流程

连续竞价期间的逐笔消息类型:

  • 限价委托
  • 市价委托
  • 撤单
  • 成交

限价委托