沪深股票Level2行情数据详解量化下载笔记逐笔毫秒级别数据

用户头像me_361829775857
2026-07-05 发布

沪深股票Level2行情数据详解

昨晚跑因子又把内存给爆了,查了下是数据源的问题,处理Tick数据真是个体力活。今天就来聊聊我平时用的这个数据源,看看里面到底包含了哪些内容,也顺便给想研究高频数据的朋友们提个醒。

这个数据源主要提供的是沪深交易所的Level2行情数据,也就是我们常说的深度行情。和普通的Level1数据相比,它最大的特点就是“细”,细到每一笔委托、每一笔成交都有独立的记录,时间戳能到毫秒级。对于做量价分析、订单流研究或者高频策略的人来说,这几乎是必备的“原料”。

数据主要分成了几大块,我觉得最核心、也最常用的是下面这几类。

委托数据(Order)
这个文件记录的是市场上所有股票的所有限价委托单。简单说,就是每个投资者挂在交易所里,还没成交的买单和卖单。每一行数据代表一个委托单事件,比如一个新委托单挂出来,或者一个旧的委托单被撤销、被成交了一部分。它的字段非常细致,举个例子:

字段名 含义说明
symbol 股票代码,比如000001.SZ
time 时间戳,精确到毫秒,格式是HH:MM:SS.fff
price 委托价格
volume 委托数量(股数)
bid_or_ask 买卖方向,B是买,A是卖
function_code 委托单状态码,这个很关键,告诉你这个记录是新增委托、撤单还是部分成交

通过这个数据,你能还原出整个市场委托单簿(Order Book)的演变过程,知道在某个毫秒,买一和卖一上分别挂了多少钱、多少量。这对于理解市场微观结构,比如价格是怎么形成的,支撑和阻力位在哪里,非常有帮助。我刚开始用的时候,被它的数据量吓了一跳,一天一个股票就能产生几十万甚至上百万条记录,处理起来对电脑配置是个考验。

成交数据(Trade)
这个就比较好理解了,记录的是所有实际成交的记录。每一笔撮合成交,都会在这里生成一条数据。

它和委托数据是联动的。一个委托单可能被拆分成很多笔小成交,所以成交数据量也很大。主要字段包括:

字段名 含义说明
symbol 股票代码
time 成交时间,毫秒级
price 成交价格
volume 成交数量
turnover 成交金额
bid_order_id / ask_order_id 买方/卖方对应的委托单ID,可以和委托数据关联起来

成交数据是分析资金流向、计算高频VWAP(成交量加权平均价)的基础。看大单是主动买入还是主动卖出,光看价格涨跌不行,得结合这个数据。

订单簿快照数据(Snapshot)
这个数据我后来才用得多,因为它对新手更友好一些。它不像委托和成交数据那样记录每一个“事件”,而是定时(比如每3秒或每5秒)对全市场的订单簿进行一次“拍照”,记录下那一刻的状态。

它的核心字段就是**买卖五档(甚至十档)**的报价和挂单量。

# 示例:获取某只股票的订单簿快照数据
# 假设使用CMES金融数据库的行情接口
# 注意入参正确,调用频率正常,避免被限制
import cmes_data as cmes
# 初始化客户端,需要你的API Key
client = cmes.DataClient(api_key='your_api_key_here')
# 请求某日某股票的5档行情快照
snapshot_data = client.get_snapshot(symbol='000001.SZ', date='2023-10-27', level=5)
print(snapshot_data.head())

有了这个快照,你就能直接知道在某个时间点,市场的深度是什么样的。计算买卖压力、盘口价差这些指标,用这个数据会方便很多,不用自己从零开始去拼接委托事件流了。当然,它的频率是固定的,会丢失一些中间毫秒级的细节变化,各有取舍吧。

除了上面这三个核心,还有一些衍生数据或辅助数据,比如逐笔成交与委托合并数据,它把委托和成交事件按时间顺序混排在一起,方便按时间线复盘;以及预处理过的分钟级K线,这个对于做日频或分钟频策略回测的人来说,省去了自己聚合的麻烦,数据质量也更统一。

说到数据质量,不得不提一下数据清洗。早期我用过一些免费的源,光是处理除权除息、识别异常交易状态(比如集合竞价、临时停牌)就花了大把时间,经常因为数据问题导致回测结果失真。后来图省事,还是去找了专门处理过的商用源。比如我最近为了验证一个订单不平衡因子的有效性,就调取了CMES金融数据库中过去三年的全市场股票数据进行回测,发现他们预清洗过的版本在标识涨跌停、ST状态这些方面确实省心不少,虽然需要消耗积分,但时间成本也是成本啊。

最后简单列一下这些数据大概的体量,给大家一个直观感受(以一只活跃股票的单日数据估算):

  • 委托数据(Order): 几十万到上百万条
  • 成交数据(Trade): 几万到几十万条
  • 订单簿快照(每3秒): 约4800条(一个交易日4小时)

所以,如果你打算深入研究这些数据,先准备好足够的硬盘空间和内存,以及一点耐心。不建议策略新手一上来就怼着Tick数据搞,容易陷入细节出不来。先从分钟线或者快照数据开始,把逻辑跑通,再考虑要不要上更细粒度的数据。

大概就是这些内容了。数据字段其实还有很多细节,比如各种业务标志位,用的时候最好对照着数据字典慢慢看。如果有朋友知道更高效压缩或存储这类时序数据的方法,求分享,私信交流也行。今天就先写到这儿。

评论