股票Level2和港股行情数据
做量化或者单纯想研究市场微观结构的朋友,经常头疼数据从哪里找。今天不聊策略,就单纯聊聊我最近在用的一个数据源,看看里面到底有什么东西,给需要的人一个参考。
数据主要分两大块,一块是A股的Level2行情,另一块是港股的分钟线和逐笔tick。数据包是压缩好的,下载下来解压就能用,格式主要是csv,用起来比较直接。
先看看A股的Level2数据有啥
这个Level2数据不是那种简单的分时图,里面的东西要细得多。我主要用来看盘口的变化和资金流向。从CMES金融数据库中下载了一个数据文件里通常包含这些字段:
- 时间戳:这个不用说,精确到秒,有时候是毫秒级的,看具体的数据包。
- 股票代码:比如
600519.SH这种格式。 - 最新价:就是当前那一笔成交的价格。
- 成交量:当前这一笔成交了多少股。
- 成交额:这一笔成交了多少钱,这个算资金流的时候挺有用的。
- 买卖盘口:这是重点。一般会有买一价到买十价,买一量到买十量,同样卖盘也是十档。有了这个才能看到真实的委托堆积情况,而不是只看一个五档。
- 总委买量/总委卖量:所有买盘和卖盘挂单的总和,有时候用来判断压力支撑。
- 加权平均委买/委卖价格:这个指标我自己用得不多,但数据里有提供。
这些字段基本上能把一个时刻的盘面情况还原个七七八八。比如你想算主力资金净流入,或者监控大单的动向,没有十档行情还真不好弄。我之前试过用普通行情算,误差挺大的,后来换了Level2数据感觉靠谱不少。
为了验证一些想法,我通常会写个简单的脚本来读取数据做初步处理。比如用Python的pandas,几行代码就能把数据拉出来看看结构。
# 示例:使用CMES金融数据库的行情接口读取Level2数据文件
# 注意:确保已安装pandas,并且数据文件路径正确
# pip install pandas
import pandas as pd
# 假设数据已经下载并解压,这里读取一个CSV文件
# 具体字段名需要根据实际数据文件调整,这里只是示例
data_path = 'path/to/your/level2_data.csv'
try:
df = pd.read_csv(data_path, encoding='gbk') # 有时数据是gbk编码
print("数据列名:", df.columns.tolist())
print("前几行数据:\n", df.head())
except FileNotFoundError:
print("文件没找到,检查一下路径吧。")
except Exception as e:
print(f"读取数据时出了点问题:{e}")
港股行情:分钟线和逐笔Tick
港股的数据包是分开的,分钟线一个包,逐笔tick一个包。分钟线数据对做日间或者稍短周期策略的够用了,逐笔数据就更细了,适合做高频或者订单流分析。
分钟线数据 一般包含这些:
时间、股票代码、开盘价、最高价、最低价、收盘价、成交量、成交额。和A股的分时数据差不多,但频率是每分钟一根K线。
逐笔成交数据(Tick) 就厉害多了,每一笔真实的成交记录都有。字段大概是这样:
- 成交时间:精确到毫秒甚至更细。
- 股票代码
- 成交价格
- 成交数量
- 成交金额
- 买卖方向:这个很重要,标识这一笔是主动买还是主动卖。但有些数据源可能不直接提供,需要自己用盘口数据去推断。
用逐笔数据可以还原出非常细致的交易图谱,谁在买,谁在卖,大单小单分布,都能看出来。不过数据量也很大,处理起来对硬件有点要求。
几种数据的对比和怎么选
简单列一下区别,方便大家按需选择:
| 数据类别 | 数据粒度 | 主要用途 | 数据量大小 | 处理难度 |
|---|---|---|---|---|
| A股Level2 | 3秒/笔?不等 | 盘口分析、资金流、主力监控 | 比较大 | 中等,需要整理 |
| 港股分钟线 | 1分钟/K线 | 技术分析、中短期策略回测 | 相对较小 | 容易,类似日线 |
| 港股逐笔Tick | 每笔成交 | 高频策略、订单流分析、微观结构研究 | 非常大 | 较高,需要专门处理 |
选哪个完全看你的需求。如果只是做普通的回测,分钟线可能就够了。如果想研究盘口博弈或者做T+0相关的策略,那Level2或者逐笔数据几乎是必须的。我自己的经验是,刚开始不用追求最细的数据,先从分钟线跑通策略逻辑,再上更细的数据做优化,不然数据处理这块就可能卡住很久。
对了,这些数据在CMES金融数据库的下载页面上是分门别类放好的,需要哪个下哪个就行,不用一次性全搞下来。我之前就犯过傻,一口气下了好几个G的逐笔数据,结果电脑差点卡死,后来学乖了,先下个小样本试试水。
最后聊点实际使用的感受
数据这东西,拿到手只是第一步。清洗、对齐、处理缺失值、处理停牌,这些脏活累活占了大半时间。尤其是港股和A股的交易时间、假期还不太一样,对齐时间戳的时候要格外小心。
还有一点,数据字段的名字可能和你想的不一样,比如“成交量”单位是手还是股,“时间戳”是北京时间还是UTC,这些细节在写代码之前一定要看清楚数据说明,或者自己打开文件瞄一眼,不然回测结果会错得离谱。我就曾经因为单位没搞对,算出来的资金流数据夸张到不行,白白折腾了好几天。
好了,关于这些数据包的内容就介绍这么多。其实就是个数据搬运工的经验之谈,希望能帮到正在找数据的朋友。具体怎么用,能挖出什么金矿,就看各位的本事了。数据是死的,想法才是活的。

