public void CanDownloadAndSave(SecurityType securityType, TickType tickType, Resolution resolution) { var symbol = Symbols.GetBySecurityType(securityType); var startTimeUtc = GetRepoDataDates(securityType, resolution); // Override for this case because symbol from Symbols does not have data included if (securityType == SecurityType.Option) { symbol = Symbols.CreateOptionSymbol("GOOG", OptionRight.Call, 770, new DateTime(2015, 12, 24)); startTimeUtc = new DateTime(2015, 12, 23); } // EndTime based on start, only do 1 day for anything less than hour because we compare datafiles below // and minute and finer resolutions store by day var endTimeUtc = startTimeUtc + TimeSpan.FromDays(resolution >= Resolution.Hour ? 15 : 1); // Create our writer and LocalHistory brokerage to "download" from var writer = new LeanDataWriter(_dataDirectory, resolution, securityType, tickType); var brokerage = new LocalHistoryBrokerage(); var symbols = new List <Symbol>() { symbol }; // "Download" and write to file writer.DownloadAndSave(brokerage, symbols, startTimeUtc, endTimeUtc); // Verify the file exists where we expect var filePath = LeanData.GenerateZipFilePath(_dataDirectory, symbol, startTimeUtc, resolution, tickType); Assert.IsTrue(File.Exists(filePath)); // Read the file and data var reader = new LeanDataReader(filePath); var dataFromFile = reader.Parse().ToList(); // Ensure its not empty and it is actually for this symbol Assert.IsNotEmpty(dataFromFile); Assert.IsTrue(dataFromFile.All(x => x.Symbol == symbol)); // Get history directly ourselves and compare with the data in the file var history = GetHistory(brokerage, resolution, securityType, symbol, tickType, startTimeUtc, endTimeUtc); CollectionAssert.AreEqual(history.Select(x => x.Time), dataFromFile.Select(x => x.Time)); brokerage.Dispose(); }
/// <summary> /// Downloads historical data from the brokerage and saves it in LEAN format. /// </summary> /// <param name="symbols">The list of symbols</param> /// <param name="tickType">The tick type</param> /// <param name="resolution">The resolution</param> /// <param name="securityType">The security type</param> /// <param name="startTimeUtc">The starting date/time (UTC)</param> /// <param name="endTimeUtc">The ending date/time (UTC)</param> public void DownloadAndSave(List <Symbol> symbols, Resolution resolution, SecurityType securityType, TickType tickType, DateTime startTimeUtc, DateTime endTimeUtc) { var writer = new LeanDataWriter(Globals.DataFolder, resolution, securityType, tickType); writer.DownloadAndSave(_brokerage, symbols, startTimeUtc, endTimeUtc); }