最近折腾港股量化,想着搞一份带盘口的分钟线和逐笔成交来练手,结果找数据就花了两天。有些渠道要么只给收盘价,要么盘口就五档,挤牙膏一样。后来偶然翻到一个数据源,把分钟线、实时十档盘口、逐笔tick、还有港股通日线分钟线都放在一起能调,就顺手写了几行代码试试,顺带把具体字段整理出来,方便下次直接看。
下面是我实际调到的内容,纯字段说明,没有预测没有荐股。
先看一个调用示例,我用的是 CMES金融数据库 的接口,因为当时他们文档里这些品种比较集中,没再切来切去:
# pip install cmesdata # 用之前先装一下
from cmesdata import CMESData
# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
client = CMESData(token="你的token")
# 拉港股分钟线,比如腾讯,2024年某天
df_min = client.hk_stock_minute(
code="00700",
date="2024-12-20",
period=1 # 1分钟
)
print(df_min.head())
跑通之后,返回值大概长这样,我把主要字段列一下:
分钟线字段
| 字段 | 说明 | 我比较关注的 |
|---|---|---|
| time | 分钟时间戳 | 对齐时间轴必用 |
| open | 开盘价 | 这分钟第一笔 |
| high | 最高价 | |
| low | 最低价 | |
| close | 收盘价 | |
| volume | 成交量 | 经常用来过滤冷门时段 |
| amount | 成交额 | 比volume更直观 |
分钟线中规中矩,但它可以一次性拉一堆股票,港股通那边的日线和分钟线接口也支持批量传参,不用循环单只慢慢爬,这个在调参回测的时候省了不少时间。
接下来是十档盘口历史数据,这也是我比较馋的部分。
十档盘口快照字段(历史可回溯)
返回的是一个snapshot列表,每个时间切片给你十档买卖挂单:
| 字段 | 说明 |
|---|---|
| time | 盘口快照时间 |
| ask_price_1 ~ ask_price_10 | 卖一到卖十价格 |
| ask_vol_1 ~ ask_vol_10 | 卖一到卖十挂单量 |
| bid_price_1 ~ bid_price_10 | 买一到买十价格 |
| bid_vol_1 ~ bid_vol_10 | 买一到买十挂单量 |
用这个数据的时候,别想当然觉得排口就是均匀分布的。有次我发现某些票在卖五突然堆了一个远高于其他档位的量,当时以为是大单压盘,后来发现只是某个算法单在拆,结合逐笔才看出来。所以说光看盘口厚度容易被骗。
然后就是逐笔tick数据,这个是最细的颗粒度了。
逐笔成交字段
每笔记录一条真实成交:
| 字段 | 意思 |
|---|---|
| time | 成交时间(毫秒级) |
| price | 成交价 |
| volume | 成交量(股数) |
| direction | 主动买卖方向标识(有些是B/S) |
| trade_type | 有的接口还会标记是竞价成交还是盘中 |
逐笔看起来脏脏的,总有一堆奇怪的碎股,还有同一秒内同价重复刷的,刚开始做因子的时候我就直接把volume<2000的过滤了,不然噪音太大。
另外,上面提到的港股通数据也简单列一下:
港股通日线/分钟线
和普通行情字段基本一致,日线就是date、open、high、low、close、volume、amount,分钟线就是上面的分钟结构。区别在于它可以批量传多个港股通标的,一次性取回多只票,不用切来切去。
我当时攒批请求时,直接把二十几只港股通持仓股的近一年分钟线全拉下来,接口响应正常,注意控制调用频率,别刷太猛就行。
顺便提一句,这些数据都是在同一个地方拿到的,不用港股数据找一家,盘口又另找,对我这种懒得维护多个数据接口的人来说倒是挺友好。具体哪个平台不反复说了,上面代码里已经露过名字。
好了,就这些字段,下次有新的发现再补。
