예제 #1
0
 /// <summary>
 /// Gets the subscription requests to be added for the specified security
 /// </summary>
 /// <param name="security">The security to get subscriptions for</param>
 /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
 /// <param name="maximumEndTimeUtc">The max end time</param>
 /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
 /// <returns>All subscriptions required by this security</returns>
 public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security,
                                                                           DateTime currentTimeUtc,
                                                                           DateTime maximumEndTimeUtc,
                                                                           ISubscriptionDataConfigService subscriptionService)
 {
     return(Universe.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
 }
예제 #2
0
 /// <summary>
 /// Gets the subscription requests to be added for the specified security
 /// </summary>
 /// <param name="security">The security to get subscriptions for</param>
 /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
 /// <param name="maximumEndTimeUtc">The max end time</param>
 /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
 /// <returns>All subscriptions required by this security</returns>
 public override IEnumerable<SubscriptionRequest> GetSubscriptionRequests(Security security,
     DateTime currentTimeUtc,
     DateTime maximumEndTimeUtc,
     ISubscriptionDataConfigService subscriptionService)
 {
     var result = _subscriptionDataConfigs.Where(x => x.Symbol == security.Symbol).ToList();
     if (!result.Any())
     {
         result = _pendingRemovedConfigs.Where(x => x.Symbol == security.Symbol).ToList();
         if (result.Any())
         {
             _pendingRemovedConfigs.RemoveWhere(x => x.Symbol == security.Symbol);
         }
         else
         {
             result = base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService).Select(x => x.Configuration).ToList();
             // we create subscription data configs ourselves, add the configs
             _subscriptionDataConfigs.UnionWith(result);
         }
     }
     return result.Select(config => new SubscriptionRequest(isUniverseSubscription: false,
                                                            universe: this,
                                                            security: security,
                                                            configuration: config,
                                                            startTimeUtc: currentTimeUtc,
                                                            endTimeUtc: maximumEndTimeUtc));
 }
예제 #3
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            if (Future.Symbol.Underlying == security.Symbol)
            {
                Future.Underlying = security;
            }

            return(base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
        }
예제 #4
0
 /// <summary>
 /// Gets the subscription requests to be added for the specified security
 /// </summary>
 /// <param name="security">The security to get subscriptions for</param>
 /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
 /// <param name="maximumEndTimeUtc">The max end time</param>
 /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
 /// <returns>All subscriptions required by this security</returns>
 public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                           ISubscriptionDataConfigService subscriptionService)
 {
     return(security.Subscriptions.Select(config =>
                                          new SubscriptionRequest(
                                              isUniverseSubscription: false,
                                              universe: this,
                                              security: security,
                                              configuration: new SubscriptionDataConfig(config, isInternalFeed: false),
                                              startTimeUtc: currentTimeUtc,
                                              endTimeUtc: maximumEndTimeUtc
                                              )
                                          ));
 }
        /// <summary>
        /// Creates the canonical <see cref="Future"/> chain security for a given symbol
        /// </summary>
        /// <param name="subscriptionDataConfigService">The service used to create new <see cref="SubscriptionDataConfig"/></param>
        /// <param name="symbol">Symbol of the future</param>
        /// <param name="settings">Universe settings define attributes of created subscriptions, such as their resolution and the minimum time in universe before they can be removed</param>
        /// <param name="securityManager">Used to create new <see cref="Security"/></param>
        /// <returns><see cref="Future"/> for the given symbol</returns>
        protected virtual Future CreateFutureChainSecurity(
            ISubscriptionDataConfigService subscriptionDataConfigService,
            Symbol symbol,
            UniverseSettings settings,
            SecurityManager securityManager)
        {
            var config = subscriptionDataConfigService.Add(
                typeof(ZipEntryName),
                symbol,
                settings.Resolution,
                settings.FillForward,
                settings.ExtendedMarketHours,
                isFilteredSubscription: false);

            return((Future)securityManager.CreateSecurity(symbol, config, settings.Leverage, false));
        }
