4. Level2行情核心字段解析
Level2行情的价值不在于“数据更多”,而在于它把市场微观结构拆成了四个可观测的维度:价格深度、委托意愿、成交事实、委托行为。十档行情回答“此刻盘口长什么样”,委托队列回答“谁排在前面”,逐笔成交回答“刚刚发生了什么”,逐笔委托回答“订单是怎么进来的”。四者字段体系不同、更新频率不同、语义边界也不同,混用会导致策略信号严重失真。
一、核心原理:四类字段的语义边界
Level2不是Level1的简单加宽。Level1只有最优一档和累计成交量,而Level2把“静态快照”和“动态事件流”分开:十档行情与委托队列属于快照类,按固定频率推送当前状态;逐笔成交与逐笔委托属于事件类,每发生一笔就推送一条,带有唯一序号。理解这一点,才能理解为什么逐笔数据必须做去重和排序。
关键区分:快照字段是“状态”,事件字段是“增量”。状态可以覆盖,增量只能追加。把逐笔成交当快照累加,或把十档行情当事件流处理,都是常见错误。
二、方法流程:字段解析与对齐步骤
拿到Level2数据后,不能直接丢进策略。标准处理流程如下:
- 字段映射:把交易所原始字段映射到统一模型,例如上交所逐笔成交的“买方订单号”与深交所的“买方委托索引”语义不同,需归一化。
- 序号排序:逐笔成交和逐笔委托都带序号,必须按序号升序排列,防止网络乱序导致因果颠倒。
- 去重:断线重连后常出现重复推送,用“序号+交易所+证券代码”做唯一键去重。
- 时间戳对齐:快照用交易所时间戳,事件用本地接收时间戳,两者需做时钟校准,否则盘口与成交对不上。
- 状态重建:用逐笔委托和逐笔成交重建订单簿,再与十档行情快照做交叉验证,偏差超过阈值说明数据异常。
实战建议:先做“快照 vs 重建”一致性校验,再跑策略。如果重建盘口与十档行情长期偏离,优先排查序号缺失和去重逻辑,而不是调策略参数。
三、字段体系对照与案例场景
四类字段的核心字段清单如下表所示。注意“方向”字段在逐笔成交中表示主动方,在逐笔委托中表示买卖方向,语义不同。
| 数据类别 | 核心字段 | 更新方式 | 典型用途 |
|---|---|---|---|
| 十档行情 | 买价1-10、买量1-10、卖价1-10、卖量1-10 | 快照,约3秒 | 盘口深度、支撑压力、大单挂单识别 |
| 委托队列 | 委托价位、委托序号、委托数量、委托方向 | 快照,约3秒 | 排队位置、撤单概率、队列消耗速度 |
| 逐笔成交 | 成交价、成交量、成交方向、成交序号、成交时间 | 事件,毫秒级 | 主动买卖、大单追踪、成交分布 |
| 逐笔委托 | 委托价、委托量、委托方向、委托类型、委托序号 | 事件,毫秒级 | 订单流、撤单识别、流动性预测 |
案例场景:某股票卖一价位突然出现大量委托队列,同时逐笔委托显示连续多笔同价位买单进入,但逐笔成交没有对应放量。这说明是“挂单试探”而非真实成交,策略应警惕假突破。若只看十档行情,会误判为买盘强劲;只有结合委托队列和逐笔委托,才能识别出“挂而不成”的意图。
四、误区与复盘
误区一:把逐笔成交的“方向”当成买卖意愿。逐笔成交方向是主动方,代表的是“谁吃掉了谁”,不是“谁想买”。
误区二:用十档行情数量直接算买卖压力。十档数量包含大量可撤单,真实流动性要看委托队列的排队稳定性。
误区三:忽略序号连续性。序号跳变意味着丢包,重建的订单簿会失真,必须做补拉或标记断点。
误区二:用十档行情数量直接算买卖压力。十档数量包含大量可撤单,真实流动性要看委托队列的排队稳定性。
误区三:忽略序号连续性。序号跳变意味着丢包,重建的订单簿会失真,必须做补拉或标记断点。
复盘时建议按以下清单逐项检查:
- 逐笔成交与逐笔委托的序号是否连续,断点是否记录。
- 十档行情快照与重建盘口的偏差是否在可接受范围。
- 委托队列中同价位委托是否出现异常集中或快速消失。
- 逐笔成交方向与盘口变化是否一致,是否存在“成交了但盘口没动”的异常。
- 时间戳是否统一到同一时钟源,跨市场数据是否做了时区处理。
# 逐笔数据去重与排序伪代码
seen = set()
events = []
for msg in stream:
key = (msg.exchange, msg.symbol, msg.seq)
if key in seen:
continue
seen.add(key)
events.append(msg)
events.sort(key=lambda x: x.seq)
# 快照与重建盘口一致性校验
rebuilt = rebuild_orderbook(events)
for level in range(10):
diff = abs(rebuilt.bid[level].qty - snapshot.bid[level].qty)
if diff > threshold:
log.warning("盘口偏差过大 level=%d diff=%d", level, diff)
四类字段不是孤立存在的。十档行情给出“结果”,委托队列给出“排队结构”,逐笔成交给出“事实”,逐笔委托给出“意图”。只有把四者按统一序号和时间轴对齐,才能从Level2数据中提取出真正可交易的微观结构信号。字段解析的精度,直接决定了后续订单流策略的上限。