public void DownloadAndSaveOneInstrument(string instrument, int batchNumber, string outputDirectory, CancellationToken cancelToken) { var batchDateRange = this.batchService.GetDataRange(batchNumber); _log.InfoFormat("{0} batch date time range: {1}", instrument, batchDateRange); var safeBatchDateRange = this.batchService.GetWiderBatchDateRange(batchDateRange); string instrumentFilePath = this.filePathService.GetTimeSeriesFilePath( outputDirectory, batchNumber, instrument); _log.InfoFormat("{0} downloading data covering safe date time range: {1}", instrument, safeBatchDateRange); var candleEvents = exchange.GetHistoricalPrices( instrument, timeframeSeconds, safeBatchDateRange.Start, safeBatchDateRange.End); _log.InfoFormat("{0} downloaded {1} events", instrument, candleEvents.Length); seriesAppendingService.Write(candleEvents, instrumentFilePath, cancelToken, batchDateRange); }