淘到宝了,港股分钟历史数据这里居然能直接下

用户头像me_361829775857
2026-09-03 发布

淘到宝了,港股分钟历史数据这里居然能直接下

最近给港股策略在做回测,别的东西都好说,唯独分钟线数据把我折腾得够呛。市面上要么是收费的天价终端,要么就是东拼西凑的残次品,K线缺胳膊少腿,成交量还对不上,回测跑出来的曲线能把自己气笑。

后来在扒各种量化论坛的时候,无意间看到有人提了一嘴,顺着线索摸过去,发现居然有个地方把港股分钟历史数据整理得挺明白,直接下载就行,省去了自己用 API 一行行扒拉的功夫。

我把自己用到的几类数据整理了一下,如果有同样在折腾港股回测的朋友,可以看看有没有你需要的。


到底能拿到哪些分钟数据

这个地方提供的不是那种实时推流,而是已经落盘的历史切片,适合做离线研究、因子挖掘或者回测。涵盖的周期比较全,从高频到低频都有:

频率 说明 我主要用来干嘛
1分钟 最短的K线颗粒度 做日内波动率统计、盘口冲击模型
5分钟 经典的短线周期 大部分CTA策略都在这个频率上跑
15分钟 过滤掉一些噪声 看板块轮动的时候会切到这个周期
30分钟 半日级别的节奏 用来判断日内趋势的中段
60分钟 小时线 跟A股做跨市场对冲时对齐时间轴用

除了这些标准线,还有日线、周线、月线,不过那些很好找,我当时主要缺的就是分钟级的数据,所以只盯着这块看。

一个数据文件里塞了哪些字段

下载下来是 CSV 格式,一个压缩包里面按股票代码分好了文件。打开看了下,字段比我想象的全,不是那种只有 OHLC 的骨架,该有的一个没少。

我拿腾讯(00700)的某一天 1 分钟线举例子,列几个关键字段:

字段名 含义 备注
symbol 股票代码 港股是 5 位数字,部分会有后缀
trade_date 交易日期 格式 YYYYMMDD
trade_time 分钟时间戳 精确到分钟,A股是 09:30,港股是 09:30 开始
open 开盘价 该分钟第一笔成交价
high 最高价 该分钟最高成交价
low 最低价 该分钟最低成交价
close 收盘价 该分钟最后一笔成交价
volume 成交量 股数,不是手数
amount 成交额 港币
adj_factor 复权因子 后复权用的,这个挺良心,很多免费数据都不给复权

我着重看了一下 adj_factor 这一列,因为港股经常有拆股、合股、派息,不复权的话回测的收益率完全是歪的。有了这个因子,我自己在本地算后复权价格就很简单,直接 close * adj_factor 就行,不用再去找财报事件一个个对。

另外,成交量是股数,不是手数,这一点跟某些 A 股数据源的习惯不一样,刚开始没注意,算换手率的时候差点闹了乌龙。

用 Python 直接调接口也行

如果你不想手动下载,或者想定期自动更新,他们其实是提供了 Python 接口的。我一开始不知道,还傻傻地写脚本去抓网页,后来发现直接 pip 装个包就能调,白白浪费一个下午。

安装很简单,就一行:

pip install cmesdata

调用的时候注意几点:一是需要先申请 token,二是接口有频率限制,别死循环里猛调,容易触发限流。正常回测场景下,一天拉一次完全够用,不会被封。

下面是我当时测试用的demo,拉的是港交所(00388)的 5 分钟线,跑通了就没再改,直接复制过来:

from cmesdata import CMES

# 用前记得把 token 换成自己的
cmes = CMES(token='your_token_here')

# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
df = cmes.get_hk_minute(
    symbol='00388',
    freq='5min',
    start_date='20250101',
    end_date='20250110'
)

print(df.head())

数据返回是 DataFrame,字段就是上面表格里那些,直接 df.to_csv 存本地就行。我后来把这个接口挂到了服务器上的定时任务里,每周六凌晨跑一次,自动把当周分钟线补全,彻底告别手动下载。

我踩过的两个小坑

第一个坑是港股交易时段。港股早市是 9:30 到 12:00,午市是 13:00 到 16:00,收盘竞价那几分钟有时候会被切进 16:00 这一分钟里,导致 16:00 这根K线的成交量会突然放大。刚开始我以为数据错了,还去对港交所的官方成交记录,发现就是竞价阶段的量集中撮合了,不是数据问题。如果做日内策略,对这根线要特殊处理,否则会误判放量突破。

第二个坑是停牌。港股停牌期间,分钟线是完全没有记录的,不像 A 股有些数据源会给你留一条空记录。比如某只股票停牌半天,那这半天的分钟线全部缺失,在拼接时间序列的时候,如果直接 reindex 会出空值,需要自己判断并前向填充或者剔除。这个在数据清洗的时候要留意,不然回测里会莫名其妙出现跳空。

这两个坑当时花了我半个晚上排查,特别是停牌那个,策略跑出来收益曲线异常平滑,我还以为挖到宝了,结果发现是把停牌期间当成零波动处理了,白高兴一场。


上面这些就是我目前用到的港股分钟历史数据的情况。如果你也正好在找这类数据,可以顺着线索去看看,说不定能少走点弯路。数据这东西,很多时候不是找不到,而是找到了但不敢用,因为缺字段、缺复权、缺时间戳,修修补补的时间比建模还长。这次找到的这个,至少在我用过的几个免费源里,完整度算是相当能打的了。

评论