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

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

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

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

python 复制代码
pip install cmesdata  # 安装CMES金融数据库的Python库
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数据做简单回测的片段,主要看大单流向:

python 复制代码
# 简单的资金流向计算
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数据确实是必需品。这家的字段和接口还算顺手,起码不用再东拼西凑了。

相关推荐
KaiwuDB4 分钟前
企业级数据库数据保护:KaiwuDB KaiwuDB V3.3.0 发布:S3 冷热分层存储与主备集群能力增强实战解析模场景备份恢复方案解析
数据库·时序数据库·kaiwudb·发版·多模时序数据库·冷热分层存储·主备集群
DataY12 分钟前
MySQL CDC 直接写进 Doris 汇总模型:同步即汇总,明细不用搬两遍
数据库
琳达爱分享15 分钟前
客服改了地址,发货任务把它改了回去:一次没人报错的覆盖
数据库
IT大白鼠18 分钟前
渗透测试实战从靶场搭建到渗透流程——第 8 篇 · 服务型靶标(上):MySQL 双版本写文件链
数据库·mysql·渗透测试
piaoyiren42 分钟前
Python FTP 服务端项目详细功能文档
网络·数据库·python
少年的范儿1 小时前
Windows 安装 MySQL 8.4 教程(ZIP 解压版):配置 my.ini、初始化数据库与启动服务
数据库·windows·mysql
l1t1 小时前
DeepSeek总结的AI 智能体应该用哪种语言搜索其记忆:SQL 还是 SPARQL?
数据库·人工智能·sql
麦壳饼1 小时前
SonnetDB:PID 调参实战:阶跃响应分析与参数解读
数据库·sonnetdb
猿究院--Cu-Sn合金2 小时前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
IvorySQL2 小时前
PostgreSQL 日报|Anonymizer 3.3 修复高危漏洞(10 月 29 日)
数据库·postgresql