Lean · 第 3 章 Handler 插件化与回测实盘统一 ★ 章节摘要:本章是全书第一个高潮(★),钻取第 3 层——Handler 插件化,这是 Lean "回测与实盘统一"的核心设计。Lean 定义了五大核心 Handler 接口(IDataFeed 数据流/ISetupHandler 初始化/IResultHandler 结果/ITransactionHandler 交易/IRealTimeHandler 实时)+ IHistoryProvider 历史 + IBrokerage 券商,每个接口都有 Backtesting 和 LiveTrading 两套实现。引擎代码对所有模式一视同仁,差异完全收敛到 config.
章节摘要:本章是全书第一个高潮(★),钻取第 3 层——Handler 插件化,这是 Lean "回测与实盘统一"的核心设计。Lean 定义了五大核心 Handler 接口(IDataFeed 数据流/ISetupHandler 初始化/IResultHandler 结果/ITransactionHandler 交易/IRealTimeHandler 实时)+ IHistoryProvider 历史 + IBrokerage 券商,每个接口都有 Backtesting* 和 LiveTrading* 两套实现。引擎代码对所有模式一视同仁,差异完全收敛到 config.json 选哪个 environment 装配哪套 handler 字符串。
Common/Interfaces/共 43 个接口文件,加上 Engine 子目录的 5 个带 [InheritedExport] MEF 自注册的 handler 接口。本章共 3 节,前置依赖为第 1-2 章。
本章钻取"插件层"——回测实盘统一的核心:换 handler 实现即可。
阅读完本章,你应当能够:
IDataFeed(Initialize/CreateSubscription/RemoveSubscription);ISetupHandler(CreateAlgorithmInstance反射加载/CreateBrokerage/Setup执行Initialize);IResultHandler(Initialize/Sample采样/DebugMessage/ProcessSynchronousEvents);ITransactionHandler(Initialize/ProcessSynchronousEvents/Orders字典);IRealTimeHandler(Setup/SetTime回测模拟时钟/ScanPastEvents补漏)。
回测:FileSystemDataFeed(读磁盘)+BacktestingTransactionHandler(模拟成交)+BacktestingResultHandler+BacktestingRealTimeHandler+BacktestingSetupHandler;实盘:LiveTradingDataFeed(实时)+BrokerageTransactionHandler(真实)+LiveTradingResultHandler+LiveTradingRealTimeHandler+BrokerageSetupHandler+额外data-queue-handler实时行情源;三个分叉点(Synchronizer/环境handler/_liveMode分支)。
[InheritedExport(typeof(IXxx))] MEF 标记接口自注册;Common/Util/Composer.cs 的 GetExportedValueByTypeName(typeName) 通过反射+类型名匹配实例化;LeanEngineSystemHandlers/LeanEngineAlgorithmHandlers 两套handler容器;依赖反转原则(引擎依赖接口不依赖实现)。
前置知识:第 1-2 章。
后续延伸:第 4 章钻取用户 API 层 QCAlgorithm(被 SetupHandler 加载的用户代码)。