20 using System.Collections.Generic;
38 private readonly TickType[] UniverseTickTypes = { TickType.Quote, TickType.Trade, TickType.OpenInterest };
43 public Symbol
UnderlyingSymbol {
get => Symbol.HasUnderlying ? Symbol.Underlying : Symbol.Empty; }
55 canonicalSymbol.IsCanonical() ? canonicalSymbol : throw new ArgumentException(
"DataUniverseDownloaderGetParameters: Symbol must be canonical.", nameof(canonicalSymbol)),
62 EndUtc = EndUtc.ConvertToUtc(_securityExchangeHours.TimeZone);
63 StartUtc = StartUtc.ConvertToUtc(_securityExchangeHours.TimeZone);
81 foreach (var processingDate
in Time.EachTradeableDay(_securityExchangeHours, StartUtc, EndUtc))
83 var processingDateUtc = processingDate.ConvertToUtc(_securityExchangeHours.TimeZone);
85 var requests =
new List<DataDownloaderGetParameters>(3);
89 requests.Add(
new(
UnderlyingSymbol, Resolution, processingDateUtc, processingDateUtc.AddDays(1), TickType.Trade));
92 requests.AddRange(UniverseTickTypes.Select(tickType =>
new DataDownloaderGetParameters(Symbol, Resolution, processingDateUtc, processingDateUtc.AddDays(1), tickType)));
94 yield
return (processingDate, requests);