protected override async Task Execute(CancellationToken token) { log.LogInformation("Starting..."); if (!client.Connect()) { log.LogError("Connection failed"); return; } List <Task> tasks = new List <Task>(); for (int i = 0; i < 10; i++) { double strike = config.Strike + i * 10; var request = historicalDataManager() .Request( new MarketDataRequest( ContractHelper.GetOptionsContract(config.Symbol, strike, config.Expiry, OptionType.CALL), DateTime.UtcNow.Date, new Duration(5, DurationType.Months), BarSize.Hour, WhatToShow.MIDPOINT)); var task = serializer.Save($"{config.Symbol}_{config.Expiry}_{config.Type}_{strike}_historic.csv", request, token); tasks.Add(task); } await Task.WhenAll(tasks).ConfigureAwait(false); log.LogInformation("History request completed"); }