/// <summary> /// Creates an enumerator to read the specified request /// </summary> /// <param name="request">The subscription request to be read</param> /// <param name="dataFileProvider">Provider used to get data when it is not present on disk</param> /// <returns>An enumerator reading the subscription request</returns> public IEnumerator <BaseData> CreateEnumerator(SubscriptionRequest request, IDataFileProvider dataFileProvider) { if (_isLiveMode) { var localTime = request.StartTimeUtc.ConvertFromUtc(request.Configuration.ExchangeTimeZone); // loading the list of option contract and converting them into zip entries var symbols = _symbolUniverse.LookupSymbols(request.Security.Symbol.Underlying.ToString(), request.Security.Type); var zipEntries = symbols.Select(x => new ZipEntryName { Time = localTime, Symbol = x } as BaseData).ToList(); // creating trade bar builder enumerator to model underlying price change var underlyingEnumerator = new TradeBarBuilderEnumerator(request.Configuration.Increment, request.Security.Exchange.TimeZone, _timeProvider); // configuring the enumerator var subscriptionConfiguration = GetSubscriptionConfigurations(request).First(); var subscriptionRequest = new SubscriptionRequest(request, configuration: subscriptionConfiguration); var configuredEnumerator = _enumeratorConfigurator(subscriptionRequest, underlyingEnumerator); return(new DataQueueOptionChainUniverseDataCollectionEnumerator(request.Security.Symbol, configuredEnumerator, zipEntries)); } else { var factory = new BaseDataSubscriptionEnumeratorFactory(_mapFileResolver, _factorFileProvider); var enumerators = GetSubscriptionConfigurations(request) .Select(c => new SubscriptionRequest(request, configuration: c)) .Select(sr => _enumeratorConfigurator(request, factory.CreateEnumerator(sr, dataFileProvider))); var sync = new SynchronizingEnumerator(enumerators); return(new OptionChainUniverseDataCollectionEnumerator(sync, request.Security.Symbol)); } }
/// <summary> /// Creates an enumerator to read the specified request /// </summary> /// <param name="request">The subscription request to be read</param> /// <param name="dataProvider">Provider used to get data when it is not present on disk</param> /// <returns>An enumerator reading the subscription request</returns> public IEnumerator <BaseData> CreateEnumerator(SubscriptionRequest request, IDataProvider dataProvider) { if (_isLiveMode) { // creating trade bar builder enumerator to model underlying price change var underlyingEnumerator = new TradeBarBuilderEnumerator(request.Configuration.Increment, request.Security.Exchange.TimeZone, _timeProvider); // configuring the enumerator var subscriptionConfiguration = GetSubscriptionConfigurations(request).First(); var subscriptionRequest = new SubscriptionRequest(request, configuration: subscriptionConfiguration); var configuredEnumerator = _enumeratorConfigurator(subscriptionRequest, underlyingEnumerator); return(new DataQueueOptionChainUniverseDataCollectionEnumerator(subscriptionRequest, configuredEnumerator, _symbolUniverse, _timeProvider)); } else { var factory = new BaseDataSubscriptionEnumeratorFactory(_isLiveMode, _mapFileResolver, _factorFileProvider); var enumerators = GetSubscriptionConfigurations(request) .Select(c => new SubscriptionRequest(request, configuration: c)) .Select(sr => _enumeratorConfigurator(request, factory.CreateEnumerator(sr, dataProvider))); var sync = new SynchronizingEnumerator(enumerators); return(new OptionChainUniverseDataCollectionEnumerator(sync, request.Security.Symbol)); } }
/// <summary> /// Creates an enumerator to read the specified request /// </summary> /// <param name="request">The subscription request to be read</param> /// <param name="dataProvider">Provider used to get data when it is not present on disk</param> /// <returns>An enumerator reading the subscription request</returns> public IEnumerator <BaseData> CreateEnumerator(SubscriptionRequest request, IDataProvider dataProvider) { if (_isLiveMode) { var subscriptionRequest = new SubscriptionRequest(request, configuration: GetSubscriptionConfiguration(request)); return(new DataQueueFuturesChainUniverseDataCollectionEnumerator(subscriptionRequest, _symbolUniverse, _timeProvider)); } else { var factory = new BaseDataSubscriptionEnumeratorFactory(_isLiveMode, _dataCacheProvider); var newRequest = new SubscriptionRequest(request, configuration: GetSubscriptionConfiguration(request)); var enumerator = _enumeratorConfigurator(request, factory.CreateEnumerator(newRequest, dataProvider)); return(new FuturesChainUniverseDataCollectionAggregatorEnumerator(enumerator, request.Security.Symbol)); } }
/// <summary> /// Creates an enumerator to read the specified request /// </summary> /// <param name="request">The subscription request to be read</param> /// <param name="dataProvider">Provider used to get data when it is not present on disk</param> /// <returns>An enumerator reading the subscription request</returns> public IEnumerator <BaseData> CreateEnumerator(SubscriptionRequest request, IDataProvider dataProvider) { if (_isLiveMode) { var subscriptionConfiguration = GetSubscriptionConfigurations(request).First(); var subscriptionRequest = new SubscriptionRequest(request, configuration: subscriptionConfiguration); return(new DataQueueFuturesChainUniverseDataCollectionEnumerator(subscriptionRequest, _symbolUniverse, _timeProvider)); } else { var factory = new BaseDataSubscriptionEnumeratorFactory(_isLiveMode); var enumerators = GetSubscriptionConfigurations(request) .Select(c => new SubscriptionRequest(request, configuration: c)) .Select(sr => _enumeratorConfigurator(request, factory.CreateEnumerator(sr, dataProvider))); var sync = new SynchronizingEnumerator(enumerators); return(new FuturesChainUniverseDataCollectionAggregatorEnumerator(sync, request.Security.Symbol)); } }
/// <summary> /// Creates an enumerator to read the specified request /// </summary> /// <param name="request">The subscription request to be read</param> /// <param name="dataProvider">Provider used to get data when it is not present on disk</param> /// <returns>An enumerator reading the subscription request</returns> public IEnumerator <BaseData> CreateEnumerator(SubscriptionRequest request, IDataProvider dataProvider) { if (_isLiveMode) { var localTime = request.StartTimeUtc.ConvertFromUtc(request.Configuration.ExchangeTimeZone); // loading the list of futures contracts and converting them into zip entries var symbols = _symbolUniverse.LookupSymbols(request.Security.Symbol.ID.Symbol, request.Security.Type); var zipEntries = symbols.Select(x => new ZipEntryName { Time = localTime, Symbol = x } as BaseData).ToList(); var underlyingEnumerator = new TradeBarBuilderEnumerator(request.Configuration.Increment, request.Security.Exchange.TimeZone, _timeProvider); underlyingEnumerator.ProcessData(new Tick { Value = 0 }); // configuring the enumerator var subscriptionConfiguration = GetSubscriptionConfigurations(request).First(); var subscriptionRequest = new SubscriptionRequest(request, configuration: subscriptionConfiguration); var configuredEnumerator = _enumeratorConfigurator(subscriptionRequest, underlyingEnumerator); return(new DataQueueFuturesChainUniverseDataCollectionEnumerator(request.Security.Symbol, configuredEnumerator, zipEntries)); } else { var factory = new BaseDataSubscriptionEnumeratorFactory(_isLiveMode); var enumerators = GetSubscriptionConfigurations(request) .Select(c => new SubscriptionRequest(request, configuration: c)) .Select(sr => _enumeratorConfigurator(request, factory.CreateEnumerator(sr, dataProvider))); var sync = new SynchronizingEnumerator(enumerators); return(new FuturesChainUniverseDataCollectionAggregatorEnumerator(sync, request.Security.Symbol)); } }
/// <summary> /// Initializes a new instance of the <see cref="OptionChainUniverseSubscriptionEnumeratorFactory"/> class /// </summary> /// <param name="enumeratorConfigurator">Function used to configure the sub-enumerators before sync (fill-forward/filter/ect...)</param> public OptionChainUniverseSubscriptionEnumeratorFactory(Func <SubscriptionRequest, IEnumerator <BaseData>, IEnumerator <BaseData> > enumeratorConfigurator) { _enumeratorConfigurator = enumeratorConfigurator; _factory = new BaseDataSubscriptionEnumeratorFactory(); }