2. 盘口数据基础与高频数据获取

盘口微价格偏离策略的核心,是捕捉买一卖一价位附近极短时间窗口内的价格错位。这类错位往往只持续几十毫秒到几秒,因此策略对数据的“粒度”和“时序精度”要求远高于普通日线或分钟线策略。要判断一次偏离是否真实存在、是否可成交,必须依赖 Level-2 逐笔委托与逐笔成交数据,而不是快照行情。本节围绕这两类数据的结构、字段含义、常见数据源与获取方式展开,为后续回测与信号构造打基础。

一、快照行情与逐笔行情的本质差别

普通行情快照(Level-1 或 Level-2 快照)按固定频率(如每 3 秒)推送一次市场状态,只告诉你“这一刻盘口长什么样”。而逐笔数据记录的是“每一笔委托和成交发生了什么”,是事件流。对微价格偏离策略而言,关键信息恰恰藏在两次快照之间:某笔大单在买一挂出后又被撤掉、卖一被连续小单吃掉、某价位出现瞬时价差——这些在快照里会被压缩甚至完全丢失。因此,逐笔数据是策略回测的“原始素材”,快照只能作为辅助校验。

二、逐笔委托与逐笔成交的数据结构

沪深两市的逐笔数据在字段命名和撮合披露上存在差异,但核心结构相通。逐笔委托描述“订单进入市场”的事件,逐笔成交描述“订单被撮合成交”的事件。下图展示了两类数据在时间轴上的事件关系,以及它们如何共同还原出盘口状态。

逐笔委托与逐笔成交的事件流关系 时间 逐笔委托(Order) t1 买一挂单 t2 卖一挂单 t3 买一撤单 t4 新买一挂单 逐笔成交(Trade) t1.5 成交1 t2.5 成交2 t3.5 成交3 盘口状态还原(由事件流重建) t1 后 买一:10.00×500 卖一:10.02×300 t2 后 买一:10.00×500 卖一:10.01×200 t3 后 买一:9.99×400 卖一:10.01×200 t4 后 买一:10.00×600 卖一:10.01×200 注:t3 撤单导致买一价位下移,形成瞬时价差扩大,是微价格偏离信号的典型来源

逐笔委托的典型字段包括:证券代码、委托时间(精确到毫秒或微秒)、委托编号、委托方向(买/卖)、委托价格、委托数量、委托类型(限价/市价/本方最优等)。逐笔成交的典型字段包括:证券代码、成交时间、成交编号、买/卖委托编号、成交价格、成交数量、成交方向(主动买/主动卖)。其中“委托编号”是连接两类数据的关键外键——通过它可以把一笔成交追溯到对应的买方和卖方委托,从而判断这笔成交是主动买入还是主动卖出,以及它消耗了哪个价位的挂单。

需要特别注意两个易错点。第一,沪深两市的“成交方向”披露方式不同:部分数据源直接给出主动买卖标志,部分需要根据成交价与当时买一卖一的关系推断。第二,撤单事件在逐笔委托中通常以“委托类型=撤单”或独立撤单记录出现,回测时必须把撤单从有效挂单中剔除,否则会高估盘口深度。下图中的 t3 撤单正是这类事件。

三、常见数据源与获取方式

高频数据的获取渠道大致分三类。第一类是交易所官方行情,如上交所、深交所的 Level-2 行情,通过券商或行情服务商转发,字段最权威、时序最完整,但通常需要付费授权,且历史数据回溯成本较高。第二类是第三方数据服务商(如聚源、通联、米筐、聚宽等),提供整理后的逐笔数据接口,适合快速验证,但需核对字段口径与交易所原始定义是否一致。第三类是券商柜台或量化平台提供的本地行情落地文件,适合自有服务器长期采集。

获取方式上,实时场景一般通过行情 API 订阅推送,按事件回调写入本地队列;历史场景则通过数据接口按日期批量下载。无论哪种方式,都要关注三个工程细节:一是时间戳基准,统一使用交易所时间而非本地接收时间,避免网络延迟污染时序;二是数据落盘格式,建议按“证券代码+日期”分区存储为 Parquet 或二进制格式,便于回测时按标的快速读取;三是缺失与重复校验,逐笔数据在高峰时段可能出现丢包或重复推送,需用委托编号和成交编号去重。

四、面向回测的最小数据准备

在进入策略回测前,建议先构建一份“事件回放表”,把逐笔委托与逐笔成交按时间戳归并排序,形成单一事件流。回放时维护一个订单簿:委托事件插入或删除对应价位挂单,成交事件扣减对应价位数量。这样得到的盘口状态才是策略真正“看到”的市场。一个可直接参考的字段清单如下:

数据类别关键字段回测用途
逐笔委托时间、委托编号、方向、价格、数量、类型重建订单簿、识别撤单
逐笔成交时间、成交编号、买卖委托编号、价格、数量、方向判断主动买卖、计算成交强度
快照(辅助)买一至卖十价量、时间校验订单簿重建结果
实操建议:先用一个交易日的单只股票逐笔数据做小样本回放,把重建出的买一卖一与官方快照逐笔比对,确认误差在可接受范围后,再扩展到全样本回测。这一步能提前暴露字段口径、时间戳和撤单处理上的问题。