为什么要对沪市上交所level2逐笔成交数据的重建, 3 步秒变深市格式
上交所逐笔数据“重建”手册
(让沪市数据 ≈ 深市格式,一份可直接回测的逐笔流水)
1 为什么要重建?
| 痛点 | 上交所原生逻辑 | 造成的后果 |
|---|---|---|
| 1. 委托数量“缺斤短两” | 订单一旦“即时成交”就先发成交、后补委托,委托回报里的 Balance 是剩余量而非原始申报量。 |
① 全成 → 完全没有委托记录 ② 部成 → 先看见 200 成交,再看见 800 委托,原始 1000 被拆成两段 ③ 根本不知道“最初到底报了多少” |
| 2. 主动方订单号失踪 | 主动成交时,主动方的 OrderNo 在委托流里不存在(买方主动就缺买方号,卖方主动就缺卖方号)。 |
无法用 OrderNo 把成交和委托串联起来 |
| 3. 撤单只在委托流 | 撤单仅出现在委托流 (OrdType=D),成交流里没有任何痕迹。 |
与深市不一致,回测时“撤单成交量”丢失 |
深交所没有以上三条坑,因此要把沪市数据“还原”成深市风格,投研与实盘才能用同一套代码。
2 30 秒看懂“重建”总思路
- 补原始委托:把“先成交、后委托”的碎片子单合并,恢复原始申报量。
- 补撤单成交:把委托流里的撤单记录,转成一笔“价格为 0”的撤单成交插到成交流,保持时间序。
- 字段对齐:统一时间、序号、买卖标志等命名,与深市完全一致。
3 Step-by-Step 操作
3.1 在成交流里“造”撤单记录
| 来源 | 条件 | 如何映射成“撤单成交” |
|---|---|---|
| 委托流 | OrdType == 'D' |
直接复制字段,按以下规则硬编码: |
| 深市风格成交字段 | 取值逻辑 |
|---|---|
TradeTime |
TransactTime(委托时间) |
TradePrice |
0(无意义) |
TradeQty |
Balance(撤单量) |
TradeIndex |
0(无意义,排序用 BizIndex) |
ChannelNo |
与原成交一致 |
TradeBSFlag |
'N'(未知) |
BizIndex |
原委托 BizIndex(保证时序) |
| 订单号 | 买方撤单 → BuyOrderNo = BizIndex, SellOrderNo = 0卖方撤单 → SellOrderNo = BizIndex, BuyOrderNo = 0 |
结果:撤单像普通成交一样出现在成交流,成交量=撤单量,价格为 0,一眼可识别。
3.2 修正委托流本身
① 新增委托(原单完全找不到)
| 字段 | 修正值 | 说明 |
|---|---|---|
TransactTime |
对应成交的 TradeTime |
用成交时间作为“委托时间” |
OrderNo |
0 | 无意义 |
Price |
对应成交的 TradePrice |
用成交价当委托价 |
OrderBSFlag |
主动买→'B' 主动卖→'S' | 由成交方向反推 |
OrdType |
'A' | 明确是新增 |
OrderIndex |
0 | 无意义,排序用 BizIndex |
BizIndex |
对应成交的 BizIndex |
保证与成交同序号,方便对齐 |
② 修改委托(已有委托,但数量不对)
- 保留原字段不动,仅把
BizIndex与对应成交的BizIndex互换,确保后续能一对一关联。
3.3 数量合并算法(流程图文字版)
for each 即时成交单
1. 按 OrderNo + 买卖方向 聚合
2. 找到所有“先成交、后委托”片段
3. 原始申报量 = 成交qty + 后续委托Balance
4. 把委托记录的 Balance 改成“原始申报量”
5. 删除重复的碎片委托,只留一条
4 最终输出格式(与深市 100% 兼容)
成交流(Trade)
| 字段 | 说明 |
|---|---|
TradeTime |
成交时间(撤单用委托时间) |
TradePrice |
成交价(撤单为 0) |
TradeQty |
成交量(撤单为撤单量) |
BuyOrderNo |
买方订单号 |
SellOrderNo |
卖方订单号 |
TradeBSFlag |
'B'/'S'/'N' |
BizIndex |
业务序号(时序关键) |
委托流(Order)
| 字段 | 说明 |
|---|---|---|
| TransactTime | 委托时间(即时成交的用成交时间) |
| OrderNo | 订单号(即时成交的填 0) |
| Price | 委托价(即时成交的用成交价) |
| Balance | 原始申报量(已合并碎片) |
| OrderBSFlag | 'B'/'S' |
| OrdType | 'A'新增 / 'D'撤单 |
5 数据源 & 实盘接入
已支持沪市逐笔重建的商用 API:
stockapi.com.cn (含示例代码,券商实盘权限开通指引)主流券商均可申请量化终端,门槛从 0 元到 300 万不等,重建后的数据可直接灌入 Python/C++ 策略,投研与实盘零差异。



评论 (0)