1. 订单簿基础:Level1与Level2数据区别、买卖盘口结构、Tick级数据特征
做高频交易,第一关就是搞懂订单簿。说白了,订单簿就是交易所里那个实时更新的「挂单大屏」。我刚开始接触这个领域时,以为就是看看买一卖一的价格,结果第一次回测就被真实数据狠狠教育了一顿。嗯,今天咱们就把这个基础打扎实。
1.1 Level1 与 Level2:一个看表面,一个看内里
先问个问题:你在普通交易软件上看到的行情,和量化机构用的行情,是一回事吗?
当然不是。这里就要区分两个概念:Level1 和 Level2。
| 对比维度 | Level1(浅层数据) | Level2(深度数据) |
|---|---|---|
| 数据深度 | 仅最优买卖盘口(买一、卖一) | 多档位盘口(通常 5-10 档甚至全量) |
| 更新频率 | 快照式,秒级或百毫秒级 | 逐笔事件驱动,微秒级 |
| 信息量 | 价格、成交量、涨跌幅 | 每档挂单量、委托编号、买卖方向 |
| 典型用途 | 散户看盘、简单策略 | 高频策略、订单流分析、做市 |
我个人习惯把 Level1 比作「冰山一角」。你只能看到海面上那一小块,但水下藏着多大的体积,你完全不知道。而 Level2 就是给你一副透视镜,让你看清整个冰山的轮廓。
核心观点:高频交易必须用 Level2 数据。用 Level1 做高频,就像蒙着眼睛开车。
1.2 买卖盘口结构:订单簿的骨架
订单簿的结构其实不复杂。你可以把它想象成一个「价格-挂单量」的二维表格。买盘在左边,卖盘在右边,中间是当前最新成交价。
举个例子,某时刻的 BTC/USDT 订单簿长这样:
卖五: 50000.00 (12.3 BTC)
卖四: 49990.00 (8.1 BTC)
卖三: 49980.00 (15.7 BTC)
卖二: 49970.00 (5.2 BTC)
卖一: 49960.00 (10.0 BTC)
-------------------------------
最新成交价: 49955.00
-------------------------------
买一: 49950.00 (20.5 BTC)
买二: 49940.00 (7.8 BTC)
买三: 49930.00 (3.2 BTC)
买四: 49920.00 (11.4 BTC)
买五: 49910.00 (6.6 BTC)
这里面有几个关键指标,我在项目中经常用到:
- 买卖价差(Spread):卖一价 - 买一价。价差越小,流动性越好。我记得有一次做 ETH 的做市策略,价差突然从 0.01 扩大到 0.05,我立马暂停了策略——这往往是剧烈波动的先兆。
- 深度(Depth):每个价位上的挂单总量。深度越厚,价格越难被推动。
- 订单簿不平衡(Order Book Imbalance):买盘总量 vs 卖盘总量。这个指标我用来判断短期方向,准确率还不错。
小技巧:别只看买一卖一。有时候买二到买五的挂单突然撤掉,比买一的变化更有信号意义。这叫「冰山订单」的伪装。
1.3 Tick 级数据特征:高频交易的「心跳」
Tick 数据,就是每一笔成交或每一次订单簿变化的记录。它不像 K 线那样聚合,而是原汁原味的市场微观结构。
一个典型的 Tick 数据长这样:
时间戳: 2024-01-15 09:30:00.123456
类型: 成交
价格: 49955.00
数量: 0.5 BTC
方向: 主动卖出
或者:
时间戳: 2024-01-15 09:30:00.123789
类型: 挂单
价格: 49960.00
数量: 2.0 BTC
方向: 卖盘新增
Tick 数据有几个特征,你想想看:
- 高频爆发性:行情平静时可能几秒才一个 Tick,但突发事件时,一秒钟能涌进来几百个 Tick。我处理过最极端的一次,某币种在 1 秒内产生了 2000+ 个 Tick,直接把我的本地队列撑爆了。
- 时间戳精度:交易所给的时间戳通常是微秒级(μs)甚至纳秒级(ns)。但要注意,不同交易所的时间戳含义不同——有的是「到达交易所时间」,有的是「撮合完成时间」。这个坑我曾经踩过,导致回测结果和实盘差了十万八千里。
- 数据冗余:Tick 数据里有很多「噪音」。比如同一个价格上反复挂单、撤单,其实对策略没有意义。所以清洗的第一步,就是去重和过滤。
避坑指南:我曾经以为 Tick 数据越多越好,结果把全量数据喂给模型,训练速度慢得像蜗牛,而且过拟合严重。后来我学会了「降采样」——只保留关键事件(如价格变动、大单成交),效果反而更好。
1.4 知识体系总览
下面这张图,是我自己梳理的订单簿数据知识框架。你可以把它当作本章的「地图」:
这张图把整个知识体系串起来了。从数据层级出发,到具体的结构和特征,最后落到清洗目标上。你每次做数据清洗前,都可以对照这张图,问问自己:我现在处理的是 Level1 还是 Level2?我需要关注哪些指标?
我的习惯:每次拿到新的交易所数据,我会先画一张类似的图,把数据字段、更新频率、时间戳格式都标出来。磨刀不误砍柴工,这一步能省掉后面 80% 的 debug 时间。
公众号:蓝海资料掘金营,微信deep3321