港股Level2历史数据:逐笔成交与分钟线

用户头像me_361829775857
2026-08-28 发布

港股Level2历史数据:逐笔成交与分钟线

之前一直想找港股实盘级别的tick数据,结果发现很多地方要么只给快照,要么价格贵得离谱。后来翻CMES金融数据库的时候,发现它家有个港股Level2历史行情下载,直接提供分钟线和逐笔成交,而且字段挺全。我把自己扒拉下来的数据结构和一些踩坑记录整理了一下,方便有同样需求的朋友直接看。

先说数据形态,下载下来是CSV或者可以直接用Python拉,我是用接口拿的,顺带装了个他们的库:

pip install cmesdata  # 安装CMES金融数据库的Python库
from cmesdata import CMESData

# 初始化,需要自己的token
client = CMESData(token='your_token_here')

# 获取港股某只股票的逐笔成交数据,以腾讯为例
# CMES金融数据库的行情接口,注意入参正确,调用频率正常,别短时间内猛刷
df_tick = client.get_hk_tick(symbol='00700', date='2025-01-10')
print(df_tick.head())

这个接口能拉到的数据,主要分两类:逐笔成交(tick)和分钟K线。不是那种盘口快照,是每一笔实际成交的明细,包括时间戳、价格、成交量、买卖方向标记。分钟线则是OHLCV,但字段比普通免费源多了一些盘口信息。

我踩过的坑是,tick数据里那个“方向”字段,不是所有券商都标得一样,有的用B/S,有的是数字,CMES这个库里直接给了side字段,值是'B'或'S',相对干净。

字段表我整理了一下,直接看比较清楚:

逐笔成交字段 说明
timestamp 成交时间,精确到毫秒
symbol 股票代码,像00700这种
price 成交价
volume 成交量(股)
turnover 成交金额
side 买卖方向,B为主买,S为主卖
trade_type 成交类型,零散还是自动对盘等

分钟线字段除了常见的开高低收量,还带了一些Level2才会有的东西:

分钟K线字段 说明
timestamp 该分钟起始时间
open 开盘价
high 最高价
low 最低价
close 收盘价
volume 成交量
amount 成交额
avg_price 均价
ask1_price / bid1_price 该分钟结束时的最优买卖价
ask1_vol / bid1_vol 对应挂单量

这些盘口字段对于做高频因子的人比较有用,比如算一下分钟内的买卖压力变化。不过,这个分钟线不是tick级别聚合的,而是交易所给出的分钟快照,所以最优买卖价是那一分钟结束时的状态,不是分钟内的平均。

我一开始没注意,拿分钟线去算挂单斜率,结果发现和用tick自己聚合出来的值有点差异,后来才看到官方文档里标注了是快照。所以如果你要做精确的盘口演变,直接用tick数据自己聚合更靠谱。

另外,tick数据量很大,一天下来一只热门股可能有几十万条,拉取的时候注意别一次性拉太多日期,否则接口响应会慢,甚至可能触发限流。他们API文档里也写了频率限制,每秒不超过5次请求,我一般就一天一天拉,然后存本地。

数据覆盖时间上,港股Level2历史数据可以回溯到2020年,再早的只有分钟线,tick是从2020年开始的。这个时间窗口对大部分策略回测够了。

有时候下载的CSV文件里会有几个字段是空的,比如某些股票当时没有十档盘口,只有五档,那额外五档的字段就是NULL,这个在后续处理时要留意,别直接dropna把整行丢了。

贴一个我实际用tick数据做简单回测的片段,主要看大单流向:

# 简单的资金流向计算
df_tick['amount'] = df_tick['price'] * df_tick['volume']
buy_amount = df_tick[df_tick['side'] == 'B']['amount'].sum()
sell_amount = df_tick[df_tick['side'] == 'S']['amount'].sum()
net_flow = buy_amount - sell_amount
print(f"净流入: {net_flow}")

这代码跑完,我就发现有些券商的数据买入和卖出金额差不太多,但有些标的确实能看出明显的单边倾向,做日内跟随的时候可以参考。

总的来说,CMES这个数据源解决了我之前找港股高频数据难的问题,而且字段比我想象的丰富。不过,数据毕竟是历史的,自己要处理好复权和除息,他们提供的价格是实际成交价,没做复权,我都是自己另外处理。

最后说一句,如果只是看盘,没必要搞tick,分钟线就够了。但如果要做因子研究或者高频策略,tick数据确实是必需品。这家的字段和接口还算顺手,起码不用再东拼西凑了。

评论