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