/// <summary> /// Primary entry point to the program /// </summary> static void Main(string[] args) { if (args.Length != 4) { Console.WriteLine("Usage: OandaDownloader SYMBOL RESOLUTION FROMDATE TODATE"); Console.WriteLine("SYMBOL = eg EURUSD"); Console.WriteLine("RESOLUTION = Second/Minute/Hour/Daily"); Console.WriteLine("FROMDATE = yyyymmdd"); Console.WriteLine("TODATE = yyyymmdd"); Environment.Exit(1); } try { // Load settings from command line var symbol = args[0]; var resolution = (Resolution)Enum.Parse(typeof(Resolution), args[1]); var startDate = DateTime.ParseExact(args[2], "yyyyMMdd", CultureInfo.InvariantCulture); var endDate = DateTime.ParseExact(args[3], "yyyyMMdd", CultureInfo.InvariantCulture); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); var accessToken = Config.Get("access-token", "73eba38ad5b44778f9a0c0fec1a66ed1-44f47f052c897b3e1e7f24196bbc071f"); var accountId = Convert.ToInt32(Config.Get("account-id", "621396")); // Download the data var downloader = new OandaDataDownloader(accessToken, accountId); if (!downloader.HasSymbol(symbol)) { throw new ArgumentException("The symbol " + symbol + " is not available."); } var securityType = downloader.GetSecurityType(symbol); var data = downloader.Get(new Symbol(symbol), securityType, resolution, startDate, endDate); // Save the data var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, "oanda"); writer.Write(data); } catch (Exception err) { Log.Error("OandaDownloader(): Error: " + err.Message); } }
/// <summary> /// Primary entry point to the program /// </summary> static void Main(string[] args) { if (args.Length != 4) { Console.WriteLine("Usage: OandaDownloader SYMBOL RESOLUTION FROMDATE TODATE"); Console.WriteLine("SYMBOL = eg EURUSD"); Console.WriteLine("RESOLUTION = Second/Minute/Hour/Daily"); Console.WriteLine("FROMDATE = yyyymmdd"); Console.WriteLine("TODATE = yyyymmdd"); Environment.Exit(1); } try { // Load settings from command line var symbol = args[0]; var resolution = (Resolution)Enum.Parse(typeof(Resolution), args[1]); var startDate = DateTime.ParseExact(args[2], "yyyyMMdd", CultureInfo.InvariantCulture); var endDate = DateTime.ParseExact(args[3], "yyyyMMdd", CultureInfo.InvariantCulture); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); var accessToken = Config.Get("access-token", "73eba38ad5b44778f9a0c0fec1a66ed1-44f47f052c897b3e1e7f24196bbc071f"); var accountId = Convert.ToInt32(Config.Get("account-id", "621396")); // Download the data var downloader = new OandaDataDownloader(accessToken, accountId); if (!downloader.HasSymbol(symbol)) throw new ArgumentException("The symbol " + symbol + " is not available."); var securityType = downloader.GetSecurityType(symbol); var data = downloader.Get(new Symbol(symbol), securityType, resolution, startDate, endDate); // Save the data var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, "oanda"); writer.Write(data); } catch (Exception err) { Log.Error("OandaDownloader(): Error: " + err.Message); } }
/// <summary> /// Primary entry point to the program /// </summary> static void Main(string[] args) { if (args.Length != 4) { Console.WriteLine("Usage: OandaDownloader SYMBOL RESOLUTION FROMDATE TODATE"); Console.WriteLine("SYMBOLS = eg EURUSD,USDJPY"); Console.WriteLine("RESOLUTION = Second/Minute/Hour/Daily/All"); Console.WriteLine("FROMDATE = yyyymmdd"); Console.WriteLine("TODATE = yyyymmdd"); Environment.Exit(1); } try { // Load settings from command line var symbols = args[0].Split(','); var allResolutions = args[1].ToLower() == "all"; var resolution = allResolutions ? Resolution.Second : (Resolution)Enum.Parse(typeof(Resolution), args[1]); var startDate = DateTime.ParseExact(args[2], "yyyyMMdd", CultureInfo.InvariantCulture); var endDate = DateTime.ParseExact(args[3], "yyyyMMdd", CultureInfo.InvariantCulture); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); var accessToken = Config.Get("access-token", "73eba38ad5b44778f9a0c0fec1a66ed1-44f47f052c897b3e1e7f24196bbc071f"); var accountId = Convert.ToInt32(Config.Get("account-id", "621396")); // Download the data const string market = "oanda"; var downloader = new OandaDataDownloader(accessToken, accountId); foreach (var symbol in symbols) { if (!downloader.HasSymbol(symbol)) { throw new ArgumentException("The symbol " + symbol + " is not available."); } } foreach (var symbol in symbols) { var securityType = downloader.GetSecurityType(symbol); var data = downloader.Get(new Symbol(symbol), securityType, resolution, startDate, endDate); if (allResolutions) { var bars = data.Cast <TradeBar>().ToList(); // Save the data (second resolution) var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, market); writer.Write(bars); // Save the data (other resolutions) foreach (var res in new[] { Resolution.Minute, Resolution.Hour, Resolution.Daily }) { var resData = AggregateBars(new Symbol(symbol), bars, res.ToTimeSpan()); writer = new LeanDataWriter(securityType, res, symbol, dataDirectory, market); writer.Write(resData); } } else { // Save the data (single resolution) var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, market); writer.Write(data); } } } catch (Exception err) { Log.Error("OandaDownloader(): Error: " + err.Message); } }
/// <summary> /// Primary entry point to the program /// </summary> static void Main(string[] args) { if (args.Length != 4) { Console.WriteLine("Usage: OandaDownloader SYMBOL RESOLUTION FROMDATE TODATE"); Console.WriteLine("SYMBOLS = eg EURUSD,USDJPY"); Console.WriteLine("RESOLUTION = Second/Minute/Hour/Daily/All"); Console.WriteLine("FROMDATE = yyyymmdd"); Console.WriteLine("TODATE = yyyymmdd"); Environment.Exit(1); } try { // Load settings from command line var symbols = args[0].Split(','); var allResolutions = args[1].ToLower() == "all"; var resolution = allResolutions ? Resolution.Second : (Resolution)Enum.Parse(typeof(Resolution), args[1]); var startDate = DateTime.ParseExact(args[2], "yyyyMMdd", CultureInfo.InvariantCulture); var endDate = DateTime.ParseExact(args[3], "yyyyMMdd", CultureInfo.InvariantCulture); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); var accessToken = Config.Get("access-token", "73eba38ad5b44778f9a0c0fec1a66ed1-44f47f052c897b3e1e7f24196bbc071f"); var accountId = Convert.ToInt32(Config.Get("account-id", "621396")); // Download the data const string market = "oanda"; var downloader = new OandaDataDownloader(accessToken, accountId); foreach (var symbol in symbols) { if (!downloader.HasSymbol(symbol)) throw new ArgumentException("The symbol " + symbol + " is not available."); } foreach (var symbol in symbols) { var securityType = downloader.GetSecurityType(symbol); var data = downloader.Get(new Symbol(symbol), securityType, resolution, startDate, endDate); if (allResolutions) { var bars = data.Cast<TradeBar>().ToList(); // Save the data (second resolution) var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, market); writer.Write(bars); // Save the data (other resolutions) foreach (var res in new[] { Resolution.Minute, Resolution.Hour, Resolution.Daily }) { var resData = AggregateBars(new Symbol(symbol), bars, res.ToTimeSpan()); writer = new LeanDataWriter(securityType, res, symbol, dataDirectory, market); writer.Write(resData); } } else { // Save the data (single resolution) var writer = new LeanDataWriter(securityType, resolution, symbol, dataDirectory, market); writer.Write(data); } } } catch (Exception err) { Log.Error("OandaDownloader(): Error: " + err.Message); } }
/// <summary> /// Primary entry point to the program /// </summary> public static void OandaDownloader(IList <string> tickers, string resolution, DateTime startDate, DateTime endDate) { if (resolution.IsNullOrEmpty() || tickers.IsNullOrEmpty()) { Console.WriteLine("OandaDownloader ERROR: '--tickers=' or '--resolution=' parameter is missing"); Console.WriteLine("--tickers=eg EURUSD,USDJPY"); Console.WriteLine("--resolution=Second/Minute/Hour/Daily/All"); Environment.Exit(1); } try { // Load settings from command line var allResolutions = resolution.ToLowerInvariant() == "all"; var castResolution = allResolutions ? Resolution.Second : (Resolution)Enum.Parse(typeof(Resolution), resolution); // Load settings from config.json var dataDirectory = Config.Get("data-directory", "../../../Data"); var accessToken = Config.Get("oanda-access-token", "73eba38ad5b44778f9a0c0fec1a66ed1-44f47f052c897b3e1e7f24196bbc071f"); var accountId = Config.Get("oanda-account-id", "621396"); // Create an instance of the downloader const string market = Market.Oanda; var downloader = new OandaDataDownloader(accessToken, accountId); foreach (var ticker in tickers) { if (!downloader.HasSymbol(ticker)) { throw new ArgumentException("The ticker " + ticker + " is not available."); } } foreach (var ticker in tickers) { // Download the data var securityType = downloader.GetSecurityType(ticker); var symbol = Symbol.Create(ticker, securityType, market); var data = downloader.Get(symbol, castResolution, startDate, endDate); if (allResolutions) { var bars = data.Cast <QuoteBar>().ToList(); // Save the data (second resolution) var writer = new LeanDataWriter(castResolution, symbol, dataDirectory); writer.Write(bars); // Save the data (other resolutions) foreach (var res in new[] { Resolution.Minute, Resolution.Hour, Resolution.Daily }) { var resData = downloader.AggregateBars(symbol, bars, res.ToTimeSpan()); writer = new LeanDataWriter(res, symbol, dataDirectory); writer.Write(resData); } } else { // Save the data (single resolution) var writer = new LeanDataWriter(castResolution, symbol, dataDirectory); writer.Write(data); } } } catch (Exception err) { Log.Error(err); } }