/// <summary> /// Initializes the instance of the Synchronizer class /// </summary> public override void Initialize( IAlgorithm algorithm, IDataFeedSubscriptionManager dataFeedSubscriptionManager) { base.Initialize(algorithm, dataFeedSubscriptionManager); // the time provider, is the real time provider _timeProvider = GetTimeProvider(); _frontierTimeProvider = new LiveTimeProvider(realTime: TimeProvider); // the synchronizer will use our '_frontierTimeProvider' which initially during warmup will be using // the base time provider which is the subscription based time provider (like backtesting) // once wawrmup finishes it will start using the realtime provider SubscriptionSynchronizer.SetTimeProvider(_frontierTimeProvider); // attach event handlers to subscriptions dataFeedSubscriptionManager.SubscriptionAdded += (sender, subscription) => { subscription.NewDataAvailable += OnSubscriptionNewDataAvailable; }; dataFeedSubscriptionManager.SubscriptionRemoved += (sender, subscription) => { subscription.NewDataAvailable -= OnSubscriptionNewDataAvailable; }; _realTimeScheduleEventService = new RealTimeScheduleEventService(new RealTimeProvider()); // this schedule event will be our time pulse _realTimeScheduleEventService.NewEvent += (sender, args) => _newLiveDataEmitted.Set(); }
/// <summary> /// Initializes the instance of the Synchronizer class /// </summary> public override void Initialize( IAlgorithm algorithm, IDataFeedSubscriptionManager dataFeedSubscriptionManager) { base.Initialize(algorithm, dataFeedSubscriptionManager); _timeProvider = GetTimeProvider(); SubscriptionSynchronizer.SetTimeProvider(TimeProvider); // attach event handlers to subscriptions dataFeedSubscriptionManager.SubscriptionAdded += (sender, subscription) => { subscription.NewDataAvailable += OnSubscriptionNewDataAvailable; }; dataFeedSubscriptionManager.SubscriptionRemoved += (sender, subscription) => { subscription.NewDataAvailable -= OnSubscriptionNewDataAvailable; }; _realTimeScheduleEventService = new RealTimeScheduleEventService(new RealTimeProvider()); // this schedule event will be our time pulse _realTimeScheduleEventService.NewEvent += (sender, args) => _newLiveDataEmitted.Set(); }