Lean · 第 5 章 数据流与时间同步


文档摘要

Lean · 第 5 章 数据流与时间同步 章节摘要:本章钻取第 5 层——数据流与时间同步(Engine/DataFeeds 121 文件,Lean 最大子模块)。QCAlgorithm 的 OnData 收到的 Slice 是怎么来的?答案是一条"生产者-消费者"链:DataFeed(多线程生产数据)→ SubscriptionCollection(缓冲)→ Synchronizer(单线程消费,产 TimeSlice 流)→ AlgorithmManager(单线程喂算法)。核心是 ISynchronizer 接口的 StreamData() 返回 IEnumerable ,回测用 Synchronizer(按数据时间推进),实盘用 LiveSynchronizer(按墙钟等待)。

Lean · 第 5 章 数据流与时间同步

章节摘要:本章钻取第 5 层——数据流与时间同步(Engine/DataFeeds 121 文件,Lean 最大子模块)。QCAlgorithm 的 OnData 收到的 Slice 是怎么来的?答案是一条"生产者-消费者"链:DataFeed(多线程生产数据)→ SubscriptionCollection(缓冲)→ Synchronizer(单线程消费,产 TimeSlice 流)→ AlgorithmManager(单线程喂算法)。核心是 ISynchronizer 接口的 StreamData() 返回 IEnumerable,回测用 Synchronizer(按数据时间推进),实盘用 LiveSynchronizer(按墙钟等待)。TimeSlice 是引擎内部数据包(含 Slice+SecurityChanges+各种更新数据),Slice 是用户可见部分(Bars/QuoteBars/Ticks/OptionChains+Splits/Dividends)。本章共 3 节,前置依赖为第 1-4 章。

钻取坐标

本章钻取"数据流层"——多品种多频率数据怎么统一成时间序列 Slice。

学习目标

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

  1. 理解 DataFeed→Synchronizer→AlgorithmManager 生产者消费者链。
  2. 读懂 ISynchronizer.StreamData 返回 IEnumerable。
  3. 区分 TimeSlice(引擎内部)与 Slice(用户可见)。
  4. 说清回测 Synchronizer 与实盘 LiveSynchronizer 的差异。
  5. 理解 Fill-Forward(缺失数据前向填充)与 Enumerators。

子章节导航

01 DataFeed 与 DataManager 中介者

FileSystemDataFeed(回测读磁盘"incredibly fast");LiveTradingDataFeed(实盘实时);DataManager 中介者(同时管 DataFeed 与 SubscriptionManager 订阅生命周期,挂 UniverseManager.CollectionChanged 监听 universe 增删);Subscription/SubscriptionCollection/SubscriptionDataReader;生产者消费者模式。

02 Synchronizer 时间同步与 TimeSlice

ISynchronizer 接口(就一个 StreamData 返回 IEnumerable);Synchronizer.StreamData 回测(SubscriptionSynchronizer.Sync 合并所有订阅按数据时间推进);LiveSynchronizer.StreamData 实盘(用 ITimeProvider 墙钟等待下一秒);回测实盘第二个分叉点(Engine.cs L113 _liveMode?LiveSynchronizer:Synchronizer);TimeSlice 引擎内部包(Time/Slice/SecurityChanges/SecuritiesUpdateData/ConsolidatorUpdateData/IsTimePulse)。

03 Slice 用户数据包与 Fill-Forward

Slice 用户可见(ExtendedDictionary:Bars TradeBars/QuoteBars/Ticks/OptionChains/FuturesChains + Splits/Dividends/Delistings);slice["SPY"]或slice.Bars["SPY"]索引;Fill-Forward 缺失数据前向填充(保证时间序列连续);Enumerators 子目录(填充/刷新/裁剪等多种枚举器);Transport/Queues/WorkScheduling 数据传输调度。

前置知识与后续延伸

前置知识:第 1-4 章。

后续延伸:第 6 章钻取数据从磁盘读取的格式(LEAN zip+CSV)与多资产支持。


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