交易阶段切换(主要是集合竞价的结束)将导致撮合的产生,从而需要生成新的订单簿。 尽早地感知到交易阶段的切换可尽早地输出新订单簿。
- 市场阶段
内部编码 | 阶段 | 对应深交所编码 | 对应上交所编码 | 物理世界时间 |
---|---|---|---|---|
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的交易阶段也应跟着切换
- 为防止某只标的的快照比另一只的逐笔来的更早,从而提前触发另一只的阶段切换:
- 快照触发标的自身的阶段切换
- 任意一只标的的逐笔时戳触发全局的阶段切换
集合竞价期间的逐笔消息类型和动作:
- 限价委托 -> 追加到委托数组;更新价格档位统计;更新价格档位排队订单
- 撤单 -> 查找并删除委托;更新价格档位统计;更新价格档位排队订单
集合竞价期间的快照生成:
-
查找 最低卖出价格档、最高买入价格档
-
初始 撮合成交价:
2.1 若 最低卖和最高买都不存在,则 撮合成交价 为0;
2.2 若 最低卖和最高买有一个不存在,则 撮合成交价 为另一个;
2.3 若 最低卖和最高买都存在:
2.3.1 若 最低卖和最高买 无交叉,则 撮合成交价 为0; 2.3.2 若 最低卖和最高买 有交叉,则待计算。
-
初始 总成交数量 = 0
-
撮合循环:
4.1 最低卖和最高买 有一个不存在,或 最低卖和最高买 无交叉,则结束循环
4.2 匹配成交量 等于双方委托量中较少的数量
4.3 总成交数量 += 匹配成交量
4.4 双方委托量各自减去 匹配成交量
4.5 若减完后,双方委托量均为0,则 撮合成交价 为双方价格均值
4.6 若减完后,某方仍有委托量,则 撮合成交价 为此方价格
4.7 若减完后,某方委托量为0,则移动此方价格档至下一档,回到4.1
-
撮合完成后:
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 若交易阶段已切换,则未成交的剩余顶点和价格档位即组成开盘时的订单簿
连续竞价期间的逐笔消息类型:
- 限价委托
- 市价委托
- 撤单
- 成交