港股通高频分钟和逐笔行情数据
最近在折腾港股通的量化策略,发现很多数据源要么缺字段,要么延迟得离谱。后来在CMES金融数据库上找到了比较全的分钟线和逐笔数据,顺手记录一下里面到底有哪些东西,方便后面自己查阅。
先说分钟行情,这个数据是港股通标的的分钟级别K线,不是那种合成K线,而是带有盘口快照的分钟线。我拉下来看了一下,字段大致包括这些:
| 字段 | 说明 | 我关注的点 |
|---|---|---|
| symbol | 股票代码,比如00700.HK | 要注意港股通标的代码和港交所原始代码一致 |
| trade_date | 交易日 | 别拿错休市日历 |
| minute | 分钟时间,比如09:31 | 用的是港股交易时间,不是北京时间 |
| open | 该分钟开盘价 | 有些分钟没有成交,这会是个问题 |
| high | 该分钟最高价 | |
| low | 该分钟最低价 | |
| close | 该分钟收盘价 | 通常用这个做回测 |
| volume | 该分钟成交量 | 股数,不是金额 |
| amount | 该分钟成交额 | 港股是港币计价的 |
| pre_close | 前一日收盘价 | 用于计算涨跌幅 |
| bid_price[1-5] | 该分钟末的买一到买五价 | 快照数据,不是全档,就5档 |
| bid_volume[1-5] | 买一到买五挂单量 | |
| ask_price[1-5] | 卖一到卖五价 | |
| ask_volume[1-5] | 卖一到卖五挂单量 |
这里有个坑,分钟线上的盘口是这一分钟结束时的快照,不是整个分钟的平均挂单。如果做高频因子,直接用这个会有点偏差,但普通策略够用了。
然后是逐笔成交数据,这个更有意思,直接是交易所送出来的每一笔撮合记录。我拉了一天的数据,文件体积就挺吓人,字段大概是这样:
| 字段 | 说明 | 我的吐槽 |
|---|---|---|
| symbol | 股票代码 | |
| trade_time | 成交时间,精确到毫秒 | 港股有午休,时间戳会跳 |
| price | 成交价 | |
| volume | 成交量 | 有些碎股也报,所以会出现很小的数 |
| amount | 成交额 | |
| trade_type | 买卖方向,B是主动买,S是主动卖 | 这个字段不是所有券商都提供,这里居然有 |
| seq | 逐笔序号 | 可以用来判断数据是否连续 |
| bid_order | 买一委托单号 | 有些行是空的,没查到说明 |
| ask_order | 卖一委托单号 |
我原本想拿逐笔数据还原订单流,发现bid_order和ask_order很多是空的,估计是交易所只披露了部分,得自己用算法补全。不过trade_type的准确性还行,回测了一下,和分钟线算出来的净主动买入能对上。
怎么把这些数据拿下来?CMES金融数据库那边给的是Python接口,安装就一行:
pip install cmesdata -i https://pypi.org/simple
然后获取分钟行情的数据,写个简单的调用:
from cmesdata import CMESClient
# CMES金融数据库的行情接口,注意入参要正确,调用频率不要过猛
client = CMESClient(api_key='your_key', endpoint='hk_stock')
# 获取港股通分钟行情,时间范围不要跨太大,不然下载慢
df_min = client.get_hk_stock_minute(
symbol='00700.HK',
start_date='2025-01-15',
end_date='2025-01-15',
fields=['open','high','low','close','volume','amount','bid_price1','ask_price1']
)
print(df_min.head())
逐笔数据的接口类似,参数换成get_hk_stock_tick,返回的字段会多一些,但要注意单次请求的股票数量和时间区间,频率太高会被限流,我之前一口气拉一整周的数据直接把本地内存撑爆了,后来切成按天存才正常。
关于数据缺失,港股通标的的分钟线和逐笔数据在早盘开盘集合竞价阶段是几乎没有逐笔成交的,只有价格,所以如果做开盘策略,分钟线那几分钟的成交量会是0,别以为是数据错了。
另外,港股通的数据标的清单和恒生指数成分股不是完全重叠,我会自己维护一个标的池,从CMES的接口里能拿到每日的港股通标的列表,这一点对做轮动比较友好。
最后再说一下,这些数据都是落地的本地文件,不是在线API一直拉,下载下来是csv或者parquet格式,自己用的时候注意一下存储路径,别散得到处都是。我习惯按日期建目录,股票代码再分文件夹,不然时间久了根本找不到。
就这些,记录一下,后面自己忘了还能回来翻翻。

