/// <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));
            }
        }
Exemple #2
0
        /// <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));
            }
        }
Exemple #5
0
        /// <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));
            }
        }
Exemple #6
0
 /// <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();
 }