迭代 138:Tick 级回测架构实现

版本: v1.0 | 日期: 2026-02-28 | 状态: 待开发


1. 迭代概述

1.1 目标

实现 Backtrader 的 Tick 级回测与实盘交易能力,支持:

  • Tick 数据(逐笔成交)

  • OrderBook 数据(盘口深度)

  • Bar 数据(K 线数据)

  • FundingRate 数据(资金费率)

  • 自定义数据通道

  • 三种运行模式(纯 K 线/纯 Tick/混合)

1.2 背景

基于以下设计文档:

  • docs/opts/TICK_LEVEL_ARCHITECTURE_DESIGN.md - 总体架构设计

  • docs/opts/TICK_LEVEL_DESIGN_PART2.md - 详细设计

  • docs/opts/TICK_LEVEL_ARCHITECTURE_IMPROVEMENTS.md - 优化建议

1.3 实施策略

采用分阶段迭代方式,每个 Phase 独立可测试,降低风险:

| Phase | 周期 | 重点 | 风险等级 |

|——-|——|——|———|

| Phase 0 | 1 周 | 架构验证 + 必须优化 | 低 |

| Phase 1 | 3 周 | 核心基础设施 | 中 |

| Phase 2 | 3 周 | 回测引擎 + Broker | 高 |

| Phase 3 | 2 周 | OrderBook 撮合 | 中 |

| Phase 4 | 2 周 | 桥接与实盘 | 中 |

| Phase 5 | 1 周 | 文档与示例 | 低 |

  • 总计*:12 周(约 3 个月)


2. 文档结构

迭代 138/
├── README.md                           # 本文档

├── 01_Phase0_架构验证.md                # Phase 0 实施计划

├── 02_Phase1_核心基础设施.md            # Phase 1 实施计划

├── 03_Phase2_回测引擎.md                # Phase 2 实施计划

├── 04_Phase3_OrderBook 撮合.md          # Phase 3 实施计划

├── 05_Phase4_桥接与实盘.md              # Phase 4 实施计划

├── 06_Phase5_文档与示例.md              # Phase 5 实施计划

├── 测试策略.md                          # 整体测试策略

├── 风险评估.md                          # 风险识别与应对

└── 验收标准.md                          # 迭代验收标准

```bash

- --

## 3. 核心设计决策

### 3.1 Channel 独立于 LineSeries

- *决策**:DataChannel 不继承 LineSeries,使用 deque 作缓冲

- *理由**:
- 性能:LineSeries overhead  deque  200 倍
- 灵活性:支持 OrderBook 2D 结构、字符串字段
- 兼容性:零回归风险

- *权衡**:需要可选桥接机制支持指标系统

### 3.2 流式 EventQueue

- *决策**:使用 StreamingEventQueue 替代全量预加载

- *理由**:
- 内存:从 1.7GB 降至~100MB(5 分钟窗口)
- 启动:即时启动 vs 10-30 秒加载
- 扩展性:支持长时间回测

- *优化**(来自改进建议):
- 自适应预加载窗口
- 批量加载优化
- 内存泄漏防护

### 3.3 三种 Broker 模式

- *决策**:BackBroker(不变)+ TickBroker + MixBroker

- *理由**:
- 向后兼容:BackBroker 完全不变
- 真实性:TickBroker 支持 tick 级撮合
- 实用性:MixBroker 兼顾性能与准确性

- *优化**(来自改进建议):
- MixBroker 撮合顺序优化
- 订单簿深度撮合
- 市场冲击模型

### 3.4 批处理通知机制

- *决策**:同 timestamp 内收集所有通知,统一分发

- *理由**:
- 避免策略在同 timestamp 内收到"未来"通知
- 保证事件处理顺序的确定性

- *优化**(来自改进建议):
- 优先级通知队列
- 通知持久化与重放

- --

## 4. 关键优化点(来自改进建议)

### 4.1 Phase 0 必须实施

| 优化项 | 预期收益 | 复杂度 |

|--------|---------|--------|

| StreamingEventQueue 自适应窗口 | 内存-30~50% |  |

| 数据验证与修复 | 稳定性++ |  |

| 策略异常隔离 | 生产可用 |  |

### 4.2 Phase 1 重要实施

| 优化项 | 预期收益 | 复杂度 |

|--------|---------|--------|

| MixBroker 撮合顺序优化 | 准确性++ |  |

| 订单簿深度撮合 | 真实性++ |  |

| 优先级通知队列 | 确定性++ |  |

| Channel 共享模式 | 灵活性++ |  |

### 4.3 Phase 2 可选实施

| 优化项 | 预期收益 | 复杂度 |

|--------|---------|--------|

| 市场冲击模型 | 大单准确性++ |  |

| 性能分析器 | 可观测性++ |  |

| 配置管理 | 可维护性++ |  |

| 批量加载优化 | I/O-40~60% |  |

- --

## 5. 技术栈

### 5.1 核心依赖

```python

# 现有依赖(不变)

backtrader >= 1.9.76
numpy >= 1.19.0
pandas >= 1.1.0

# 新增依赖

dataclasses >= 0.6  # Python 3.6 兼容

typing-extensions >= 3.7.4  # 类型提示

```bash

### 5.2 可选依赖

```python

# 性能监控

psutil >= 5.8.0

# 配置管理

pyyaml >= 5.4.0

# 实盘交易

ccxt >= 1.50.0
websocket-client >= 1.0.0