예제 #6
0
 /// <summary>
 /// Gets the subscription requests to be added for the specified security
 /// </summary>
 /// <param name="security">The security to get subscriptions for</param>
 /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
 /// <param name="maximumEndTimeUtc">The max end time</param>
 /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
 /// <returns>All subscriptions required by this security</returns>
 public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                           ISubscriptionDataConfigService subscriptionService)
 {
     using (Py.GIL())
     {
         var subscriptionRequests = _universe.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService) as PyObject;
         var iterator             = subscriptionRequests.GetIterator();
         foreach (PyObject request in iterator)
         {
             var subscriptionRequest = request.GetAndDispose <SubscriptionRequest>();
             yield return(new SubscriptionRequest(subscriptionRequest, universe: this));
         }
         iterator.Dispose();
         subscriptionRequests.Dispose();
     }
 }
예제 #7
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            var result = subscriptionService.Add(security.Symbol, UniverseSettings.Resolution,
                                                 UniverseSettings.FillForward,
                                                 UniverseSettings.ExtendedMarketHours,
                                                 // force raw data normalization mode for underlying
                                                 dataNormalizationMode: DataNormalizationMode.Raw);

            return(result.Select(config => new SubscriptionRequest(isUniverseSubscription: false,
                                                                   universe: this,
                                                                   security: security,
                                                                   configuration: config,
                                                                   startTimeUtc: currentTimeUtc,
                                                                   endTimeUtc: maximumEndTimeUtc)));
        }
예제 #8
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            if (Future.Symbol.Underlying == security.Symbol)
            {
                Future.Underlying = security;
            }
            else
            {
                // set the underlying security and pricing model from the canonical security
                var future = (Future)security;
                future.Underlying = Future.Underlying;
            }

            return(base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
        }
예제 #9
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            if (Option.Symbol.Underlying == security.Symbol)
            {
                Option.Underlying = security;
                security.SetDataNormalizationMode(DataNormalizationMode.Raw);
            }
            else
            {
                // set the underlying security and pricing model from the canonical security
                var option = (Option)security;
                option.PriceModel = Option.PriceModel;
            }

            return(base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
        }
예제 #10
0
파일: Universe.cs 프로젝트: wocclyl/Lean
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public virtual IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security,
                                                                                 DateTime currentTimeUtc,
                                                                                 DateTime maximumEndTimeUtc,
                                                                                 ISubscriptionDataConfigService subscriptionService)
        {
            var result = subscriptionService.Add(security.Symbol,
                                                 UniverseSettings.Resolution,
                                                 UniverseSettings.FillForward,
                                                 UniverseSettings.ExtendedMarketHours);

            return(result.Select(config => new SubscriptionRequest(isUniverseSubscription: false,
                                                                   universe: this,
                                                                   security: security,
                                                                   configuration: config,
                                                                   startTimeUtc: currentTimeUtc,
                                                                   endTimeUtc: maximumEndTimeUtc)));
        }
예제 #11
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            // CustomUniverse will return any existing SDC for the symbol, else will create new, using universe settings.
            var existingSubscriptionDataConfigs = subscriptionService.GetSubscriptionDataConfigs(security.Symbol);

            if (existingSubscriptionDataConfigs.Any())
            {
                return(existingSubscriptionDataConfigs.Select(
                           config => new SubscriptionRequest(isUniverseSubscription: false,
                                                             universe: this,
                                                             security: security,
                                                             configuration: config,
                                                             startTimeUtc: currentTimeUtc,
                                                             endTimeUtc: maximumEndTimeUtc)));
            }
            return(base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
        }
예제 #12
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public virtual IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security,
                                                                                 DateTime currentTimeUtc,
                                                                                 DateTime maximumEndTimeUtc,
                                                                                 ISubscriptionDataConfigService subscriptionService)
        {
            var result = subscriptionService.Add(security.Symbol,
                                                 UniverseSettings.Resolution,
                                                 UniverseSettings.FillForward,
                                                 UniverseSettings.ExtendedMarketHours,
                                                 dataNormalizationMode: UniverseSettings.DataNormalizationMode,
                                                 subscriptionDataTypes: UniverseSettings.SubscriptionDataTypes,
                                                 dataMappingMode: UniverseSettings.DataMappingMode,
                                                 contractDepthOffset: (uint)Math.Abs(UniverseSettings.ContractDepthOffset));

            return(result.Select(config => new SubscriptionRequest(isUniverseSubscription: false,
                                                                   universe: this,
                                                                   security: security,
                                                                   configuration: config,
                                                                   startTimeUtc: currentTimeUtc,
                                                                   endTimeUtc: maximumEndTimeUtc)));
        }
