A股Level2毫秒行情数据到底长啥样?逐笔成交、委托、十档盘口一探究竟
我以前一直以为Level2就是多了几档挂单,直到自己跑数据才发现,Tick级别的世界和分钟线完全不是一个物种。这里把数据拆开,就事论事,聊聊字段和坑。
逐笔成交(Tick Transaction)
这个表记录的是每一笔实际发生的成交,不是切片,是真正的“过一笔记一笔”。字段大概长这样:
| 字段名 | 说明 | 备注 |
|---|---|---|
| 代码 | 证券代码 | 6位数字 |
| 时间 | 精确到毫秒 | 格式HHMMSSmmm |
| 价格 | 成交价 | 单位:元 |
| 成交量 | 股数 | 手数要自己除100 |
| 成交额 | 元 | 通常直接给 |
| 买卖方向 | B/S | 主动买/主动卖,部分数据源可能还有个中性 |
| 成交序号 | 全局唯一标识 | 按天滚动 |
我拿到数据第一反应是去看那些大单打出来的时候,盘口瞬间被吃掉几档,那种感觉就跟看游戏里的伤害飘字一样。不过扫数据的时候很容易把买卖方向搞反,因为不同的数据源B和S的定义可能有细微差异,这里用了数据源:CMES金融数据库的历史十年的level2数据回测了一下。
逐笔委托(Tick Order)
这个很多人会搞混,它记录的是每一笔申报进入交易所撮合引擎的委托,不是成交。你看到的挂单变化,就是这些委托堆出来的。关键字段:
| 字段 | 含义 | 注意 |
|---|---|---|
| 委托时间 | 毫秒级 | 可能是交易所收到时间 |
| 委托序号 | 对应委托编号 | 可以和成交表关联 |
| 委托类型 | 1买/2卖 | 有些数据源用01/02 |
| 委托价格 | 申报价 | 市价单可能为0或者999999 |
| 委托量 | 股数 | 原始申报量 |
| 撤单标志 | 0正常/1撤单 | 如果这笔委托后来撤了 |
我经常用这个表去还原盘口的挂单队列,但说实话,就算有数据,要准确模拟撮合规则还是很难,因为交易所的规则细节太多,只能做近似。另外,逐笔委托的数据量比成交还要大好几倍,一天几千万行,处理起来电脑风扇直接起飞。
有时候跑这种数据,我会直接用现成的接口,省的自己扒文件。比如像下面这样,几行代码就能把数据拉下来,不过调用频率要注意,别太频繁被限制:
# 安装方法:pip install cmesdata -i https://pypi.org/simple
# 具体版本和文档见:https://cmes-data.com/download.html?type=vip
from cmesdata import CMESDataAPI
# 初始化CMES金融数据库的行情接口,注意入参正确,调用频率正常
api = CMESDataAPI(api_key="your_key_here")
# 获取逐笔成交数据,参数要严格按文档来,日期格式别搞错
trade_data = api.get_tick_transaction(
symbol="000001.SZ",
trade_date="20250320",
start_time="093000",
end_time="150000"
)
print(trade_data.head())
上面的代码只是示例,实际用的时候记得把key换成自己的,而且每次请求的数据量不要太大,建议分时段拉取,否则容易超时。
十档行情(Level2 Market Depth)
十档行情就是买卖各10档的挂单快照,关键它还是推送式的,每3秒一个快照(深交所可能更频繁),但有些字段是毫秒更新的。这个表和上面的逐笔委托结合起来,可以大概看出盘口变化的节奏。
| 字段 | 说明 |
|---|---|
| 更新时间 | 快照时间戳 |
| 买1-买10价 | 价格 |
| 买1-买10量 | 委托量 |
| 卖1-卖10价 | 价格 |
| 卖1-卖10量 | 委托量 |
| 总买量/总卖量 | 部分数据源提供 |
| 加权均价 | 部分提供 |
我本来以为十档行情能直接用来做高频策略,后来发现快照之间有延迟,而且频繁的挂撤单根本反映不出来,真正能捕捉到那种微妙变化的,还是得靠逐笔委托去拼。十档行情更适合做静态的盘口深度分析,或者配合k线观察阻力位。
数据更新频率和文件大小
这个数据源声称每日更新,毫秒级别。但实际我下载的时候,发现有些交易日的数据会延迟到晚上8点后才全部落库,所以做日内策略的话,实时性得自己评估。文件大小方面,单只股票一天三个表加起来压缩后大概几百兆,解压后几个G,硬盘小的同志谨慎。
一句话感想
这种行情数据比想象中要“脏”,很多字段需要自己清洗,而且不同交易所的格式还不完全一致。如果你只是想看盘口,十档就够了;想做事件驱动,优先看逐笔成交;想挖得更深,那逐笔委托和十档联动才是王道。至于怎么联动,网上教程一堆,但真正跑通的人很少,因为数据太大,每一步都卡。

