12. Live Trading S1.3 设计理念与架构

本文从设计视角解释 S1.3 的 live trading 改造思路:为什么这样分层、如何保持兼容、以及这些设计如何帮助后续扩展。

12.1. 0. 文档定位

  • 本文是设计说明,不是使用教程

  • 重点回答“为什么这样做”,而不是“如何一步步操作”

  • 若需要实操路径,请转到 live_trading/2-configuration-and-run.mdtutorials/8-live-trade-risk-and-broker-walkthrough.md

12.2. 1. 设计目标

  • 在不破坏既有用户路径的前提下,提升 live 链路的可校验性与可审计性

  • 把风险控制前置到“下单写库之前”

  • 抽象 Broker 适配层,为未来真实柜台接入预留稳定边界

12.3. 2. 分层结构

S1.3 的 live 相关职责可抽象为:

  • Operator:策略运行调度与信号来源

  • Trader:订单意图落地、风险闸门与执行协调

  • RiskManager:纯逻辑规则评估,不依赖 IO

  • Broker:提交、取消、回报、连接语义

  • trade_io:订单/成交数据契约校验

12.4. 3. 关键设计原则

3.1 契约先行

订单 dict 与成交 dict 在边界处校验,避免“结构错了还能跑”导致的静默错误。

3.2 风控前置

风险评估在写库和入队之前完成,拒单不污染执行数据。

3.3 适配解耦

通过 broker adapter API 承载未来接入,降低 Trader 与具体柜台的耦合度。

3.4 可审计

拒因以 rule_id 和英文 reason 对外可见,支持运维检索与复盘。

12.5. 4. 典型疑难点与取舍

4.1 拒单兼容语义

保持历史兼容(拒单可表现为空结果),同时增强可见性(CLI/TUI 摘要 + 日志)。

4.2 新旧链路并存

保留 legacy queue 兼容路径,避免一次性迁移带来的回归风险。

4.3 状态一致性

分批成交场景下,状态应以累计成交量为准,减少用户观察到的语义偏差。

12.6. 5. 与 S2.1 的关系

S1.3 不是柜台接入终点,而是前置地基:

  • 先稳定接口边界

  • 再逐步接入真实柜台

  • 最后在不破坏上层用法的前提下扩展能力

12.7. 6. 对用户行为的影响

  • 配置错误更早暴露

  • 拒单原因更容易定位

  • live 运行中的状态变化更容易解释

  • 扩展第三方 broker 的成本更可控

12.8. 7. 相关阅读

  • 模块总览:live_trading/1-overview.md

  • 运行与配置:live_trading/2-configuration-and-run.md

  • 风控与状态:live_trading/3-risk-and-order-lifecycle.md

  • Broker 接入:live_trading/4-broker-adapter-and-integration.md