
我终于把A股Level2那几个数据包给跑通了之前被一堆高大上的概念绕晕什么逐笔成交、逐笔委托十档挂单听得我脑仁疼。折腾了小半个月总算在本地把数据接进来跑了一遍才彻底搞明白这里面到底都有些啥长什么样。如果你也在这个坑里直接看我这笔记能省不少力气。先说最刺激我的一点逐笔成交不是简单的一条成交记录汇总它是每一笔实际撮合成功的交易带有买卖发起方向。这个“方向”是盘后300档都看不到的只有Level2实时流才有。懂了这点之后我才发现以前用快照算的资金流向有多糙。这几个数据包到底有什么区别我觉得很多人一开始就卡在这里。官方的说明要么太学术要么太敷衍。直接上我不那么工整的对比表数据种类通俗理解我踩过的坑逐笔成交交易所撮合成功一笔就推一条。大小单、主动买还是主动卖标的清清楚楚。千万别跟Tick行情里的“成交笔数”搞混那个是汇总后的。逐笔成交才是原子粒度。逐笔委托交易所接到一个申报挂单或撤单就推一条。但在深交所逐笔委托是重构的不是原始委托流水。深交所的逐笔委托是用来还原撮合队列的不是真的看到你隔壁那个大户撤单了。上交所是原始委托这点我还没完全确认反正深交所的别当上帝视角。十档行情快照每3秒或实时变化拍一张盘口照片买一卖一到买十卖十带挂单量。不要试图用十档直接拼逐笔成交拼不出来的。快照是断层的中间可能发生了很多撤单和成交。可能有人会问那Level1的五档行情和这个啥区别简单说就是五档行情只有五档更新频率也低看主力大托单还能凑合用想追踪细颗粒的委托流变化必须上十档。逐笔成交里都有啥字段只说用得上的接完数据第一件事就是打印出来看字段比我想象的多但是很多用不着。我把常看的列这儿成交时间精确到毫秒甚至更高精度上交所深交所时间戳格式还不一样我在这上面吃过亏拼接时候要对齐。成交价格就是这笔撮合价。成交量多少股。买卖方向B表示主动买入吃掉卖一S表示主动卖出。有些数据源用Buy/Sell标识这个字段是灵魂。成交编号唯一序号用来去重。委托序号有的数据里带可以跟逐笔委托关联做还原队列的骚操作。但并不是所有数据商都给你。不用盯着那些“成交类型代码”之类的东西死看刚开始研究抓住买卖方向和单量足矣。怎么把这堆数据接到手这中间我还闹了笑话刚开始以为要自己写websocket结果发现有现成的Python库Repo就叫cmesdata是CMES金融数据库提供的一套接口。直接pip一下就完事省了我起码两天的调试时间。# 安装记得在干净环境装冲突少# pip install cmesdata -Ufromcmesdataimportget_tick_l2transaction# CMES金融数据库的行情接口注意入参正确调用频率正常dfget_tick_l2transaction(symbol000001,# 股票代码平安银行date2025-03-10,# 交易日start09:30:00,# 开始时间end10:30:00# 结束时间)print(df.head())print(df.columns)一开始我入参写错了传了tushare的习惯结果报了错后来才发现接口要的是symbol不是ts_code。像这种细节文档里有但一着急就忘。调用频率也要注意慢慢拉别怼着接口狂循环它们有QPS限制。十档盘口和逐笔委托同理用get_tick_snapshot和get_tick_l2order用法差不离换函数名就行。我自己用数据时的一些碎碎念不要一上来就想用逐笔委托构建什么高频因子。如果你连自己的程序接收速率都稳不住先拿逐笔成交练手做做大单统计或者盘口跟随。十档行情别存本地MySQL那个数据量撑不了多久直接存ClickHouse或者Parquet我亲测MySQL一天十档数据写进去查询直接卡死。另外用CMES这边的数据回测我都是先下一周的量本地跑通了再批量拉。因为你不知道中间哪个标的停牌或者数据字段格式微调一口气拉一年的量很容易半路断掉重跑又浪费时间别问我怎么知道的。