Lean · 第 2 章 引擎入口与算法主循环 章节摘要:本章钻取第 2 层——引擎入口与算法主循环。 自称 ENTRY POINT,是单个 backtest/live job 的完整生命周期管理器:初始化(选 Synchronizer→加载算法→创建券商→装配 DataFeed/HistoryProvider)→主循环(Isolator 限制下 AlgorithmManager.Run)→清理。 是真正的事件循环核心:foreach TimeSlice,按固定 13 步顺序处理(推进时钟→更新证券→margin call→股息拆股→聚合器→OnData 用户回调→OnFrameworkData 五段流水线)。本章共 3 节,前置依赖为第 1 章。
章节摘要:本章钻取第 2 层——引擎入口与算法主循环。
Engine.cs自称 ENTRY POINT,是单个 backtest/live job 的完整生命周期管理器:初始化(选 Synchronizer→加载算法→创建券商→装配 DataFeed/HistoryProvider)→主循环(Isolator 限制下 AlgorithmManager.Run)→清理。AlgorithmManager.cs是真正的事件循环核心:foreach TimeSlice,按固定 13 步顺序处理(推进时钟→更新证券→margin call→股息拆股→聚合器→OnData 用户回调→OnFrameworkData 五段流水线)。本章共 3 节,前置依赖为第 1 章。
本章钻取"引擎层"——Engine 怎么组织生命周期、AlgorithmManager 怎么把数据喂给算法。
阅读完本章,你应当能够:
Program.Main 流程编排(Initializer.Start→GetSystemHandlers→JobQueue.NextJob→GetAlgorithmHandlers→new Engine→engine.Run);两套Handler(LeanEngineSystemHandlers/LeanEngineAlgorithmHandlers);Globals.LiveMode 全局模式标志;Engine构造(_marketHoursDatabaseTask异步预热StaticInitializations)。
阶段A初始化(选Synchronizer L113→CreateAlgorithmInstance反射加载DLL→CreateBrokerage→DataManager粘合→DataFeed.Initialize→HistoryProvider装配 parallelHistoryRequestsEnabled:!_liveMode→Setup.Setup执行algorithm.Initialize);阶段B主循环(Isolator.ExecuteWithTimeLimit→algorithmManager.Run);阶段C清理(DisposeSafely/Exit)。
Run 方法 foreach timeSlice in Stream(synchronizer);13步处理(TimeLimit.StartNewTimeStep→SetDateTime推进时钟→IsTimePulse→SetCurrentSlice→SecurityChanges→SecuritiesUpdateData→margin call→OnSecuritiesChanged→HandleDividends/Splits→consolidators→自定义数据methodInvokers→OnData L558→OnFrameworkData L562→ProcessSynchronousEvents→OnEndOfTimeStep);Stream包装方法(warmup进度/ProcessVolatilityHistory预热);收尾OnEndOfAlgorithm/Liquidate。
前置知识:第 1 章(config.json)。
后续延伸:第 3 章钻取 Engine 用到的 Handler 接口层(46接口+双实现)。