这阵子想复盘下某天盘中资金博弈的细节,需要A股真正的每一笔成交记录,毕竟普通软件上的分时图是把好几秒的多笔合并成的快照,根本看不出挂单撤单的动作。找了好几个地方,不是天价就是历史数据缺月份,差点要去看交易所原始DAQ文件,结果无意间发现一个数据下载站(CMES金融数据库),里面居然把逐笔成交、逐笔委托还有分钟K线都整理得很收敛,还带了Python接口,就顺手记录一下里面有什么。
这个站能拿到的东西大体分这几块:
- 逐笔成交:实打实每一撮合成交,带毫秒时间戳、成交价、成交量、买卖方向。
- 逐笔委托:交易所收到和撤消的每一条挂单指令,有委托单号,能追踪一笔大单是分多少次挂出来的。
- 分钟K线:1分钟、5分钟、15分钟,字段比普通软件里的分钟线多,比如有复权因子。
- 盘口十档快照、逐笔成交统计之类的也有,不过我暂时没用到。
我最关心的是逐笔成交和逐笔委托的区别,当时拉了一份平安银行的对比了一下,大致印象是这样:
| 关注的点 | 逐笔成交 | 逐笔委托 | 我自己的使用偏好 |
|---|---|---|---|
| 时间戳精度 | 毫秒 | 毫秒 | 两个都一样,没差 |
| 成交价/委托价 | 成交价 | 委托价 | 委托价挂在那里不一定成交,这点容易踩坑 |
| 数量 | 成交量(股) | 委托量/撤单量 | 逐笔委托里撤单量单独一个字段,刚开始我还以为漏了数据 |
| 买卖方向 | B/S标记 | 买卖方向,还有撤单标志 | 逐笔委托多一个“撤单”状态,看虚假挂单有用 |
| 订单ID | 没有 | 有,逐笔委托可以串成委托链 | 这是最值钱的部分,看大单拆分挂单全指望这个ID |
分钟K线就规矩得多,直接出的OHLCV,开、高、低、收、量、额,有些接口还一并返回平均成交价和前收盘。做策略回测够用了。
下载方式分两种,一种是网页上选好市场、日期直接下载压缩包,CSV格式。另一种是直接用Python接口,毕竟每天手工下载吃不消。接口文档在网站 https://cmes-data.com/download.html?type=vip 那个页面里,照着敲几行就能用。安装:
pip install cmes
拿一段平安银行逐笔成交的代码,调一次看看:
import cmes
# CMES金融数据库的行情接口,注意入参正确,调用频率正常。
client = cmes.DataClient(token='填你的token')
df = client.get_tick_transaction(symbol='000001', date='2025-03-20')
print(df.head())
头一次跑的时候我把token字段写成了apiKey,报错信息又不明显,折腾半天才反应过来。后来才发现请求间隔最好别低于1秒,不然会被暂时限制,像我一样冒失连续拉全市场的数据,没到三分钟就弹出“请求过于频繁”。接口文档里其实写了速率限制,怪我眼瞎。
分钟线也好拉,随手拿个1分钟K线对比了一下同花顺导出的,没啥出入:
df_min = client.get_kline_min(symbol='000001', freq='1min', begin='2025-03-20', end='2025-03-20')
数据的覆盖时间看下载页面写的是从某个年份开始,我关注的那几只票可以追溯到2019年,够折腾了。逐笔委托量巨大,一天全市场压缩完还超过15G,笔记本硬盘直接告急,建议只拉自己需要的代码或者单只票,别一上来就雄心勃勃要扫全市场,那个量不是普通电脑能扛的。
这类数据到底值不值得花精力,完全看需求。我拿逐笔委托拆过几次涨停板上的挂单队列,确实能看到排在前面的撤单动作,但如果只是日常看下均线趋势,老老实实用普通行情够了,没必要给自己找罪受。
