一、订单簿数据基础:结构、层级与Tick级特征

做量化交易的朋友都知道,订单簿是市场的「心跳」。我个人做了这么多年高频策略,最深的体会就是——不懂订单簿,就别谈量化交易。今天咱们就来聊聊订单簿的底层逻辑。

1.1 订单簿的核心结构

说白了,订单簿就是一个「排队系统」。买方排一队,卖方排一队。谁出的价高谁排前面,谁要的价低谁先成交。

我习惯把订单簿想象成两本账本:

  • 买单账本(Bid):按价格从高到低排列
  • 卖单账本(Ask):按价格从低到高排列

每一笔订单包含三个核心字段:

{
  "price": 100.50,    // 价格
  "size": 2000,       // 数量(股/张)
  "order_id": "abc123" // 订单编号
}

嗯,这里要注意:不同交易所对订单簿的字段定义略有差异。比如币安会额外记录订单的「时间戳」,而纳斯达克则更关注「订单类型」。我在对接某头部交易所时,就踩过字段映射的坑——他们把「数量」字段叫"volume",而不是常见的"size"。

核心概念:订单簿的本质是「价格-数量」的二维映射。每一档价格上,都堆积着等待成交的订单。

1.2 Level1 / Level2 / Level3 数据区别

很多新手分不清这三个层级。我当年刚入行时也迷糊过,直到亲手处理过几TB的订单簿数据才真正搞明白。

层级 包含内容 数据量 典型用途
Level1 最优买卖价(Best Bid/Ask) 极小 行情展示、简单策略
Level2 多档买卖盘口(通常5-20档) 中等 盘口分析、流动性评估
Level3 全部订单明细(含隐藏订单) 极大 订单流分析、做市策略

Level1 就是「最简版」。只告诉你当前最优的买价和卖价。比如某股票现在买一价100.00,卖一价100.01。够用吗?说实话,做简单策略勉强够,但想深入分析市场微观结构,远远不够。

Level2 是「进阶版」。它会展示多档盘口数据。我记得在开发一个盘口压力策略时,就是靠Level2数据判断「大单压盘」还是「虚挂单」。举个例子:

// 某时刻的Level2数据(5档)
Bids: [
  {price: 100.00, size: 5000},
  {price: 99.99, size: 12000},  // 这里突然多了很多买单
  {price: 99.98, size: 3000},
  {price: 99.97, size: 2000},
  {price: 99.96, size: 1000}
]
Asks: [
  {price: 100.01, size: 4000},
  {price: 100.02, size: 8000},
  {price: 100.03, size: 6000},
  {price: 100.04, size: 3000},
  {price: 100.05, size: 2000}
]

你想想看,如果买二档突然堆了12000手,而卖盘相对稀疏,这说明什么?大概率是有人在护盘或者吸筹。

Level3 是「全量版」。它包含订单簿上每一笔未成交订单的完整信息。我曾经在对接某家交易所的Level3数据时,发现数据量是Level2的50倍以上。处理起来相当吃力,但信息量也是巨大的——你可以精确追踪每一笔订单的「生老病死」。

避坑指南:Level3数据虽然信息丰富,但处理成本极高。我曾经因为没做好数据压缩,导致服务器内存直接爆掉。建议先评估自己的硬件能力,再决定是否接入Level3。

1.3 Tick级数据特征

Tick级数据,说白了就是「每一笔成交」的记录。它和订单簿数据是「表亲」关系——订单簿反映的是「挂单状态」,而Tick数据反映的是「成交结果」。

一个典型的Tick数据长这样:

{
  "timestamp": 1623456789.123456,  // 精确到微秒
  "price": 100.50,
  "size": 100,
  "side": "buy",                   // 主动买还是主动卖
  "trade_id": "trade_001"
}

我个人觉得,Tick数据有三个最值得关注的特征:

  • 时间精度极高:通常到微秒甚至纳秒级。我在做订单簿重建时,时间戳的精度直接决定了重建的准确性。
  • 成交方向:区分「主动买」和「主动卖」。这能帮你判断谁在主导市场。
  • 连续性与突发性:Tick数据有时很稀疏(几秒一笔),有时又密集到毫秒级几十笔。

为什么会这样?因为市场在平静期和波动期的行为完全不同。我记得有一次做回测,发现策略在平静期表现很好,但一到数据爆发期就频繁出错。后来排查发现,是Tick数据的时间戳处理逻辑没做好——微秒级的并发事件被错误排序了。

经验之谈:处理Tick数据时,一定要关注「事件顺序」。我建议使用单调递增的序列号来辅助排序,光靠时间戳不够保险——同一微秒内可能发生多笔交易。

1.4 知识体系总览

下面这张图是我自己整理的订单簿数据知识体系。你可以把它当作本章的「地图」:

订单簿数据 核心结构 买单账本(Bid) 卖单账本(Ask) 价格-数量映射 数据层级 Level1:最优买卖价 Level2:多档盘口 Level3:全量订单 Tick级特征 高精度时间戳 成交方向判定 连续性与突发性 数据压缩与恢复策略的基础

这张图把订单簿数据拆成了三个维度:结构、层级和Tick特征。我个人觉得,理解这三者的关系是后续学习压缩与恢复策略的前提。你想想看,如果连数据长什么样都不清楚,怎么谈压缩?

本章小结:订单簿数据是量化交易的「原材料」。Level1够简单但信息有限,Level2是大多数策略的「甜区」,Level3信息最全但处理成本最高。Tick数据则是市场的「心跳记录」,时间精度和成交方向是它的灵魂。


蓝海数据掘金营,专注资料整理