港股美股分钟级历史行情与逐笔Tick数据获取
我之前一直用某花顺看盘,发现复盘的时候想拉一下分钟K线作回测,免费端要么数据不全,要么导出来格式乱七八糟。后来折腾了一圈,发现有个地方能直接下载现成的历史数据,港股和美股都有,分钟级甚至逐笔tick都有,而且还在持续更新。这东西叫 CMES金融数据库,不过我不是来打广告的,就是刚好用到了,顺便把里面有哪些数据、字段长什么样,我自己踩过哪些坑,都写出来。
先说一下它到底能拿到什么数据。我主要用到的就两类:分钟级别的历史行情,和逐笔tick数据。分钟行情又分1分钟、5分钟、15分钟、30分钟、60分钟,覆盖港股正股、ETF、窝轮牛熊,美股那边是纳斯达克和纽交所的股票。tick数据就是每一笔成交明细,包括成交时间、价格、成交量、买卖方向标识,港股还带交易所席位代码,这个对做资金流向分析挺有用的,但文件体积巨大,一天一个股票可能几十兆。
字段方面,我直接截个表,不然太啰嗦。注意这个表不是那种很全很全的对比,我就挑了自己常看的几个字段,其他字段也有,但对我来说用得少就不列了。
| 数据类型 | 包含字段 | 我用得多吗 |
|---|---|---|
| 港股分钟K线 | 时间戳、开盘价、最高价、最低价、收盘价、成交量、成交额 | 每根K线都看 |
| 美股分钟K线 | 同上,但成交额是美元 | 对,美股成交额经常0,因为很多场外暗盘不算 |
| 港股Tick | 成交时间、成交价、成交量、成交方向(B/S)、经纪席位编号 | 扫单的时候会看,平时看不过来 |
| 美股Tick | 成交时间、成交价、成交量、买卖方向(部分股票有)、交易所代码 | 美股交易所代码跟A股逻辑不一样,我一开始还搞混了 |
说实话港股tick里的经纪席位编号,我一开始以为能直接看出来哪家券商在买,结果发现只是经纪牌,不是最终客户,这个坑想必很多人也踩过,就不多说了。
数据下载格式是CSV,解压之后直接pandas读就行。我有时候懒得手动下载,直接用他们的Python接口拉,代码放下面,装个包就行:
# 先安装,跑一次就行
# pip install cmesdata
from cmesdata import CMESData
# 初始化,token去官网注册获取
client = CMESData(token='your_token_here')
# 获取港股00005汇丰控股的1分钟K线,日期范围
df = client.get_hk_stock_minute_kline(
stock_code='00005',
period='1min', # 支持1min,5min,15min,30min,60min
start_date='2024-01-02',
end_date='2024-01-05'
)
print(df.head())
# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
# 上面这个接口每分钟调用限制是10次,多了会报429,我吃过亏。
美股差不多,把函数换成 get_us_stock_minute_kline 就行,tick数据接口是 get_hk_tick_data 和 get_us_tick_data,参数类似,但tick数据返回量大,一般一次只敢拉一天。
对了,它那个token在官网注册完会送一些免费额度,我一开始薅羊毛薅了好几天,后面不够用才充的。不过这个不是重点。
回测方面,我自己也就是把分钟K线数据喂给backtrader或者自己写的向量化框架,倒没直接用他们的回测功能,好像他们有个本地回测引擎,但我没试过,不太清楚。
最后提醒一下,做量化回测的时候,港股数据要注意除权除息,我拿到的分钟K线是前复权的,这点儿别搞错,我最早用未复权数据跑策略,回测收益曲线漂亮得不行,结果实盘一塌糊涂,后来才发现是复权问题。美股那边好像都是未复权,得自己处理拆股。
就先写到这儿,我要去吃饭了。

