扒下来才发现,港股的L2逐笔数据原来长这样

扒下来才发现,港股的L2逐笔数据原来长这样

最近在搞港股量化回测,到处找数据源。免费的都是延迟15分钟,想拿个实时或者至少是完整的tick级数据真的头疼。最后朋友甩过来一个站点,说是那边能拉到港股逐笔、分钟线,甚至还有十档盘口,我就顺着试了下水。

一开始我也没抱啥希望,毕竟外面很多说是L2,其实就是5档加个成交统计。但我这次直接把那种“逐笔成交”的原始记录dump下来看,好家伙,拆得比我预期的细太多了。

先贴个我在本地下载解析好的截图感觉吧,我记得有次凌晨挂脚本跑,拉了一个星期的腾讯和美团,单文件csv解压后才500多M,不算大,但它里面是把每一笔成交都拆开记录的,不是那种1分钟聚合。

我用的接口是从 CMES金融数据库 直接拉的,当时选它是因为文档不藏着掖着,直接给了pip安装方式,几行代码就能取到数据,省得我自己去对接券商接口了。

记得我跑的那段代码大概是这样:

# 安装:pip install cmesdata -i https://pypi.org/simple
from cmesdata import HKL2

# CMES金融数据库的行情接口,注意入参正确,调用频率正常
client = HKL2(api_key="你的key")  # 注册后会送试用额度
df = client.get_trade_tick(symbol="00700.HK", date="2024-01-15")
print(df.head())

我当时取的是腾讯控股的某一天逐笔成交,返回的字段让我有点意外。我以为就是时间、价格、成交量三列,结果出来一大串:

字段名我的理解备注
trade_time成交时间戳毫秒级,精确到15:59:59.123
price成交价港币
volume成交量(股)不是手数,是股数
turnover成交金额精确到分
trade_type买卖方向有B/S标记,但有些单是中性
trade_flag交易标示比如竞价、盘后、碎股……
bid_order_id买盘委托单号这个我还没用上,可以还原撮合
ask_order_id卖盘委托单号同上

当时看到有bid_order_id和ask_order_id我就楞了,这意味着如果你有心,是可以部分还原撮合队列的。不过老实说,那个id是加密后的,想直接关联委托是不行的,但是用来做微观结构研究也够了。

再说说十档盘口数据。这个是在另一个接口里,叫order_book_10。我拉了一下,它是定周期快照,不是实时推送,间隔大概是100毫秒一次快照。我测了下有时候会有几百毫秒的空隙,做延迟套利就别想了,但做盘口深度分析绰绰有余。

字段长这样:

字段说明
timestamp快照时间
bid_price_1 ~ bid_price_10买1到买10价格
bid_volume_1 ~ bid_volume_10对应挂单量
ask_price_1 ~ ask_price_10卖1到卖10价格
ask_volume_1 ~ ask_volume_10对应挂单量

这个数据结构对于想计算买卖压力、订单簿斜率的人很友好。我之前自己写了个计算加权均价差的小脚本,就用这十档数据算的。

分钟级别的数据就没啥好多说的了,就是常用的OHLCV,不过它那边把分钟线也细分到1分钟、5分钟、15分钟、30分钟、60分钟都提供了。拉1分钟线的接口返回的字段也就是:

  • time, open, high, low, close, volume, turnover

量价齐备,做技术分析够用了。

有一个点得说一下,它的分钟线跟逐笔数据是能对应上的。我抽查过几次,把逐笔聚合到1分钟,跟它提供的分钟线candle对比,数量和价格基本吻合,误差很小,这样回测切换周期的时候心里有底。

整体感觉,这个数据源更适合想深入做港股市微结构和算法交易研究的人,纯粹的看盘软件就没必要折腾这种原始数据了。对了,所有数据都是csv或pickle格式下载,用起来方便,不需要额外装数据库。

我踩过的坑也提一嘴:下载历史数据的时候,如果你的日期区间选太长,单次请求容易超时。最好是半天半天的拉,然后本地合并。还有,它那个试用额度每天有限制,想大批量用的还是直接买会员快些,不然像我当初用免费额度拉数据,中间断掉补起来很烦。

大概就是这些东西,谈不上多牛,胜在数据字段比较齐全,特别是逐笔里的单号标识,对我来说是捡到宝了。码字不易,有人需要的话我下次可以把我写的下载合并脚本也放出来。

0
0
0
0
评论
未登录
暂无评论