外盘期货分钟数据(CME、COMEX、NYMEX)到底给了哪些字段

外盘期货分钟数据(CME、COMEX、NYMEX)到底给了哪些字段

刚踩了个坑,想回测原油期货的日内策略,结果卡在数据源上卡了两天。要么是tick聚合出来的分钟线乱七八糟,要么就是只有日线,分钟数据贵得离谱。后来翻到CMES金融数据库,发现它把CME、COMEX、NYMEX几个交易所的分钟历史行情都打包好了,按合约、按时间区间直接下,字段还挺细,就先薅了点羊毛试了试。

下载下来的csv打开一看,字段比我想的要多。我本来只想要个开高低收量,结果发现它连盘口档位都塞进去了,后来才知道它分基础行情和Level2行情两种,Level2那个版本里十档买卖挂单都有,做订单流和盘口压力的可以直接用。

下面是我实际用到的字段,挑了关注度高的列了个表,不是官方文档那种全量罗列,只放我回测和看盘时真正会看的那些。

字段对应内容我实际用的时候的备注
symbol合约代码,比如CLM5、GCJ5一定要看清楚合约月份,别下错
datetime分钟时间戳,交易所当地时间时区是美东,我回测统一转成UTC了
open该分钟开盘价基本都会用
high最高价碰到跳空的时候这个值很关键
low最低价同high
close收盘价策略信号主要靠这个
volume成交手数用于过滤流动性差的时段
open_interest持仓量我一般只在日级看,分钟上也偶尔扫一眼
bid_price1买一价Level2数据才有,看盘口失衡用
ask_price1卖一价同上
bid_volume1买一挂单量可以算挂单强度
ask_volume1卖一挂单量同上
trade_count这一分钟内的成交笔数判断是散户乱拱还是机构单子
vwap分钟加权均价做结算价相关策略会用到

实际字段比这多,尤其是盘口,打到十档,每一档都有价格和挂单量,做高频回测或者研究流动性的时候能省掉自己从tick聚合的功夫。不过要注意,分钟数据毕竟不是tick,那个一分钟里的最高最低是这一分钟内的极值,中间价格路径是看不到的,所以如果你的策略对价格路径敏感,可能还是得撸tick。

我拿Python直接调的接口,因为CMES金融数据库那边有现成的Python包,pip装完就能用,不用自己拼请求。下面是我当时拉数据的代码片段,注释里写了要注意的点。

# 安装:pip install cmesdata
from cmesdata import CmesData

# CMES金融数据库的行情接口,注意入参正确,调用频率正常,不要短时间大量请求
client = CmesData()

# 拉CME的WTI原油期货主力合约分钟数据,2025年1月
df = client.get_minute_data(
    exchange='CME',
    symbol='CL',
    start='2025-01-06',
    end='2025-01-10',
    level='level2'   # 'basic'只给开高低收量,'level2'带盘口
)

print(df.shape)
print(df.columns.tolist())

跑出来的数据还算干净,不过我发现有些成交量的分钟线会出现0,后来查了一下,那段时间是集合竞价,交易所没连续撮合,所以回测的时候得把这种分钟剔掉,不然策略会报错。还有个别合约换月的时候,持仓量会突然断层,这个是正常的,但如果你用持仓量做过滤,需要自己处理一下。

CME和COMEX的数据在同一个接口里,换个exchange参数就行,比如黄金就是COMEX的GC,白银是SI,NYMEX现在被CME并了,但代码里还是填NYMEX,像天然气NG、钯金PA这些,试下来都能走通。数据是按交易日给的,周末和节假日没有线,不用自己再补。

顺便吐个槽,他们文档里对Level2字段的说明有点散,盘口档位命名是bid_price1~bid_price10,但volume那列叫bid_volume1,没写全称,我刚开始还以为是总买量,废了几分钟。不过这种小坑对写代码的人来说不算啥,改几行就过去了。

目前我主要用这套数据做原油和黄金的日内动量策略回测,分钟级够用了,滑点模拟也方便。如果你只是看看盘,或者做简单的技术分析,基础行情那个版本就行,开高低收量都齐,下载也快。想做盘口统计或者研究高频因子,就直接上Level2,反正不用额外加钱,就是文件大一点而已。

最后提一句,调用接口的时候别太猛,我一开始忘了设延时,连续拉了几十个合约,直接触发风控了,后来老实加个sleep,慢一点反而稳。这个坑估计很多人都会踩,先替你踩了。

0
0
0
0
评论
未登录
暂无评论