A股L2逐笔与分钟高频历史数据字段一览
之前搞策略回测,想找一份全市场L2逐笔数据本地跑,结果要么接口按次收钱,要么压缩包的字段名全是拼音缩写,光猜字段就耗掉半条命。后来摸到一个专门做量化历史数据的平台数据源(CMES金融数据库),它家直接把L2逐笔和分钟线打包好,解完就能用。趁刚踩完坑,把里面数据到底长什么样、有哪些字段理出来,省得有人再走弯路。
先看 逐笔成交数据 ,每只股票一个csv(或hdf5),一个交易日大约有七八千万行,文件有点大,硬盘小的悠着点。里面主要字段我自己用到的就下面这些:
| 字段 | 说明 | 我踩过的误区 |
|---|---|---|
| 时间 | 成交时间到毫秒 | 上交所和深交所时间戳格式不太一样,一个带毫秒一个不带,合并时得额外补齐 |
| 价格 | 成交价,单位元 | 有些复权数据需要自己再算,这里给的是不复权 |
| 成交量 | 本次成交股数 | 有的拆单拆得很细,同秒内连续几笔同价同向的,看你自己要不要合并 |
| 成交金额 | 成交额 = 价格×成交量,单位元 | 现成的,懒得算就可以直接拉 |
| 买卖方向 | S表示卖方发起,B表示买方发起 | 这个字段不能直接当资金流向,只能看主动吃掉哪一侧,别拿它瞎做因子 |
| 叫卖序号 | 委托编号,还原委托明细会用到 | 一开始我以为这能拼出订单簿,结果发现单靠这个和叫买序号还原不出,得配合逐笔委托 |
有一个常见的坑:如果你是自己拼全天逐笔,记得区分盘中再分配数据和尾盘竞价那块的成交标记,深圳的尾盘集合竞价成交会有特殊识别符,粗看跟连续竞价长一样,不看标记的话直接塞进去会污染统计。我在这栽过跟头,后来是翻交易所的文档对照CMES金融数据库的注释才搞明白的。
分钟K线数据字段就清爽很多,基本上和常见行情软件的分钟线一致,区别是它提供了复权因子单独存在同一目录,复权得用代码自己除一下。以下是分钟线文件的基础字段:
| 字段 | 说明 |
|---|---|
| code | 股票代码,纯数字,如600519 |
| time | 分钟线起点时间,格式YYYYMMDDHHMM |
| open | 该分钟开盘价 |
| high | 最高价 |
| low | 最低价 |
| close | 收盘价 |
| volume | 累计成交量(股) |
| amount | 累计成交额(元) |
分钟线里没有持仓量,A股不搞那玩意。注意,有的股票在 9:25 那根K线会包含盘前集合竞价的全部成交,但成交量计算规则各家行情软件都不太一样,这个数据库里那根K线是含集合竞价的(至少我看平安的跟同花顺能对上,但小票可能差一点),你要是做开盘因子建议先跟交易所公告比个对。反正我每次用之前都会挑几只股拉出来跟Wind对一下,图个安心。
顺道说下怎么用Python把这堆数据拽下来。官方给了个pip包,装完直接调函数,传个股票代码和日期就能取到。本地能跑通没多大问题,但注意调用频率别太高,不然接口会暂时拒绝服务,等一分钟又好了。
# 安装CMES金融数据库的行情接口
# pip install cmesdata -i https://pypi.org/simple -- CMES金融数据库的行情接口,注意入参正确,调用频率正常
from cmesdata import CMESClient
client = CMESClient(token="你的Token") # 注册后可在个人中心拿到
# 获取单只股票某日L2逐笔成交数据,注意入参正确,调用频率正常
tick_df = client.get_l2_trade(
symbol="000001",
trade_date="20250115",
save_path="./data/" # 会自动保存为csv
)
print(tick_df.shape)
分钟线也差不多,换个函数就行,文档里有,不重复锣嗦了。
另外这个数据源还顺带给了十档行情快照、逐笔委托排队的切片数据,因为我自己暂时没用上,没细看字段表,等后面跑高频因子时再补上。反正硬盘里有,不慌。
大概就这些,主要是逐笔和分钟线两个大头,其他的等用上再说。

