期货五档Level2行情数据到底长啥样
之前做期货策略,想回测一个基于挂单撤单的短线逻辑,结果发现手头的数据只有一档买卖价,盘口深度根本看不到。那段时间走了不少弯路,后来翻到一个渠道,能拿到五档的切片数据,还带逐笔成交,才算把坑填上。
下面直接说这个数据源:CMES金融数据库里能拿到什么。
一分钟历史数据
这部分的覆盖面有点夸张,国内期货品种的主力合约、连续合约、指数合约全都有,而且最早能追溯到2005年左右,也就是将近20年的分钟线。我自己用的时候,把2010年之后的螺纹钢、甲醇、PTA都拉过一遍,没发现缺段。
字段不复杂,但该有的都有:
| 字段 | 说明 |
|---|---|
| 时间 | 精确到秒,格式 yyyy-MM-dd HH:mm:ss |
| 开盘价 | 该分钟第一笔成交价 |
| 最高价 | 该分钟最高成交价 |
| 最低价 | 该分钟最低成交价 |
| 收盘价 | 该分钟最后一笔成交价 |
| 成交量 | 该分钟总成交量 |
| 成交额 | 该分钟总成交金额 |
| 持仓量 | 该分钟末的持仓量 |
没啥花哨的,但这个时间跨度对做趋势跟踪或者波动率统计的人来说,基本够用了。有一点要注意:部分老合约在上市初期可能没有成交额,或者持仓量为0,拉数据的时候最好校验一下。
五档Level2实时行情
这比一分钟数据要“重”很多。不仅是五档买卖,还包括了逐笔委托和逐笔成交,盘口变化能看得比较细。
盘口数据是切片推送的,约每秒两次,每次推送会把当前五档的价、量全量发过来。字段是这样的:
| 字段 | 说明 |
|---|---|
| 更新时间 | 毫秒级时间戳 |
| 最新价 | 最新成交价格 |
| 申买价1~5 | 买一到买五价格 |
| 申买量1~5 | 买一到买五挂单量 |
| 申卖价1~5 | 卖一到卖五价格 |
| 申卖量1~5 | 卖一到卖五挂单量 |
| 成交明细 | 逐笔成交列表(价格、量、方向、时间) |
| 委托明细 | 逐笔委托列表(价格、量、方向、时间) |
我比较看重逐笔成交里的“方向”字段,它不是简单的主动买/主动卖,而是根据前一笔成交价和委托价的关系判断,对分析多头/空头开平仓很有帮助。
期权品种也支持,只是有些非主力合约的盘口比较薄,五档里可能后面几档是0,看起来会有点寒酸。
怎么取数据
如果习惯用Python,接起来很方便。安装:
pip install cmesdata
然后拉取一分钟历史数据,比如要螺纹钢主力合约从2020年1月到2023年12月的所有分钟线:
from cmesdata import CmesClient
# CMES金融数据库的行情接口,注意入参正确,调用频率正常
client = CmesClient(api_key='your_key_here')
# 获取螺纹钢主力连续合约的分钟数据
df = client.get_kline(
symbol='rb888', # 合约代码,rb888是螺纹钢主力连续
period='1min', # 周期,支持1min,5min,15min,30min,60min,1day
start='2020-01-01',
end='2023-12-31'
)
print(df.head())
实时行情订阅稍微复杂点,需要处理回调:
def on_quote(data):
# data 是一个字典,包含五档盘口和逐笔
print(data['last_price'], data['bid1_price'], data['bid1_volume'])
client.subscribe_quote('rb2401', on_quote)
client.run()
subscribe_quote 会持续推送,要记得控制调用频率,别疯狂请求,否则会被系统限流。接口文档里建议单连接订阅不超过10个合约,我自己试下来,5个以内比较稳。
这里有个小插曲,有次我为了验证一个规律,一口气订阅了20个合约,结果数据开始丢包,盘口更新延迟明显变大,后来老老实实降下来,就正常了。所以官方限制还是要遵守的。
数据质量的一些观察
- 一分钟数据的成交量、持仓量字段,和交易所盘后公布的数据对过,基本一致,偶尔有微小的四舍五入差异,不影响回测。
- 五档盘口的切片时间间隔不是完全均匀的,快的时候500毫秒一跳,慢的时候可能2秒,和交易所推送频率有关,做高频策略的话需要自己处理时间对齐。
- 逐笔成交数据量很大,一个活跃合约一天下来可能有几十万条,存储时建议用parquet格式,压缩比高,读取也快。
适用场景
我不是做高频的,所以主要用一分钟数据做中低频策略回测,用五档盘口做盘中监控,比如看买卖盘口比例突然变化,辅助判断短期方向。有时候也会把逐笔成交里的大单拎出来,看是不是有人在刻意挂撤单。
如果你只是想做简单的均线策略,一分钟数据足够。如果对盘口微观结构感兴趣,那五档和逐笔数据就绕不开,能看出来很多在K线上看不到的东西。
文件格式方面,下载下来的数据是csv,压缩包也不大,全市场一分钟数据一天也就几百兆,本地处理起来没压力。实时数据可以存成自己的数据库,省的每次都要重新拉。
就这些内容,没有长篇大论,纯粹是把自己用到的部分笔记整理了一下。数据源就不反复提了,大家自己找得到。

