/// <summary> /// GDAX Downloader Toolbox Project For LEAN Algorithmic Trading Engine. /// </summary> static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); if (args.Length < 3) { Console.WriteLine("Usage: GDAX Downloader SYMBOL RESOLUTION FROMDATE TODATE"); Console.WriteLine("SYMBOL = ETHUSD, ETHBTC, BTCUSD etc."); Console.WriteLine("RESOLUTION = Second/Minute/Hour/Daily"); Console.WriteLine("FROMDATE = yyyyMMdd HH:mm:ss"); Console.WriteLine("TODATE = yyyyMMdd HH:mm:ss"); Environment.Exit(1); } try { var resolution = (Resolution)Enum.Parse(typeof(Resolution), args[1]); // Load settings from command line var startDate = DateTime.ParseExact(args[2], "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture); var endDate = DateTime.UtcNow; if (args[3] != null) { endDate = DateTime.ParseExact(args[3], "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture); } // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); //todo: will download any exchange but always save as gdax // Create an instance of the downloader const string market = Market.GDAX; var downloader = new GDAXDownloader(); // Download the data var symbolObject = Symbol.Create(args[0], SecurityType.Crypto, market); var data = downloader.Get(symbolObject, resolution, startDate, endDate); // Save the data var writer = new LeanDataWriter(resolution, symbolObject, dataDirectory, TickType.Trade); var distinctData = data.GroupBy(i => i.Time, (key, group) => group.First()).ToArray(); writer.Write(distinctData); Log.Trace("Finish data download. Press any key to continue.."); } catch (Exception err) { Log.Error(err); Log.Trace(err.Message); Log.Trace(err.StackTrace); } // Console.ReadLine(); }
/// <summary> /// GDAX Downloader Toolbox Project For LEAN Algorithmic Trading Engine. /// </summary> static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); if (args.Length == 2) { args = new [] { args[0], DateTime.UtcNow.ToString("yyyyMMdd"), args[1] }; } else if (args.Length < 3) { Console.WriteLine("Usage: GDAX Downloader SYMBOL FROMDATE TODATE"); Console.WriteLine("FROMDATE = yyyymmdd"); Console.WriteLine("TODATE = yyyymmdd"); Environment.Exit(1); } try { // Load settings from command line var startDate = DateTime.ParseExact(args[1], "yyyyMMdd", CultureInfo.InvariantCulture); var endDate = DateTime.ParseExact(args[2], "yyyyMMdd", CultureInfo.InvariantCulture); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); //todo: will download any exchange but always save as gdax // Create an instance of the downloader const string market = Market.GDAX; var downloader = new GDAXDownloader(); // Download the data var symbolObject = Symbol.Create(args[0], SecurityType.Crypto, market); var data = downloader.Get(symbolObject, Resolution.Hour, startDate, endDate); // Save the data var writer = new LeanDataWriter(Resolution.Hour, symbolObject, dataDirectory, TickType.Trade); var distinctData = data.GroupBy(i => i.Time, (key, group) => group.First()).ToArray(); writer.Write(distinctData); Log.Trace("Finish data download"); } catch (Exception err) { Log.Error(err); Log.Trace(err.Message); Log.Trace(err.StackTrace); } Console.ReadLine(); }
/// <summary> /// GDAX Downloader Toolbox Project For LEAN Algorithmic Trading Engine. /// </summary> public static void GDAXDownloader(IList <string> tickers, string resolution, DateTime fromDate, DateTime toDate) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); if (resolution.IsNullOrEmpty() || tickers.IsNullOrEmpty()) { Console.WriteLine("GDAXDownloader ERROR: '--tickers=' or '--resolution=' parameter is missing"); Console.WriteLine("--tickers=ETHUSD,ETHBTC,BTCUSD,etc."); Console.WriteLine("--resolution=Second/Minute/Hour/Daily"); Environment.Exit(1); } var castResolution = (Resolution)Enum.Parse(typeof(Resolution), resolution); try { // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); //todo: will download any exchange but always save as gdax // Create an instance of the downloader const string market = Market.GDAX; var downloader = new GDAXDownloader(); foreach (var ticker in tickers) { // Download the data var symbolObject = Symbol.Create(ticker, SecurityType.Crypto, market); var data = downloader.Get(symbolObject, castResolution, fromDate, toDate); // Save the data var writer = new LeanDataWriter(castResolution, symbolObject, dataDirectory, TickType.Trade); var distinctData = data.GroupBy(i => i.Time, (key, group) => group.First()).ToArray(); writer.Write(distinctData); } Log.Trace("Finish data download. Press any key to continue.."); } catch (Exception err) { Log.Error(err); Log.Trace(err.Message); Log.Trace(err.StackTrace); } Console.ReadLine(); }