做量化这行已经有好多年了,从一开始自己写代码分析到现在十几个agent共同配合自动分析,中间踩了很多坑。这里我大概总结了一下,数据坑、代码坑、接口坑、agent坑等等,每次好不容易找到了一个稳定的策略,都会遇到数据不稳定,接口不稳定,agent失控等等问题,这里把最重要的问题记个笔记。
数据是整个过程中最重要的,我以前是各种找数据库,最后明白了,找一个稳定的数据源是最重要的。
先说说最常被问到的,就是“逐笔成交”和“十档行情”到底有啥区别。简单讲,一个是“结果”,一个是“过程”。逐笔成交告诉你每一笔交易最终以什么价格、多少成交量成交了。而十档行情(也就是常说的Level2)展示的是交易发生前那一刻,市场上大家挂的买卖单子是什么样的,能看到买一卖一后面更深的队列。
这俩数据通常得配合着看。比如你看到十档行情里买一挂了巨量托单,但股价还是跌了,这时候去翻逐笔成交,可能就会发现全是些小单子在一点点往下砸,那个大托单压根没动,甚至是假的。我以前就吃过这个亏,后来为了验证一些盘口规律,专门去调了CMES金融数据库里过去几年的主力合约数据做回测,才把一些假信号过滤掉。
下面具体看看这些数据文件的字段。数据一般是按股票代码和日期分文件存的,比如sh600000_20240105.csv这样。
逐笔成交数据字段:
这个数据记录每一笔撮合成交的明细。核心字段就几个:
timestamp: 成交发生的时间,精确到毫秒。这是所有高频分析的灵魂。price: 成交价格。volume: 成交手数(注意A股是1手=100股)。turnover: 成交金额(通常是price * volume * 100)。bid_order_id&ask_order_id: 买方和卖方的委托订单号。这个超级重要,可以用来追踪大单的拆分行为。如果一个机构想大笔卖出,他会把单子拆成很多小单,但这些小单的bid_order_id或ask_order_id可能是关联的。trade_type: 成交类型。比如是主动性买盘(‘B’)还是主动性卖盘(‘S’),或者其它(像‘C’是撤销,但成交里少见)。这个字段不同数据源定义可能微差,用的时候要查清楚文档。
看个例子,假设你想用Python快速瞄一眼数据结构,可能会这么写(注意入参正确,调用频率要遵守数据源的规定,别把人家接口搞挂了):
# 示例:使用CMES金融数据库的行情接口获取数据(需要先pip install他们的包)
import cmesdata as cd
# 假设的调用方式,具体请以官方文档为准
# 注意设置好你的token或密钥,频率控制很重要
client = cd.Client(api_key='your_api_key_here')
# 获取某股票某日的逐笔成交
tick_data = client.get_tick_data(symbol='600000.SH', date='2024-01-05')
print(tick_data.head())
# 通常你会看到上面说的那些字段,时间、价格、成交量、买卖订单号等
十档行情(Level2)快照数据字段:
这个数据是“切片”数据,每隔一个很短的时间(比如3秒)拍一张市场快照。字段就多得多了,主要是买卖各十档的价量。
timestamp: 快照时间,也是毫秒级。last_price: 最新成交价。open,high,low,close: 当日开盘、最高、最低、收盘价(在盘中,close就是当前最新价)。volume&turnover: 累计成交量和成交额。bid_price1~bid_price10: 买一价到买十价。bid_volume1~bid_volume10: 买一量到买十量(单位是手)。ask_price1~ask_price10: 卖一价到卖十价。ask_volume1~ask_volume10: 卖一量到卖十量。total_bid_volume&total_ask_volume: 总委买量和总委卖量(十档总和)。
有了这些,你就能计算像委比、委差、买卖盘压力这些指标了。但说实话,直接处理原始的CSV文件很麻烦,数据清洗和对齐就能搞死人。我后来图省事,直接用了一些已经处理好时间序列对齐的数据源,虽然花点积分,但效率高太多了。
最后简单对比下,给个直观感受:
| 数据类别 | 它像什么 | 数据量级 | 主要用途 | 新手友好度 |
|---|---|---|---|---|
| 逐笔成交 | 市场的“记账本” | 极大,一天一只股票几十万条 | 微观结构分析,订单流分析,识别大单拆分 | ⭐⭐(容易懵) |
| 十档快照 | 市场的“定妆照” | 很大,但比逐笔少 | 盘口分析,计算买卖压力,量价分析 | ⭐⭐⭐(相对好理解) |
对了,提醒一下,在各大平台发这类文章,特别是涉及具体数据获取代码和接口时,措辞要谨慎。别写“教你免费爬取”这种,容易被判违规。就老老实实分享数据字段解读和使用心得就好,别碰红线。
数据本身是座金矿,但挖矿的铲子(你的硬件和代码能力)得跟上。刚开始建议别直接怼Tick数据,先从日线、分钟线玩起,不然真的会怀疑人生。今天就先聊这么多,手都打酸了,我去搞杯咖啡续命。

