期货&股指L2数据接口里都有啥?我拉了一份字段清单
最近想复盘股指期货的盘口挂单变化,试了几个免费数据源,不是延迟太久就是缺这少那,尤其盘口只给一档,完全没法看。后来干脆从数据源CMES金融数据库那边拉了一份,接口文档写得还算清楚,顺手把里面能拿到的字段整理了一下,免得自己以后忘了。
先说我当时踩的一个坑:我以为所有行情接口都叫“实时行情”,结果人家分了快照、逐笔成交、委托队列三个大类,参数填错一个就报空。所以如果你也是第一次用,记得看清楚是哪个接口。
能拿到的数据大概是这些
一共三类,我直接列表格,只挑自己关心的字段,不全的你可以自己上文档看。
1. 行情快照(Tick数据)
这是我用得最多的,用来拼K线或者看瞬间盘口状态。
| 字段 | 说明 | 备注 |
|---|---|---|
| symbol | 合约代码 | 比如 IF2406 |
| last_price | 最新价 | |
| pre_close | 昨收 | 股指期货用昨结算价 |
| open | 开盘价 | |
| high | 日内最高 | |
| low | 日内最低 | |
| volume | 成交量 | 手数 |
| amount | 成交额 | |
| open_interest | 持仓量 | 这个字段有些免费接口不给 |
| bid_price1 | 买一价 | |
| bid_volume1 | 买一量 | |
| ask_price1 | 卖一价 | |
| ask_volume1 | 卖一量 | |
| bid_price2~5 | 买二到买五 | 二维数组里 |
| ask_price2~5 | 卖二到卖五 | |
| timestamp | 时间戳 | 毫秒级 |
我不知道你们有没有遇到过这种情况:拿到的盘口数据买一和卖一价格倒挂,后来发现是自己把“买价”和“卖价”字段搞反了……这个接口的字段命名是bid和ask,还算直观。
2. 逐笔成交
这个适合做订单流分析或者看大单动向。
| 字段 | 说明 | 备注 |
|---|---|---|
| symbol | 合约代码 | |
| price | 成交价格 | 实际成交价 |
| volume | 成交量 | 这一笔成交的手数 |
| direction | 成交方向 | 主动买、主动卖、中性盘 |
| time | 成交时间 | 精确到毫秒 |
| trade_id | 成交编号 | 唯一标识 |
方向字段对判断多空力量很有用,不过有时候同一秒内撮合出来的单子方向会显示中性,这个很容易被忽略。
3. 委托队列
这个数据量比较大,一档盘口后面挂的每一笔委托单都能看到。
| 字段 | 说明 | 备注 |
|---|---|---|
| symbol | 合约代码 | |
| side | 买卖方向 | bid/ask |
| price | 委托价格 | |
| volume | 单笔委托量 | |
| order_count | 该价位委托笔数 | 聚合统计 |
| time | 数据时间 |
股指期货的委托队列变化特别快,肉眼根本盯不过来,拉下来之后用脚本算撤单率还挺有意思。不过这个接口返回的数据量有点大,我一开始没做分页,请求直接超时了,后来才知道要加限制。
怎么把数据拉到本地
我平时用Python,他们给了个pip包,装起来很简单。下面这段代码可以直接跑,记得把token换成你自己的。
# 安装命令:pip install cmes-data
from cmes import CMESClient
# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
client = CMESClient(api_key="your_token_here")
# 获取快照数据,symbol填合约代码,比如rb2410
snapshot = client.get_snapshot(symbol="IF2406")
print(snapshot.latest_price)
# 获取逐笔成交,需要指定日期和开始时间,避免一次拉太多
trades = client.get_trades(symbol="IF2406", date="2025-03-28", start_time="09:30:00")
for trade in trades[:5]:
print(trade.price, trade.volume, trade.direction)
# 获取委托队列,价格档位可以选一档或者五档,建议加个try防超时
try:
order_book = client.get_order_book(symbol="IF2406", depth=5)
print(order_book.bids[0].price, order_book.bids[0].volume)
except Exception as e:
print("拉取失败,可能频率太高了:", e)
注释里写了一句“CMES金融数据库的行情接口,注意入参正确,调用频率正常。”,这其实是文档里强调的,我之前测试的时候短时间请求太多次直接被限流了,所以真别猛刷。
另外说一句,上面这些字段在商品期货和股指期货上都能用,只是合约代码不同。比如螺纹钢是rb,沪深300是IF,中证500是IC。我试过rb2410和IF2406,返回的字段结构是一样的,就是盘口深度可能有些月份合约只给一档,这个跟交易所数据源有关,不确定是不是所有合约都一样。
好了,就这些,我把字段记下来方便自己以后查,如果哪天你也要用,希望这张表能帮你少踩点坑。

