/// <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();
 }
Beispiel #8
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     = "";
            }
        }
Beispiel #9
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     = "";
            }
        }