public void LiveForexAlgorithms_CanBeUsedWithOanda_Successfully() { var token = Config.Get("oanda-access-token"); var account = Config.Get("oanda-account-id"); var file = new List <ProjectFile> { new ProjectFile { Name = "main.cs", Code = File.ReadAllText("../../../Algorithm.CSharp/BasicTemplateForexAlgorithm.cs") } }; // Create a new project var project = _api.CreateProject("Test project - " + DateTime.Now, Language.CSharp); // Update Project var update = _api.UpdateProject(project.ProjectId, file); Assert.IsTrue(update.Success); // Create compile var compile = _api.CreateCompile(project.ProjectId); Assert.IsTrue(compile.Success); // Create default algorithm settings var settings = new OandaLiveAlgorithmSettings(token, BrokerageEnvironment.Paper, account); // Wait for project to compile Thread.Sleep(10000); // Create live default algorithm var createLiveAlgorithm = _api.CreateLiveAlgorithm(project.ProjectId, compile.CompileId, "server512", settings); Assert.IsTrue(createLiveAlgorithm.Success); if (stopLiveAlgos) { // Liquidate live algorithm var liquidateLive = _api.LiquidateLiveAlgorithm(project.ProjectId); Assert.IsTrue(liquidateLive.Success); // Stop live algorithm var stopLive = _api.StopLiveAlgorithm(project.ProjectId); Assert.IsTrue(stopLive.Success); // Delete the project var deleteProject = _api.DeleteProject(project.ProjectId); Assert.IsTrue(deleteProject.Success); } }
public void LiveOandaTest() { var token = Config.Get("oanda-access-token"); var account = Config.Get("oanda-account-id"); // Create default algorithm settings var settings = new OandaLiveAlgorithmSettings(token, BrokerageEnvironment.Paper, account); var file = new ProjectFile { Name = "Main.cs", Code = File.ReadAllText("../../../Algorithm.CSharp/BasicTemplateForexAlgorithm.cs") }; RunLiveAlgorithm(settings, file); }
public void LiveAlgorithmSettings_CanBeCreated_Successfully() { string user = ""; string password = ""; BrokerageEnvironment environment = BrokerageEnvironment.Paper; string account = ""; // Oanda Custom Variables string accessToken = ""; var dateIssuedString = "20160920"; // Tradier Custom Variables string dateIssued = ""; string refreshToken = ""; string lifetime = ""; // Create and test settings for each brokerage foreach (BrokerageName brokerageName in Enum.GetValues(typeof(BrokerageName))) { BaseLiveAlgorithmSettings settings = null; switch (brokerageName) { case BrokerageName.Default: user = Config.Get("default-username"); password = Config.Get("default-password"); settings = new DefaultLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.Default.ToString()); break; case BrokerageName.FxcmBrokerage: user = Config.Get("fxcm-user-name"); password = Config.Get("fxcm-password"); settings = new FXCMLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.FxcmBrokerage.ToString()); break; case BrokerageName.InteractiveBrokersBrokerage: user = Config.Get("ib-user-name"); password = Config.Get("ib-password"); account = Config.Get("ib-account"); settings = new InteractiveBrokersLiveAlgorithmSettings(user, password, account); Assert.IsTrue(settings.Id == BrokerageName.InteractiveBrokersBrokerage.ToString()); break; case BrokerageName.OandaBrokerage: accessToken = Config.Get("oanda-access-token"); account = Config.Get("oanda-account-id"); settings = new OandaLiveAlgorithmSettings(accessToken, environment, account); Assert.IsTrue(settings.Id == BrokerageName.OandaBrokerage.ToString()); break; case BrokerageName.TradierBrokerage: dateIssued = Config.Get("tradier-issued-at"); refreshToken = Config.Get("tradier-refresh-token"); account = Config.Get("tradier-account-id"); settings = new TradierLiveAlgorithmSettings(refreshToken, dateIssued, refreshToken, account); break; default: throw new Exception($"Settings have not been implemented for this brokerage: {brokerageName}"); } // Tests common to all brokerage configuration classes Assert.IsTrue(settings != null); Assert.IsTrue(settings.Password == password); Assert.IsTrue(settings.User == user); // tradier brokerage is always live, the rest are variable if (brokerageName != BrokerageName.TradierBrokerage) { Assert.IsTrue(settings.Environment == environment); } // Oanda specific settings if (brokerageName == BrokerageName.OandaBrokerage) { var oandaSetting = settings as OandaLiveAlgorithmSettings; Assert.IsTrue(oandaSetting.AccessToken == accessToken); } // Tradier specific settings if (brokerageName == BrokerageName.TradierBrokerage) { var tradierLiveAlogrithmSettings = settings as TradierLiveAlgorithmSettings; Assert.IsTrue(tradierLiveAlogrithmSettings.DateIssued == dateIssued); Assert.IsTrue(tradierLiveAlogrithmSettings.RefreshToken == refreshToken); Assert.IsTrue(settings.Environment == BrokerageEnvironment.Live); } // reset variables user = ""; password = ""; environment = BrokerageEnvironment.Paper; account = ""; } }
public void LiveForexAlgorithms_CanBeUsedWithOanda_Successfully() { var token = Config.Get("oanda-access-token"); var account = Config.Get("oanda-account-id"); var file = new ProjectFile { Name = "main.cs", Code = File.ReadAllText("../../../Algorithm.CSharp/BasicTemplateForexAlgorithm.cs") }; // Create a new project var project = _api.CreateProject("Test project - " + DateTime.Now, Language.CSharp); // Add Project Files var addProjectFile = _api.AddProjectFile(project.Projects.First().ProjectId, file.Name, file.Code); Assert.IsTrue(addProjectFile.Success); // Create compile var compile = _api.CreateCompile(project.Projects.First().ProjectId); Assert.IsTrue(compile.Success); // Create default algorithm settings var settings = new OandaLiveAlgorithmSettings(token, BrokerageEnvironment.Paper, account); // Wait for project to compile Thread.Sleep(10000); // Create live default algorithm var createLiveAlgorithm = _api.CreateLiveAlgorithm(project.Projects.First().ProjectId, compile.CompileId, "server512", settings); Assert.IsTrue(createLiveAlgorithm.Success); if (stopLiveAlgos) { // Liquidate live algorithm var liquidateLive = _api.LiquidateLiveAlgorithm(project.Projects.First().ProjectId); Assert.IsTrue(liquidateLive.Success); // Stop live algorithm var stopLive = _api.StopLiveAlgorithm(project.Projects.First().ProjectId); Assert.IsTrue(stopLive.Success); // Delete the project var deleteProject = _api.DeleteProject(project.Projects.First().ProjectId); Assert.IsTrue(deleteProject.Success); } }
public void LiveAlgorithmSettings_CanBeCreated_Successfully() { string user = ""; string password = ""; BrokerageEnvironment environment = BrokerageEnvironment.Paper; string account = ""; // Oanda Custom Variables string accessToken = ""; var dateIssuedString = "20160920"; // Tradier Custom Variables string dateIssued = ""; string refreshToken = ""; string lifetime = ""; // Create and test settings for each brokerage foreach (BrokerageName brokerageName in Enum.GetValues(typeof(BrokerageName))) { BaseLiveAlgorithmSettings settings = null; switch (brokerageName) { case BrokerageName.Default: user = Config.Get("default-username"); password = Config.Get("default-password"); settings = new DefaultLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.Default.ToString()); break; case BrokerageName.FxcmBrokerage: user = Config.Get("fxcm-user-name"); password = Config.Get("fxcm-password"); settings = new FXCMLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.FxcmBrokerage.ToString()); break; case BrokerageName.InteractiveBrokersBrokerage: user = Config.Get("ib-user-name"); password = Config.Get("ib-password"); account = Config.Get("ib-account"); settings = new InteractiveBrokersLiveAlgorithmSettings(user, password, account); Assert.IsTrue(settings.Id == BrokerageName.InteractiveBrokersBrokerage.ToString()); break; case BrokerageName.OandaBrokerage: accessToken = Config.Get("oanda-access-token"); account = Config.Get("oanda-account-id"); settings = new OandaLiveAlgorithmSettings(accessToken, environment, account); Assert.IsTrue(settings.Id == BrokerageName.OandaBrokerage.ToString()); break; case BrokerageName.TradierBrokerage: dateIssued = Config.Get("tradier-issued-at"); refreshToken = Config.Get("tradier-refresh-token"); account = Config.Get("tradier-account-id"); settings = new TradierLiveAlgorithmSettings(refreshToken, dateIssued, refreshToken, account); break; default: throw new Exception("Settings have not been implemented for this brokerage: " + brokerageName.ToString()); } // Tests common to all brokerage configuration classes Assert.IsTrue(settings != null); Assert.IsTrue(settings.Password == password); Assert.IsTrue(settings.User == user); // tradier brokerage is always live, the rest are variable if (brokerageName != BrokerageName.TradierBrokerage) Assert.IsTrue(settings.Environment == environment); // Oanda specific settings if (brokerageName == BrokerageName.OandaBrokerage) { var oandaSetting = settings as OandaLiveAlgorithmSettings; Assert.IsTrue(oandaSetting.AccessToken == accessToken); } // Tradier specific settings if (brokerageName == BrokerageName.TradierBrokerage) { var tradierLiveAlogrithmSettings = settings as TradierLiveAlgorithmSettings; Assert.IsTrue(tradierLiveAlogrithmSettings.DateIssued == dateIssued); Assert.IsTrue(tradierLiveAlogrithmSettings.RefreshToken == refreshToken); Assert.IsTrue(settings.Environment == BrokerageEnvironment.Live); } // reset variables user = ""; password = ""; environment = BrokerageEnvironment.Paper; account = ""; } }
public void LiveAlgorithmSettings_CanBeCreated_Successfully() { string user = ""; string password = ""; BrokerageEnvironment environment = BrokerageEnvironment.Paper; string account = ""; string key = ""; string secretKey = ""; // Oanda Custom Variables string accessToken = ""; var dateIssuedString = "20160920"; // Tradier Custom Variables string dateIssued = ""; string refreshToken = ""; string lifetime = ""; // Create and test settings for each brokerage foreach (BrokerageName brokerageName in Enum.GetValues(typeof(BrokerageName))) { BaseLiveAlgorithmSettings settings = null; switch (brokerageName) { case BrokerageName.Default: user = Config.Get("default-username"); password = Config.Get("default-password"); settings = new DefaultLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.Default.ToString()); break; case BrokerageName.FxcmBrokerage: user = Config.Get("fxcm-user-name"); password = Config.Get("fxcm-password"); settings = new FXCMLiveAlgorithmSettings(user, password, environment, account); Assert.IsTrue(settings.Id == BrokerageName.FxcmBrokerage.ToString()); break; case BrokerageName.InteractiveBrokersBrokerage: user = Config.Get("ib-user-name"); password = Config.Get("ib-password"); account = Config.Get("ib-account"); settings = new InteractiveBrokersLiveAlgorithmSettings(user, password, account); Assert.IsTrue(settings.Id == BrokerageName.InteractiveBrokersBrokerage.ToString()); break; case BrokerageName.OandaBrokerage: accessToken = Config.Get("oanda-access-token"); account = Config.Get("oanda-account-id"); settings = new OandaLiveAlgorithmSettings(accessToken, environment, account); Assert.IsTrue(settings.Id == BrokerageName.OandaBrokerage.ToString()); break; case BrokerageName.TradierBrokerage: dateIssued = Config.Get("tradier-issued-at"); refreshToken = Config.Get("tradier-refresh-token"); account = Config.Get("tradier-account-id"); settings = new TradierLiveAlgorithmSettings(refreshToken, dateIssued, refreshToken, account); break; case BrokerageName.Bitfinex: key = Config.Get("bitfinex-api-key"); secretKey = Config.Get("bitfinex-api-secret"); settings = new BitfinexLiveAlgorithmSettings(key, secretKey); break; case BrokerageName.Alpaca: key = Config.Get("alpaca-key-id"); secretKey = Config.Get("alpaca-secret-key"); environment = Config.Get("alpaca-trading-mode").ToLowerInvariant().Equals("live") ? BrokerageEnvironment.Live : BrokerageEnvironment.Paper; settings = new AlpacaLiveAlgorithmSettings(key, secretKey, environment); break; case BrokerageName.GDAX: key = Config.Get("gdax-api-key"); secretKey = Config.Get("gdax-api-secret"); var passphrase = Config.Get("gdax-api-passphrase"); settings = new GDAXLiveAlgorithmSettings(key, secretKey, passphrase); break; case BrokerageName.AlphaStreams: // No live algorithm settings settings = new BaseLiveAlgorithmSettings(); break; case BrokerageName.Binance: // No live algorithm settings settings = new BaseLiveAlgorithmSettings(); break; default: throw new Exception($"Settings have not been implemented for this brokerage: {brokerageName}"); } // Tests common to all brokerage configuration classes Assert.IsTrue(settings != null); Assert.IsTrue(settings.Password == password); Assert.IsTrue(settings.User == user); // Oanda specific settings if (brokerageName == BrokerageName.OandaBrokerage) { var oandaSetting = settings as OandaLiveAlgorithmSettings; Assert.IsTrue(oandaSetting.AccessToken == accessToken); } // Tradier specific settings if (brokerageName == BrokerageName.TradierBrokerage) { var tradierLiveAlogrithmSettings = settings as TradierLiveAlgorithmSettings; Assert.IsTrue(tradierLiveAlogrithmSettings.DateIssued == dateIssued); Assert.IsTrue(tradierLiveAlogrithmSettings.RefreshToken == refreshToken); Assert.IsTrue(settings.Environment == BrokerageEnvironment.Live); } // reset variables user = ""; password = ""; environment = BrokerageEnvironment.Paper; account = ""; } }