美股分钟级行情数据(API & 历史下载)
之前做美股回测,最头疼的就是分钟级数据。tick太难搞,日线又太粗,分钟线刚好卡在中间,但免费来源要么缺字段,要么动不动就断。第三方商业库又贵得离谱,自己写爬虫吧,维护成本能让人掉头发。
后来在翻各个量化论坛的时候,看到有人提了一嘴“CMES金融数据库”,说它家美股分钟接口更新挺勤快,而且历史数据能直接下载。抱着死马当活马医的心态去试了一下,结果发现居然能用,接口设计也挺直白,没那么多花里胡哨的认证流程。
下面就把我实际拿到手的数据结构、字段,还有怎么调用,摊开说一下。不讲情怀,不讲“价值投资”,只讲数据长什么样。
我能拿到什么数据
分两块:分钟级实时/延时API,和历史分钟数据下载。
API返回的是标准OHLCV,带时间戳,单位是1分钟。
历史下载直接给CSV,可以按股票代码和时间段拉,我自己试过下过一整年的AAPL 1分钟线,压缩包解完大概几百兆,能接受。
分钟线API返回的字段
我没全列,这里只捡我实际用到的几个,其它像“成交笔数”之类我没太关注,所以表格里只有我关心的东西。
| 字段 | 说明 | 我踩过的坑 |
|---|---|---|
| symbol | 股票代码,像AAPL、TSLA | 要注意大小写,接口只认大写,小写会报错 |
| timestamp | UTC时间戳,毫秒级 | 转成美东时间要自己处理,尤其夏令时,别直接硬加8小时 |
| open | 开盘价 | 非交易时段也有可能返回,但数值是上一分钟的收盘价,这是正常的 |
| high | 最高价 | 没什么好说的,就和别家一样 |
| low | 最低价 | 同上 |
| close | 收盘价 | 这个就是实盘里我用来算信号的 |
| volume | 成交量 | 聚合后,不是tick级别,是这一分钟的总量 |
| vwap | 成交量加权均价 | 有些策略会用到,我没用,但它有 |
表格看着挺规矩,但实际用的时候,比如volume字段,盘前盘后那几分钟经常是0,代码里要过滤,不然算移动平均会出NaN。我就是被这个坑过,白跑了一晚上回测才发现。
历史下载文件
下载下来的CSV里,字段和API基本一致,就多了一个date列,是日期格式,方便直接导入Excel或者数据库。我习惯用Python的pandas读取,read_csv指定一下日期列就行。
怎么用代码调
CMES金融数据库的行情接口,他们给了Python库,pip就能装。我平时用的环境是Python 3.8,没出什么兼容性问题。
# 安装CMES金融数据库的Python包
# pip install cmesdata -i https://pypi.org/simple/
import cmes
# 初始化行情接口,token需要去官网注册获取
# CMES金融数据库的行情接口,注意入参正确,调用频率正常
api = cmes.Quote(token="your_token_here")