예제 #13
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            // ManualUniverse will return any existing SDC for the symbol, else will create new, using universe settings.
            // This is for maintaining existing behavior and preventing breaking changes: Specifically motivated
            // by usages of Algorithm.Securities.Keys as constructor parameter of the ManualUniverseSelectionModel.
            // Symbols at Algorithm.Securities.Keys added by Addxxx() calls will already be added by the UserDefinedUniverse.

            var existingSubscriptionDataConfigs = subscriptionService.GetSubscriptionDataConfigs(security.Symbol);

            if (existingSubscriptionDataConfigs.Any())
            {
                return(existingSubscriptionDataConfigs.Select(
                           config => new SubscriptionRequest(isUniverseSubscription: false,
                                                             universe: this,
                                                             security: security,
                                                             configuration: config,
                                                             startTimeUtc: currentTimeUtc,
                                                             endTimeUtc: maximumEndTimeUtc)));
            }
            return(base.GetSubscriptionRequests(security, currentTimeUtc, maximumEndTimeUtc, subscriptionService));
        }
예제 #14
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security,
                                                                                  DateTime currentTimeUtc,
                                                                                  DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            var isInternal = !security.Symbol.IsCanonical();
            var result     = subscriptionService.Add(security.Symbol,
                                                     UniverseSettings.Resolution,
                                                     UniverseSettings.FillForward,
                                                     UniverseSettings.ExtendedMarketHours,
                                                     dataNormalizationMode: UniverseSettings.DataNormalizationMode,
                                                     subscriptionDataTypes: UniverseSettings.SubscriptionDataTypes,
                                                     dataMappingMode: UniverseSettings.DataMappingMode,
                                                     contractDepthOffset: (uint)Math.Abs(UniverseSettings.ContractDepthOffset),
                                                     isInternalFeed: isInternal);

            return(result.Select(config => new SubscriptionRequest(isUniverseSubscription: false,
                                                                   universe: this,
                                                                   security: security,
                                                                   configuration: new SubscriptionDataConfig(config, isInternalFeed: config.IsInternalFeed || config.TickType == TickType.OpenInterest),
                                                                   startTimeUtc: currentTimeUtc,
                                                                   endTimeUtc: maximumEndTimeUtc)));
        }
예제 #15
0
        /// <summary>
        /// Gets the subscription requests to be added for the specified security
        /// </summary>
        /// <param name="security">The security to get subscriptions for</param>
        /// <param name="currentTimeUtc">The current time in utc. This is the frontier time of the algorithm</param>
        /// <param name="maximumEndTimeUtc">The max end time</param>
        /// <param name="subscriptionService">Instance which implements <see cref="ISubscriptionDataConfigService"/> interface</param>
        /// <returns>All subscriptions required by this security</returns>
        public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security,
                                                                                  DateTime currentTimeUtc,
                                                                                  DateTime maximumEndTimeUtc,
                                                                                  ISubscriptionDataConfigService subscriptionService)
        {
            var result = Universe.GetSubscriptionRequests(
                security,
                currentTimeUtc,
                maximumEndTimeUtc,
                subscriptionService).ToList();

            for (var i = 0; i < result.Count; i++)
            {
                // This is required because the system tracks which universe
                // is requesting to add or remove each SubscriptionRequest.
                // UniverseDecorator is a special case because
                // `this != UniverseDecorator.Universe`
                result[i] =
                    new SubscriptionRequest(result[i], universe: this);
            }

            return(result);
        }
            public override IEnumerable <SubscriptionRequest> GetSubscriptionRequests(Security security, DateTime currentTimeUtc, DateTime maximumEndTimeUtc,
                                                                                      ISubscriptionDataConfigService subscriptionService)
            {
                var config = subscriptionService.Add(
                    typeof(TiingoNews),
                    security.Symbol,
                    UniverseSettings.Resolution,
                    UniverseSettings.FillForward,
                    UniverseSettings.ExtendedMarketHours,
                    dataNormalizationMode: UniverseSettings.DataNormalizationMode);

                return(new[] { new SubscriptionRequest(isUniverseSubscription: false,
                                                       universe: this,
                                                       security: security,
                                                       configuration: config,
                                                       startTimeUtc: currentTimeUtc,
                                                       endTimeUtc: maximumEndTimeUtc) });
            }