Lean · 第 2 章 引擎入口与算法主循环


文档摘要

Lean · 第 2 章 引擎入口与算法主循环 章节摘要:本章钻取第 2 层——引擎入口与算法主循环。 自称 ENTRY POINT,是单个 backtest/live job 的完整生命周期管理器:初始化(选 Synchronizer→加载算法→创建券商→装配 DataFeed/HistoryProvider)→主循环(Isolator 限制下 AlgorithmManager.Run)→清理。 是真正的事件循环核心:foreach TimeSlice,按固定 13 步顺序处理(推进时钟→更新证券→margin call→股息拆股→聚合器→OnData 用户回调→OnFrameworkData 五段流水线)。本章共 3 节,前置依赖为第 1 章。

Lean · 第 2 章 引擎入口与算法主循环

章节摘要:本章钻取第 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 怎么把数据喂给算法。

学习目标

阅读完本章,你应当能够:

  1. 读懂 Program.cs 怎么读 config 启动 Engine。
  2. 理解 Engine.Run 的三阶段(初始化→主循环→清理)。
  3. 说清回测实盘第一个分叉点(L113 Synchronizer vs LiveSynchronizer)。
  4. 读懂 AlgorithmManager.Run 的 foreach TimeSlice 13 步。
  5. 理解 Isolator 的内存/CPU/时间预算隔离。

子章节导航

01 Program.cs 启动与 Engine 构造

Program.Main 流程编排(Initializer.Start→GetSystemHandlers→JobQueue.NextJob→GetAlgorithmHandlers→new Engine→engine.Run);两套Handler(LeanEngineSystemHandlers/LeanEngineAlgorithmHandlers);Globals.LiveMode 全局模式标志;Engine构造(_marketHoursDatabaseTask异步预热StaticInitializations)。

02 Engine.Run 生命周期三阶段

阶段A初始化(选Synchronizer L113→CreateAlgorithmInstance反射加载DLL→CreateBrokerage→DataManager粘合→DataFeed.Initialize→HistoryProvider装配 parallelHistoryRequestsEnabled:!_liveMode→Setup.Setup执行algorithm.Initialize);阶段B主循环(Isolator.ExecuteWithTimeLimit→algorithmManager.Run);阶段C清理(DisposeSafely/Exit)。

03 AlgorithmManager 算法主循环 13 步

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接口+双实现)。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U