```bash

- --

## 6. 开发流程

### 6.1 分支策略

```bash
main
  └── feature/tick-level-architecture
        ├── phase0-validation
        ├── phase1-infrastructure
        ├── phase2-backtest-engine
        ├── phase3-orderbook
        ├── phase4-live-trading
        └── phase5-documentation

```bash

### 6.2 代码审查要求

每个 Phase 完成后必须:

1.  单元测试覆盖率 >= 80%
2.  集成测试通过
3.  性能基准测试
4.  代码审查通过
5.  文档更新

### 6.3 合并策略

- Phase 完成  合并到 feature 分支
- 所有 Phase 完成  合并到 main

- --

## 7. 质量保证

### 7.1 测试策略

详见 `测试策略.md`

- *测试金字塔**:

```bash
       /\
      /E2E\         10% - 端到端测试
     /------\
    /集成测试\       30% - 集成测试
   /----------\
  /  单元测试  \     60% - 单元测试
 /--------------\

```bash

### 7.2 性能基准

| 场景 | 目标 | 测量方法 |

|------|------|---------|

| 1  Tick 回测 | < 10  | benchmark_tick.py |

| 内存使用 | < 200MB | memory_profiler |

| 事件处理 | > 10K events/s | performance_test.py |

### 7.3 回归测试

- *零回归承诺**:
- 现有 1020 个测试必须全部通过
-  K 线模式(BAR)行为完全不变
- 向后兼容所有现有 API

- --

## 8. 风险管理

详见 `风险评估.md`

### 8.1 主要风险

| 风险 | 概率 | 影响 | 应对措施 |

|------|------|------|---------|

| 性能不达标 |  |  | Phase 0 验证 + 性能分析器 |

| 内存泄漏 |  |  | 内存监控 + 定期快照 |

| 回归 bug |  |  | 完整回归测试 + CI |

| 实盘数据异常 |  |  | 数据验证 + 异常处理 |

### 8.2 应急预案

- **性能问题**:降级到简化版 EventQueue
- **内存问题**:减小预加载窗口
- **回归问题**:回滚到上一个稳定版本
- **数据问题**:启用 auto_fix 模式

- --

## 9. 验收标准

详见 `验收标准.md`

### 9.1 功能验收

- [ ] 支持 Tick/OrderBook/FundingRate 数据
- [ ] 三种运行模式(BAR/TICK/MIXED)正常工作
- [ ] TickBroker/MixBroker 撮合准确
- [ ] 实盘 WebSocket 数据接入正常

### 9.2 性能验收

- [ ] 1  Tick 回测 < 10 秒
- [ ] 内存使用 < 200MB
- [ ] 零回归(1020 测试全通过)

### 9.3 质量验收

- [ ] 单元测试覆盖率 >= 80%
- [ ] 集成测试通过率 100%
- [ ] 文档完整(API 文档 + 用户指南)

- --

## 10. 里程碑

| 里程碑 | 日期 | 交付物 |

|--------|------|--------|

| M1: Phase 0 完成 | Week 1 | 架构验证 + 性能基准 |

| M2: Phase 1 完成 | Week 4 | 核心基础设施 + 单元测试 |

| M3: Phase 2 完成 | Week 7 | 回测引擎 + 集成测试 |

| M4: Phase 3 完成 | Week 9 | OrderBook 撮合 |

| M5: Phase 4 完成 | Week 11 | 实盘交易 |

| M6: 迭代 138 完成 | Week 12 | 完整文档 + 示例 |

- --

## 11. 参考资料

### 11.1 设计文档

- [TICK_LEVEL_ARCHITECTURE_DESIGN.md](../../TICK_LEVEL_ARCHITECTURE_DESIGN.md)
- [TICK_LEVEL_DESIGN_PART2.md](../../TICK_LEVEL_DESIGN_PART2.md)
- [TICK_LEVEL_ARCHITECTURE_IMPROVEMENTS.md](../../TICK_LEVEL_ARCHITECTURE_IMPROVEMENTS.md)

### 11.2 相关迭代

- 迭代 13:多数据长度不一致修复
- 迭代 14:去除元类后的 indicator/analyzer 修复
- 性能优化阶段 1:核心性能优化(-46% runonce 时间)

### 11.3 外部参考

- [CCXT 文档](<https://docs.ccxt.com/)>
- [WebSocket 协议](<https://datatracker.ietf.org/doc/html/rfc6455)>
- [Python asyncio](<https://docs.python.org/3/library/asyncio.html)>

- --

## 12. 联系方式

- **项目负责人**:待定
- **技术负责人**:待定
- **测试负责人**:待定

- --

## 附录

### A. 术语表

| 术语 | 说明 |

|------|------|

| Tick | 逐笔成交数据,包含价格、成交量、方向 |

| OrderBook | 订单簿/盘口深度,包含多档买卖价格和数量 |

| FundingRate | 资金费率,用于永续合约 |

| Channel | 数据通道,独立于 LineSeries 的数据流 |

| EventQueue | 事件队列,按时间戳排序的全局事件流 |

| StreamingEventQueue | 流式事件队列,分批加载以控制内存 |

| TickBroker | Tick 级订单撮合器 |

| MixBroker | 混合撮合器(Tick + Bar) |

### B. 缩写

| 缩写 | 全称 |

|------|------|

| OB | OrderBook |

| WS | WebSocket |

| OHLC | Open/High/Low/Close |

| VWAP | Volume Weighted Average Price |

| E2E | End-to-End |

| CI | Continuous Integration |