第3章:Level2数据解密:数据结构总览

说实话,刚接触Level2数据的时候,我也挺懵的。

一堆字段、几种不同的数据类型、还有各种存储格式……说白了,就像给你一堆乐高零件,但没给图纸。这一章,我就带你把这堆零件理清楚,看看它们到底长什么样、怎么拼在一起。

3.1 核心字段解析:四个关键数据流

Level2数据里,最核心的其实是四个东西:逐笔成交、逐笔委托、委托队列、资金流向。我当年在搭建实盘回测系统时,就是靠这四个字段把盘口逻辑串起来的。

3.1.1 逐笔成交

这个最简单,也最直观。每一笔真实的成交记录,都会生成一条数据。它告诉你:什么时间、什么价格、成交了多少手、是主动买还是主动卖。

字段含义示例
时间精确到毫秒09:30:01.250
价格成交价10.25
数量成交手数200
方向主动买/主动卖B / S
我的经验:逐笔成交是判断主力意图的第一手资料。我曾经靠它抓过一次尾盘偷袭,那笔单子虽然只有300手,但连续3笔都是主动买,第二天果然高开。

3.1.2 逐笔委托

这个比成交更早一步。它记录的是每一笔挂单的提交和撤销。说白了,就是「谁想买、谁想卖、挂了多少、后来撤了没」。

  • 委托时间:挂单进入交易所的时间
  • 委托价格:挂单价格
  • 委托数量:挂单手数
  • 委托方向:买 / 卖
  • 委托状态:已成交 / 已撤销 / 部分成交
注意:逐笔委托的数据量非常大。一只活跃股票一天可能产生几十万条委托记录。我建议你按日期分片存储,否则查询会慢到怀疑人生。

3.1.3 委托队列

这个字段很多人容易忽略,但它其实特别有用。委托队列展示的是买一和卖一的前50档挂单明细。你可以看到:谁在排队、排了多少、有没有大单在顶。

举个例子:如果卖一位置突然出现一笔5000手的卖单,但价格没变,那大概率是有人在压盘。我曾在一次量化策略中,利用委托队列的「撤单率」来识别虚假挂单,效果还不错。

3.1.4 资金流向

资金流向其实是基于逐笔成交计算出来的。它把成交按「主动买」和「主动卖」分类,然后统计净流入/流出。

  • 主力净流入:大单主动买入 - 大单主动卖出
  • 散户净流入:小单主动买入 - 小单主动卖出
  • 超大单:单笔成交 >= 500手
核心逻辑:资金流向不是「谁买了多少」,而是「谁在主动买」。这个区别很重要,我见过不少新手把两者搞混。

3.2 数据存储格式:CSV vs Parquet

数据拿到了,怎么存?这是个现实问题。我个人习惯用两种格式:CSV 和 Parquet。各有各的适用场景。

3.2.1 CSV:简单但慢

CSV 的好处是通用、可读性强。随便一个文本编辑器就能打开。但缺点也很明显:

  • 文件体积大(尤其是逐笔委托这种高频数据)
  • 读取慢(没有索引,必须全量扫描)
  • 不支持复杂数据类型(比如时间戳只能存字符串)

我一般只在调试阶段用 CSV,或者数据量小于 100MB 的时候。

3.2.2 Parquet:高效但需要工具

Parquet 是列式存储格式,压缩率高、读取快。同样是100万条逐笔成交数据,CSV 可能要 50MB,Parquet 只要 10MB 左右。

  • 支持按列读取(只读你需要的字段)
  • 内置压缩(snappy、gzip 等)
  • 支持复杂数据类型(时间戳、嵌套结构)
建议:生产环境用 Parquet,分析环境用 CSV。我自己的回测系统,每天的数据量在 2GB 左右,用 Parquet 存储后,查询速度提升了至少 5 倍。

3.3 读取方法:Python 实战

下面给两个简单的读取示例。你直接复制就能用。

3.3.1 读取 CSV

import pandas as pd

# 读取逐笔成交CSV
df = pd.read_csv('trade.csv', parse_dates=['time'])
print(df.head())

3.3.2 读取 Parquet

import pandas as pd

# 读取逐笔委托Parquet
df = pd.read_parquet('order.parquet')
print(df.info())
注意:读取 Parquet 需要安装 pyarrow 或 fastparquet。我推荐用 pyarrow,兼容性更好。

3.4 知识体系总览

下面这张图,是我自己画的数据结构总览。你可以把它当作本章的「地图」。

Level2 数据结构 逐笔成交 逐笔委托 委托队列 资金流向 CSV Parquet HDF5 数据库 pandas.read_csv() pandas.read_parquet() 核心字段 → 存储格式 → 读取方法

嗯,这张图基本把本章的内容串起来了。你从中心往外看,先理解四个核心字段,再决定用什么格式存,最后用对应的工具读出来。

一句话总结:Level2 数据的核心是「逐笔成交、逐笔委托、委托队列、资金流向」四个字段。存储上,小数据用 CSV,大数据用 Parquet。读取就用 pandas,简单直接。
专注资料整理