Ejemplo n.º 1
0
        public void LiveForexAlgorithms_CanBeUsedWithFXCM_Successfully()
        {
            var user     = Config.Get("fxcm-user-name");
            var password = Config.Get("fxcm-password");
            var account  = Config.Get("fxcm-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);

            Assert.IsTrue(project.Success);

            // 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 FXCMLiveAlgorithmSettings(user,
                                                         password,
                                                         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);
            }
        }
Ejemplo n.º 2
0
        public void LiveFXCMTest()
        {
            var user     = Config.Get("fxcm-user-name");
            var password = Config.Get("fxcm-password");
            var account  = Config.Get("fxcm-account-id");

            // Create default algorithm settings
            var settings = new FXCMLiveAlgorithmSettings(user,
                                                         password,
                                                         BrokerageEnvironment.Paper,
                                                         account);

            var file = new ProjectFile
            {
                Name = "Main.cs",
                Code = File.ReadAllText("../../../Algorithm.CSharp/BasicTemplateForexAlgorithm.cs")
            };

            RunLiveAlgorithm(settings, file);
        }
Ejemplo n.º 3
0
        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     = "";
            }
        }
Ejemplo n.º 4
0
        public void LiveForexAlgorithms_CanBeUsedWithFXCM_Successfully()
        {
            var user     = Config.Get("fxcm-user-name");
            var password = Config.Get("fxcm-password");
            var account  = Config.Get("fxcm-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);
            Assert.IsTrue(project.Success);

            // 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 FXCMLiveAlgorithmSettings(user,
                                                         password,
                                                         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);
            }
        }
Ejemplo n.º 5
0
        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 = "";
            }
        }
Ejemplo n.º 6
0
        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     = "";
            }
        }