/// <summary> /// Gets the option strikes based on auto expiry dates for option chain asynchronous. /// </summary> /// <param name="cmd">The command.</param> /// <returns>Option strikes for date range.</returns> private static async Task <List <decimal> > MultipleOptionChainForAutoExpiryAsync(TradierOptionStrikeCommand cmd) { var expirationDates = await new TradierOptionExpirationRequest( new TradierOptionExpirationCommand(cmd, cmd.Symbol)).GetAsync(); var tasks = expirationDates.Take(cmd.ExpiryDateRangeLimit.Value) .Select(date => new TradierOptionStrikeRequest(new TradierOptionStrikeCommand(cmd) { Symbol = cmd.Symbol, ExpirationDate = date }).GetAsync()).ToList(); var wholeData = new List <decimal>(); await Task.WhenAll(tasks).ContinueWith(res => res.Result.ToList().ForEach(tResult => wholeData.AddRange(tResult))); return(wholeData); }
/// <summary> /// Initializes a new instance of the <see cref="TradierOptionStrikeRequest"/> class. /// </summary> /// <param name="command">The command.</param> /// <exception cref="ArgumentNullException">command</exception> protected TradierOptionStrikeRequest(TradierOptionStrikeCommand command) : base(command?.BaseUrl, command?.AccessKey) { Command = command ?? throw new ArgumentNullException(nameof(command)); }