2. 盘口数据基础与高频数据获取
盘口微价格偏离策略的核心,是捕捉买一卖一价位附近极短时间窗口内的价格错位。这类错位往往只持续几十毫秒到几秒,因此策略对数据的“粒度”和“时序精度”要求远高于普通日线或分钟线策略。要判断一次偏离是否真实存在、是否可成交,必须依赖 Level-2 逐笔委托与逐笔成交数据,而不是快照行情。本节围绕这两类数据的结构、字段含义、常见数据源与获取方式展开,为后续回测与信号构造打基础。
一、快照行情与逐笔行情的本质差别
普通行情快照(Level-1 或 Level-2 快照)按固定频率(如每 3 秒)推送一次市场状态,只告诉你“这一刻盘口长什么样”。而逐笔数据记录的是“每一笔委托和成交发生了什么”,是事件流。对微价格偏离策略而言,关键信息恰恰藏在两次快照之间:某笔大单在买一挂出后又被撤掉、卖一被连续小单吃掉、某价位出现瞬时价差——这些在快照里会被压缩甚至完全丢失。因此,逐笔数据是策略回测的“原始素材”,快照只能作为辅助校验。
二、逐笔委托与逐笔成交的数据结构
沪深两市的逐笔数据在字段命名和撮合披露上存在差异,但核心结构相通。逐笔委托描述“订单进入市场”的事件,逐笔成交描述“订单被撮合成交”的事件。下图展示了两类数据在时间轴上的事件关系,以及它们如何共同还原出盘口状态。
逐笔委托的典型字段包括:证券代码、委托时间(精确到毫秒或微秒)、委托编号、委托方向(买/卖)、委托价格、委托数量、委托类型(限价/市价/本方最优等)。逐笔成交的典型字段包括:证券代码、成交时间、成交编号、买/卖委托编号、成交价格、成交数量、成交方向(主动买/主动卖)。其中“委托编号”是连接两类数据的关键外键——通过它可以把一笔成交追溯到对应的买方和卖方委托,从而判断这笔成交是主动买入还是主动卖出,以及它消耗了哪个价位的挂单。
需要特别注意两个易错点。第一,沪深两市的“成交方向”披露方式不同:部分数据源直接给出主动买卖标志,部分需要根据成交价与当时买一卖一的关系推断。第二,撤单事件在逐笔委托中通常以“委托类型=撤单”或独立撤单记录出现,回测时必须把撤单从有效挂单中剔除,否则会高估盘口深度。下图中的 t3 撤单正是这类事件。
三、常见数据源与获取方式
高频数据的获取渠道大致分三类。第一类是交易所官方行情,如上交所、深交所的 Level-2 行情,通过券商或行情服务商转发,字段最权威、时序最完整,但通常需要付费授权,且历史数据回溯成本较高。第二类是第三方数据服务商(如聚源、通联、米筐、聚宽等),提供整理后的逐笔数据接口,适合快速验证,但需核对字段口径与交易所原始定义是否一致。第三类是券商柜台或量化平台提供的本地行情落地文件,适合自有服务器长期采集。
获取方式上,实时场景一般通过行情 API 订阅推送,按事件回调写入本地队列;历史场景则通过数据接口按日期批量下载。无论哪种方式,都要关注三个工程细节:一是时间戳基准,统一使用交易所时间而非本地接收时间,避免网络延迟污染时序;二是数据落盘格式,建议按“证券代码+日期”分区存储为 Parquet 或二进制格式,便于回测时按标的快速读取;三是缺失与重复校验,逐笔数据在高峰时段可能出现丢包或重复推送,需用委托编号和成交编号去重。
四、面向回测的最小数据准备
在进入策略回测前,建议先构建一份“事件回放表”,把逐笔委托与逐笔成交按时间戳归并排序,形成单一事件流。回放时维护一个订单簿:委托事件插入或删除对应价位挂单,成交事件扣减对应价位数量。这样得到的盘口状态才是策略真正“看到”的市场。一个可直接参考的字段清单如下:
| 数据类别 | 关键字段 | 回测用途 |
|---|---|---|
| 逐笔委托 | 时间、委托编号、方向、价格、数量、类型 | 重建订单簿、识别撤单 |
| 逐笔成交 | 时间、成交编号、买卖委托编号、价格、数量、方向 | 判断主动买卖、计算成交强度 |
| 快照(辅助) | 买一至卖十价量、时间 | 校验订单簿重建结果 |