2. 盘口数据基础与采集链路
要判断盘口价格闪变究竟是真实行情还是数据异常,第一步不是盯着分时图猜,而是弄清楚自己手里的数据到底是什么。A股行情数据通常由三类核心数据构成:逐笔委托(Order)、逐笔成交(Trade)和快照(Snapshot)。三者的生成主体、更新频率和字段语义完全不同,混用或误读是导致“闪变误判”的常见根源。
三类数据的字段含义与语义边界
逐笔委托记录的是订单进入交易所撮合系统的事件,核心字段包括:证券代码、买卖方向(B/S)、订单编号、委托价格、委托数量、订单类型(限价/市价/本方最优等)、订单状态(新增/撤单)以及交易所撮合时间。它描述的是“谁在什么价位挂了多少量”,是盘口挂单变化的源头。需要特别注意:逐笔委托中的“撤单”事件同样是一条独立记录,盘口某一档位挂单量骤减,往往对应一条撤单委托,而非成交。
逐笔成交记录撮合成交结果,核心字段包括:成交编号、买卖双方订单编号、成交价格、成交数量、成交时间以及成交方向标记(主动买/主动卖,部分数据源以买方订单号或卖方订单号推断)。它描述的是“实际发生了多少交易”,是价格真正移动的依据。逐笔成交的成交量之和应与快照中累计成交量增量一致,这一致性正是排查数据异常的重要校验点。
快照是交易所按固定频率(A股Level-1通常约3秒一笔,Level-2约3秒或更快)对盘口状态的一次切片,字段包括:时间戳、最新价、今开、最高、最低、成交量、成交额、买一至买五(或买十)价与量、卖一至卖五(或卖十)价与量、委托买入/卖出总量等。快照是“状态量”,逐笔是“事件量”,二者关系类似视频帧与逐帧事件日志。
时间戳机制:三种时间不能混为一谈
盘口闪变分析中,时间戳是最容易被忽视却最关键的字段。实际链路里至少存在三种时间:交易所撮合时间(事件真实发生时刻)、网关发送时间(行情分发时刻)、本地接收时间(采集端收到时刻)。逐笔数据通常携带交易所时间,精度可达毫秒甚至微秒;快照的时间戳一般标记该帧的生成时刻。三者之间存在网络传输与排队延迟,正常情况下延迟稳定且较小,一旦某段时间戳出现倒序、跳变或本地接收时间与交易所时间差突然拉大,就应怀疑链路拥塞或数据源异常,而不是行情本身闪变。
实践中建议采集端同时保留交易所时间与本地接收时间两个字段,并记录数据源序列号。序列号连续性是判断“是否丢包”的直接依据:若某只股票在连续快照之间序列号出现缺口,说明中间帧丢失,此时看到的“价格跳变”很可能只是丢帧造成的视觉断层,而非真实成交推动。
常见采集方式与选型
常见采集方式主要有三类。其一是行情API订阅,通过券商或数据商提供的接口(如各厂商的Level-1/Level-2行情SDK)回调接收,优点是接入快、字段规范,缺点是受接口频率与权限限制,逐笔数据往往需要专门授权。其二是文件落地回放,交易所或数据商按日提供逐笔与快照文件,适合复盘与离线校验,能完整还原历史链路。其三是自建网关直连,直接对接行情网关二进制流,延迟最低但开发与运维成本高,需要自行处理解包、序列号排序与断线重连。
无论哪种方式,落库时都应遵循“事件流与状态流分表存储”的原则:逐笔委托、逐笔成交各建事件表,快照建状态表,并统一以证券代码加交易所时间为索引。这样在排查闪变时,可以先定位异常快照帧,再回查该时间窗口内的逐笔事件,形成完整证据链。
采集环节的校验清单
为保证后续闪变判断可靠,采集端至少应完成三项校验:一是成交量对账,用相邻两帧快照的累计成交量之差,与区间内逐笔成交数量之和比对,偏差超过阈值即告警;二是序列号连续性检查,发现缺口立即标记该时段数据不可用于闪变判定;三是时间戳单调性检查,同一证券的逐笔事件时间应基本单调递增,出现明显倒序需排查多路数据源合并问题。把这三项做成采集时的常规动作,才能在面对盘口闪变时,先分清是行情在动,还是数据在“抖”。