一、协议基础认知:逐笔委托是什么?为什么需要逐笔协议?与快照数据的核心区别
大家好,我是你们这门课的老朋友。今天咱们聊聊最基础、也最容易被忽视的问题——逐笔委托协议到底是什么玩意儿。
说实话,我刚入行那会儿,也以为交易所的数据就是「行情软件上那些红红绿绿的数字」。直到第一次被老板叫去排查一个「盘口数据对不上」的线上问题,我才发现,原来我们平时看到的那些行情,背后藏着另一套完全不同的数据体系。
1.1 逐笔委托:最原始的「交易流水」
逐笔委托,说白了就是交易所系统里,每一笔订单的原始记录。
你想想看,当你在交易软件上点下「买入」按钮,这个指令会变成一条消息,发送到交易所的撮合引擎。这条消息长什么样?它包含了:
- 委托方向:买还是卖
- 委托价格:你愿意出多少钱
- 委托数量:你想买多少股
- 委托时间:精确到微秒的时间戳
- 委托编号:交易所给这笔订单的唯一身份证
嗯,这就是逐笔委托。它记录的是「谁、在什么时候、想以什么价格、买卖多少」。每一笔都是独立的、原始的、未经加工的。
核心要点:逐笔委托 = 交易所撮合引擎的「输入」数据。它是所有行情数据的源头。
1.2 为什么需要逐笔协议?
你可能会问:「我平时看行情软件,K线图、五档盘口不都好好的吗?干嘛还要搞个逐笔协议?」
这个问题问得好。我当年也这么想过。
后来我在一家量化私募做系统对接时,发现一个现象:同样的股票,不同行情软件显示的「最新成交价」偶尔会差那么一两分钱。为什么?因为快照数据是「抽样」的,而逐笔数据是「全量」的。
逐笔协议存在的理由,主要有三点:
- 还原真实交易过程:快照只能告诉你「当前时刻的盘口长什么样」,但逐笔能告诉你「盘口是怎么变成这样的」。每一笔订单的进入、撤单、成交,都有迹可循。
- 高频交易的基础:做高频策略的人,需要知道每一微秒的订单流变化。快照数据更新频率再高(比如3秒一次),也远远不够。逐笔数据才是他们的「石油」。
- 数据一致性校验:我在项目中遇到过,某次行情源出了问题,快照数据里的「总成交量」和逐笔累加出来的对不上。如果没有逐笔数据做交叉验证,这种bug根本发现不了。
我的经验:如果你只做日频或分钟级策略,快照数据可能够用。但一旦涉及日内高频、订单流分析、市场微观结构研究,逐笔协议就是绕不开的坎。
1.3 逐笔委托 vs 快照数据:核心区别
这里我画了一张图,帮你直观理解两者的关系。
这张图其实已经说得很清楚了。我再补充几个关键点:
| 对比维度 | 逐笔委托 | 快照数据 |
|---|---|---|
| 数据本质 | 原始订单流 | 盘口状态快照 |
| 更新方式 | 事件驱动(有订单就推送) | 定时推送(固定间隔) |
| 信息含量 | 包含所有订单的完整信息 | 只包含聚合后的买卖盘口 |
| 延迟要求 | 极低(微秒级) | 较低(毫秒级即可) |
| 典型协议 | STEP、Binary、自定义二进制 | FIX、MDH、UDP组播 |
| 解析难度 | 高(需要处理乱序、重传) | 低(结构固定) |
避坑指南:我曾经接手过一个项目,对方用快照数据做高频回测,结果策略在实盘时完全失效。原因就是快照数据丢失了「订单簿中间状态」——比如一笔大单撤单导致的价格跳跃,快照根本捕捉不到。逐笔数据才能还原这些细节。
1.4 一个简单的例子帮你理解
假设某只股票当前盘口是这样的:
- 买一:10.00元,1000股
- 卖一:10.01元,500股
这时候来了一笔逐笔委托:
委托编号:202410010001
委托方向:买入
委托价格:10.01元
委托数量:600股
委托时间:09:30:00.123456
这笔订单进入撮合引擎后,会发生什么?
- 它会和卖一的500股成交,成交价10.01元
- 剩下的100股变成新的买一,价格10.01元
- 盘口状态发生变化
快照数据只会告诉你「09:30:03秒时,买一变成了10.01元,100股」。但逐笔数据告诉你:这100股是怎么来的——它是一笔600股的买入订单,先成交了500股,剩下的100股挂在了盘口上。
你看,这就是区别。快照告诉你「是什么」,逐笔告诉你「为什么」。
1.5 实际开发中要注意什么
嗯,聊到这里,我想给你几个实用的建议:
- 不要用快照数据反推逐笔:我见过有人试图从连续的快照数据中「还原」订单流,结果误差大得离谱。快照之间的订单变化是不可知的。
- 逐笔数据需要做时序对齐:不同交易所的逐笔协议,时间戳精度可能不同。有的精确到微秒,有的只到毫秒。做跨市场分析时,这个坑一定要填。
- 数据量是硬伤:A股一天的逐笔数据,压缩后大概几百MB到几个GB。你的存储和带宽要提前规划好。
我的习惯:在项目初期,我会先用快照数据做原型验证。等逻辑跑通了,再切换到逐笔数据做精细化分析。这样既能快速迭代,又能保证最终精度。
好了,这一章的内容就到这里。逐笔委托协议是后续所有章节的基础,理解它和快照数据的区别,能帮你少走很多弯路。下一章,我们会深入具体的协议格式,看看这些二进制数据到底是怎么组织的。