/// <summary> /// Constructor for live trading with Alpaca /// </summary> /// <param name="key"> Api key to Alpaca account</param> /// <param name="secret">Secret Api key to Alpaca account</param> /// <param name="environment">Environment to launch the algorithm in</param> public AlpacaLiveAlgorithmSettings(string key, string secret, BrokerageEnvironment environment) { Environment = environment; Id = "AlpacaBrokerage"; //BrokerageName.Alpaca.ToString(); returns "Alpaca" Key = key; Secret = secret; }
/// <summary> /// Contructor for live trading with FXCM /// </summary> /// <param name="user">Username associated with brokerage</param> /// <param name="password">Password associated with brokerage</param> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public FXCMLiveAlgorithmSettings(string user, string password, BrokerageEnvironment environment, string account) : base(user, password, environment, account) { Id = BrokerageName.FxcmBrokerage.ToStringInvariant(); }
/// <summary> /// Constructor for default algorithms /// </summary> /// <param name="user">Username associated with brokerage</param> /// <param name="password">Password associated with brokerage</param> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public DefaultLiveAlgorithmSettings(string user, string password, BrokerageEnvironment environment, string account) : base(user, password, environment, account) { Id = BrokerageName.QuantConnectBrokerage.ToStringInvariant(); }
/// <summary> /// The constructor used by Oanda /// </summary> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public BaseLiveAlgorithmSettings(BrokerageEnvironment environment, string account) { User = ""; Password = ""; Environment = environment; Account = account; }
/// <summary> /// Constructor for default algorithms /// </summary> /// <param name="user">Username associated with brokerage</param> /// <param name="password">Password associated with brokerage</param> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public DefaultLiveAlgorithmSettings(string user, string password, BrokerageEnvironment environment, string account) : base(user, password, environment, account) { Id = BrokerageName.Default.ToString(); }
/// <summary> /// Constructor used by FXCM /// </summary> /// <param name="user">Username associated with brokerage</param> /// <param name="password">Password associated with brokerage</param> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public BaseLiveAlgorithmSettings(string user, string password, BrokerageEnvironment environment, string account) { User = user; Password = password; Environment = environment; Account = account; }
/// <summary> /// Contructor for live trading with Oanda. /// </summary> /// <param name="accessToken">Access Token (specific for Oanda Brokerage)</param> /// <param name="environment">'live'/'paper'</param> /// <param name="account">Account id for brokerage</param> public OandaLiveAlgorithmSettings(string accessToken, BrokerageEnvironment environment, string account) : base(environment, account) { AccessToken = accessToken; // The DateIssued parameter is required by the Api, but not required to trade. // This should be fixed on the Api side. DateIssued = "1"; Id = BrokerageName.OandaBrokerage.ToStringInvariant(); }
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 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 = ""; } }