期货Level2分钟行情数据,到底能拿来干嘛?

用户头像sh_***51995lIM1
2026-08-27 发布

期货Level2分钟行情数据,到底能拿来干嘛?

之前一直想自己拼一套分钟线的资金流指标,结果卡在数据源上,折腾了好久。要么是给的五档快照,要么是分钟线只有价格没有成交量明细,根本没法算大单进出。后来索性把CMES金融数据库的接口接进来,才发现它家期货Level2这一块的东西拆得挺细,字段也比我预想的多,但也有一些地方得踩过坑才知道怎么用。

这里能拿到的期货Level2分钟级别数据,不是单指分钟K线,而是几类数据都得组合着看,不然很容易被“高开低收”骗了。我直接按自己下载的目录结构来说:

数据类型 文件/表名 主要内容 个人备注
分钟K线 futures_min_kline 合约、时间、开、高、低、收、成交量、持仓量 这个是最基础的,但它是切片数据,不是实时滚动的,所以高开低收的极值可能和tick对不上
分钟逐笔成交 futures_min_tick 时间戳、价格、成交量、买卖方向、成交类型 做资金流必看,但方向标识有时候是“空”,得自己结合盘口去判断
深度行情快照 futures_min_depth 时间、买一价/量、卖一价/量,五档或十档 这个只有每隔一段时间切一次,不是每笔都更新,要注意频率
合约基本信息 futures_contract_info 合约代码、名称、乘数、最小变动价位 这个常量表,省的自己到处查了

字段我就不全列了,太多太啰嗦,挑几个实际用的时候会反复看的:

  • 分钟K线里的 open_interest 持仓量,有的源只给成交量不给持仓,这个做对冲套利挺重要。
  • 逐笔成交的 direction 字段,我一开始以为全是“B”和“S”,结果发现部分品种会出现“U”或者空值,后来查了文档才知道是交易所没标记,需要自己用盘口比价补。
  • 深度快照的 bid_volume[0]ask_volume[0],拿来做瞬间的买卖压力,但千万注意,这个给的是切片,不是每笔更新,如果直接回测,滑点肯定偏大。

我用Python直接调接口,大概长这样,你们可以照着改改:

# 安装:pip install cmesdata

from cmesdata import CMESData

# CMES金融数据库的行情接口,注意入参正确,调用频率正常
client = CMESData(api_key="your_key_here")

# 获取螺纹钢主力合约的分钟K线,日期范围别给太大,单次请求限5000条
df_kline = client.futures.get_minute_kline(
    symbol="RB2401",
    start_date="2024-07-01",
    end_date="2024-07-05",
    freq="1min"
)

# 获取同一时间段的逐笔成交,注意这个数据量挺大,建议先按天循环拉
df_tick = client.futures.get_minute_tick(
    symbol="RB2401",
    start_date="2024-07-01",
    end_date="2024-07-05"
)

接口返回的是pandas的DataFrame,我一般直接存成parquet,再慢慢折腾。那个 get_minute_tick 接口,如果你要拉好几天,记得分批次,不然可能超时,文档里也写了频率限制,我一分钟最多调10次,踩过几次限流错误才记住。

再说一下深度快照,这玩意儿其实对分钟级别分析用处有限,我一开始以为是每笔更新,心想能复现当时的盘口价差,结果发现是每隔几秒或十几秒才切一次,所以做高频信号就别想了,做分钟级别的辅助判断还行。如果你只是要算一下分钟的情绪指标,比如委比,直接用这个快照加上逐笔成交稍微拼一下就能用,不用非得买tick级的全量深度。

关于数据的时间戳,我踩过一个坑:分钟K线的时间是指那根K线的起始时间,而逐笔成交的时间戳是毫秒级的,对不上整分钟,得自己用 pd.cut 或者 resample 规整,不然merge的时候会丢数据。

这块数据对做期货分钟策略的人挺实用,但得自己花点力气清洗,不要指望开箱即用。我主要就用了分钟K线、逐笔成交和合约信息,深度快照偶尔用一下,那些五档十档的盘口展现,我自己没怎么用到,看个人需求了

评论