2. 盘口数据基础

要估算不同盘口深度下的可成交量,第一步不是写算法,而是弄清楚“我们手里到底有哪些数据”。行情数据按披露粒度大致分为三档:Level-1(快照)、Level-2(增强快照,含十档委托与逐笔数据)、以及逐笔委托/逐笔成交这类订单流数据。它们决定了你能看到多深的盘口、能否还原撮合过程,也直接决定了可成交量估算的精度上限。

一、Level-1:最优一档的快照行情

Level-1 是最基础的行情,通常每 3 秒推送一次快照,只披露最优一档买卖价量。以 A 股常见字段为例:

字段含义对估算的意义
最新价 / 收盘价最近一笔成交价判断当前价位与盘口的关系
买一价 / 买一量最优买价及其挂单量卖出时最直接的对手盘
卖一价 / 卖一量最优卖价及其挂单量买入时最直接的对手盘
成交量 / 成交额当日累计值估算流动性活跃度
时间戳快照生成时刻对齐多源数据、判断延迟

Level-1 的局限非常明显:只有一档,看不到挂单的厚度分布。若买一量只有 500 手,而你要卖 5000 手,Level-1 无法告诉你价格会滑到哪里。因此它只适合做“最小可成交量”的粗略估计,即假设只吃一档时的成交量。

二、Level-2:十档盘口与逐笔数据

Level-2 在快照基础上扩展到买卖各十档,并额外提供逐笔成交与逐笔委托。十档快照的字段结构是成对的:买一价、买一量……买十价、买十量,卖侧同理。它让我们能画出盘口的“深度剖面”,从而按价格档位逐层累加可成交量。

需要特别注意的是,十档快照仍是“切片”,两次快照之间(通常 3 秒)盘口可能已被撮合多次。若只用十档快照做累加,会低估或高估真实可成交量,因为挂单在快照间隙被撤、被吃的情况看不到。这正是逐笔数据存在的价值。

三、逐笔成交与逐笔委托

逐笔成交记录每一笔撮合成交,核心字段包括:成交时间(精确到毫秒或更细)、成交价、成交数量、成交方向(主动买/主动卖,部分市场由买卖盘订单号推断)、买方订单号与卖方订单号。逐笔委托则记录每一笔新订单的进入与撤单,字段包括委托时间、委托价格、委托数量、买卖方向、订单号、订单类型(限价/市价/撤单)。

两者结合,可以还原订单簿的演化过程:新委托进入 → 挂入对应价位 → 成交则扣减对应档位 → 撤单则移除。这样得到的“重建盘口”比快照更连续,也能精确回答“在某一价位上,到底有多少真实可成交的挂单”。

判断逐笔成交方向时,若交易所未直接给出方向字段,常用规则是:成交价等于卖方委托价则视为主动买(买方吃单),等于买方委托价则视为主动卖。不同市场规则不同,使用前必须核对交易所文档,全文保持同一约定。

四、从字段到可成交量:一个示例

假设某股票十档卖盘如下(示例数据,仅用于说明方法):卖一 10.00 元 800 手,卖二 10.01 元 1500 手,卖三 10.02 元 3000 手。若你要买入 4000 手,按档位累加:800 + 1500 = 2300 手仍不足,再吃卖三 1700 手,成交均价约为 (800×10.00 + 1500×10.01 + 1700×10.02) / 4000 ≈ 10.0115 元。这就是最朴素的“按档累加”估算。

但若逐笔数据显示,卖一在最近 3 秒内有 600 手被撤单,那么快照里的 800 手其实包含已失效挂单,真实可成交量会低于累加值。反之,若快照间隙有新挂单涌入,累加又会低估。因此工程上通常用逐笔委托重建订单簿,再用重建结果校验快照,二者交叉验证。

行情数据层级与可成交量估算的数据链路 Level-1 快照 买一价/量、卖一价/量 最新价、累计成交量 约 3 秒一次 仅一档 → 只能估最小量 Level-2 十档快照 买一~买十 价/量 卖一~卖十 价/量 仍是切片,间隙不可见 可做逐档累加估算 逐笔委托 / 逐笔成交 订单号、价格、数量 方向、撤单、时间戳 毫秒级连续记录 可重建订单簿 订单簿重建 新单挂入 / 成交扣减 / 撤单移除 可成交量估算 按价位逐档累加 + 滑点计算 示例:卖一 800 手 / 卖二 1500 手 / 卖三 3000 手,买 4000 手 累加 800+1500+1700,均价 ≈ 10.0115 元(示例数据)

五、字段对齐与常见坑

实际使用中,最容易出问题的是时间戳对齐。快照时间、逐笔成交时间、逐笔委托时间往往来自不同通道,精度和时区也可能不同。若直接用快照时间匹配逐笔记录,会出现“成交早于挂单”的错位。建议统一换算到同一时间基准(如交易所撮合时间),并保留原始时间戳以便回溯。

另一个坑是订单号。逐笔成交中的买方订单号、卖方订单号,需要与逐笔委托中的订单号对应,才能追踪一笔委托的完整生命周期。若交易所对订单号做了脱敏或分段编码,需先确认映射规则。此外,撤单在逐笔委托中通常以“撤单记录”形式出现,数量为负或方向字段特殊,解析时要单独处理,不能当作新挂单累加。

不要假设十档快照的十档都是“满的”。很多标的在盘中只有三五档有挂单,其余档位量为 0。累加时必须跳过空档,否则会把 0 量当作有效深度,导致估算失真。

总结来说,Level-1 给的是“点”,Level-2 十档给的是“面”,逐笔数据给的是“过程”。可成交量估算的精度,取决于你用的是哪一层数据,以及是否用逐笔数据对快照做了校验。理解每个字段的含义与边界,是后续所有估算方法的地基。