/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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(); } }
/// <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))); }
/// <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)); }
/// <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)); }
/// <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))); }
/// <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)); }
/// <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))); }
/// <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)); }
/// <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))); }
/// <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) }); }