1. 课程导入

在量化交易、行情终端开发、交易系统风控与数据服务等场景中,行情数据是所有决策的起点。很多初学者会把“行情”简单理解为屏幕上跳动的价格,但真正进入工程与策略环节后,必须回答三个更具体的问题:数据以什么粒度到达?每个字段代表什么含义?这些字段在撮合、回测、风控和信号计算中如何被正确使用。本课程围绕Tick数据与Level2行情展开,目标不是停留在概念背诵,而是建立一套可落地的字段体系认知与实战处理方法。

一、Tick与Level2的基本定义

Tick通常指市场在某一时刻产生的一次行情快照或成交事件。它可以是逐笔成交、逐笔委托,也可以是按固定时间间隔切片后的快照。Tick的核心特征是“带时间戳的最小可观测市场状态变化”。在A股、期货、期权、港股、等不同市场中,Tick的具体形态不同:有的市场提供逐笔委托与逐笔成交,有的市场只提供快照,有的市场对快照频率有明确限制。

Level2行情是相对于Level1而言的更深层行情。Level1一般只包含最优一档买卖价格与数量、最新价、成交量等基础字段;Level2则通常包含十档或多档买卖盘、逐笔成交、逐笔委托、委托队列、撤单信息等更细粒度数据。Level2的价值在于:它让研究者能够观察“价格背后的订单行为”,而不仅仅是价格结果。

理解顺序建议:先区分“快照”与“逐笔”,再区分“Level1”与“Level2”,最后落到具体字段。字段不是孤立存在的,它们共同描述订单簿的状态变化。

二、核心原理:从订单簿到字段体系

交易所撮合系统本质上维护一个订单簿:买方按价格从高到低排列,卖方按价格从低到高排列。每一笔新委托、成交、撤单都会改变订单簿。Level2行情字段体系,就是对这个变化过程的结构化表达。常见字段可以按功能分为四类:

  • 标识类:证券代码、交易所、市场类型、频道号、消息类型。
  • 时间类:交易所时间戳、本地接收时间、时间精度、时区。
  • 价格与数量类:最新价、开盘价、最高价、最低价、成交量、成交额、买卖各档价格与数量。
  • 订单行为类:逐笔成交方向、委托编号、撤单编号、委托类型、订单队列位置。

这些字段并非简单罗列,而是存在严格的状态依赖关系。例如,逐笔成交中的“买方委托编号”和“卖方委托编号”可以关联到之前的逐笔委托;买卖盘十档数据则反映某一时刻订单簿的聚合状态。若忽略这种依赖关系,只把字段当作独立列读取,就容易在回测中产生“未来函数”或错误撮合。

Tick与Level2字段体系:从市场行为到结构化字段 逐笔委托 新增/撤单/委托类型 逐笔成交 价格/数量/买卖方向 快照行情 十档/最新价/总量 字段功能分层 标识与时间 代码/频道/时间戳 精度/时区/序号 价格与数量 最新/开高低收 成交量/成交额 订单簿状态 买卖十档 委托队列/撤单 行为与关联 委托编号 成交方向/关联键

三、方法流程:如何学习与解析字段体系

本课程采用“定义—字段—场景—复盘”的闭环方法。具体学习流程如下:

  1. 建立数据字典:先整理目标市场的行情接口文档,把每个字段的名称、类型、单位、精度、空值含义记录下来。
  2. 构造最小样本:用一小段真实或模拟数据,逐条打印字段,观察同一证券在连续Tick中的变化。
  3. 还原订单簿:根据逐笔委托与逐笔成交,尝试重建买卖盘,验证字段之间的因果链。
  4. 编写解析代码:用Python或C++实现二进制/文本协议解析,输出结构化DataFrame或对象。
  5. 场景验证:把解析结果用于简单信号计算,如盘口失衡、大单跟踪、撤单率统计,检查是否符合市场直觉。
  6. 复盘纠错:对比交易所官方数据或第三方终端,定位字段误读、时间对齐错误、单位换算错误。

下面是一个字段解析的伪代码示例,展示如何把原始消息映射为结构化记录:

# 伪代码:Level2逐笔成交字段解析
raw = {
    "msg_type": "TRADE",
    "symbol": "600519.SH",
    "exchange_time": "2024-06-03 09:30:00.123456",
    "price": 1688.50,
    "volume": 200,
    "side": "BUY",
    "bid_order_id": "B1024",
    "ask_order_id": "S2048"
}

record = {
    "symbol": raw["symbol"],
    "ts": parse_exchange_time(raw["exchange_time"]),
    "price": raw["price"] / 10000.0,   # 根据接口精度换算
    "volume": raw["volume"],
    "side": raw["side"],
    "bid_id": raw["bid_order_id"],
    "ask_id": raw["ask_order_id"]
}
print(record)

四、案例与场景:字段体系在实战中的价值

假设我们要研究“涨停板打开前的盘口特征”。如果只有Level1数据,只能看到最优一档的买一价与买一量,无法判断买一队列中是否存在大量撤单,也无法观察卖盘十档的挂单分布。引入Level2后,可以观察:买一队列的委托笔数变化、逐笔成交中主动买入的占比、卖十档的挂单厚度、以及撤单消息是否集中在买一附近。这些字段组合起来,才能形成更可靠的判断。

场景 关键字段 常见用途
盘口失衡分析 买卖十档价格与数量 计算订单簿不平衡度,辅助短周期信号
大单跟踪 逐笔成交价格、数量、方向 识别主动大单,统计大单净流入
撤单行为研究 逐笔委托中的撤单编号、原委托编号 计算撤单率,识别虚假挂单
回测撮合 逐笔成交、委托队列、时间戳 模拟更真实的成交顺序与滑点
风控监控 最新价、成交量、盘口深度 监控流动性骤降与价格异常波动

五、常见误区与复盘要点

误区一:把快照当逐笔。快照是聚合结果,逐笔是事件流。用快照做撮合回测,容易高估成交概率。

误区二:忽略时间精度。交易所时间戳与本地接收时间不同,跨市场对齐时若不统一时区与精度,会产生毫秒级甚至秒级偏差。

误区三:字段单位不统一。价格可能以“分”或“厘”为单位,数量可能以“股”或“手”为单位,未换算直接计算会导致数量级错误。

误区四:只看单条消息。Level2字段的价值在于序列关系,单条逐笔成交脱离委托上下文后,信息量会大幅下降。

复盘时建议建立一张“字段问题清单”:记录每个字段的原始含义、解析后的值、验证方式、发现的问题与修正结果。随着课程推进,这张清单会成为你个人或团队的数据字典,也是后续策略开发与系统对接的基础资产。

本课程后续将围绕逐笔委托、逐笔成交、快照、委托队列、撤单、时间对齐、数据清洗、订单簿重建、回测撮合与实战案例逐步展开。第1章的目标是让你先建立全局地图:Tick与Level2不是一堆孤立字段,而是一套描述市场微观结构的语言。掌握这套语言,才能在量化研究与交易系统开发中做出更准确的判断。