/// <summary> /// Sets the job we're subscribing for /// </summary> /// <param name="job">Job we're subscribing for</param> public void SetJob(LiveNodePacket job) { var wssUrl = job.BrokerageData["gdax-url"]; var restApi = job.BrokerageData["gdax-rest-api"]; var restClient = new RestClient(restApi); var webSocketClient = new WebSocketClientWrapper(); var passPhrase = job.BrokerageData["gdax-passphrase"]; var apiKey = job.BrokerageData["gdax-api-key"]; var apiSecret = job.BrokerageData["gdax-api-secret"]; var priceProvider = new ApiPriceProvider(job.UserId, job.UserToken); var aggregator = Composer.Instance.GetExportedValueByTypeName <IDataAggregator>( Config.Get("data-aggregator", "QuantConnect.Lean.Engine.DataFeeds.AggregationManager"), forceTypeNameOnExisting: false); Initialize( wssUrl: wssUrl, websocket: webSocketClient, restClient: restClient, apiKey: apiKey, apiSecret: apiSecret, passPhrase: passPhrase, algorithm: null, priceProvider: priceProvider, aggregator: aggregator, job: job ); if (!IsConnected) { Connect(); } }
/// <summary> /// Create the Brokerage instance /// </summary> /// <param name="job"></param> /// <param name="algorithm"></param> /// <returns></returns> public override IBrokerage CreateBrokerage(Packets.LiveNodePacket job, IAlgorithm algorithm) { var required = new[] { "bitfinex-rest", "bitfinex-url", "bitfinex-api-secret", "bitfinex-api-key" }; foreach (var item in required) { if (string.IsNullOrEmpty(job.BrokerageData[item])) { throw new Exception($"BitfinexBrokerageFactory.CreateBrokerage: Missing {item} in config.json"); } } var priceProvider = new ApiPriceProvider(job.UserId, job.UserToken); var brokerage = new BitfinexBrokerage( job.BrokerageData["bitfinex-url"], job.BrokerageData["bitfinex-rest"], job.BrokerageData["bitfinex-api-key"], job.BrokerageData["bitfinex-api-secret"], algorithm, priceProvider); Composer.Instance.AddPart <IDataQueueHandler>(brokerage); return(brokerage); }
/// <summary> /// Create the Brokerage instance /// </summary> /// <param name="job"></param> /// <param name="algorithm"></param> /// <returns></returns> public override IBrokerage CreateBrokerage(Packets.LiveNodePacket job, IAlgorithm algorithm) { var required = new[] { "bitfinex-rest", "bitfinex-url", "bitfinex-api-secret", "bitfinex-api-key" }; foreach (var item in required) { if (string.IsNullOrEmpty(job.BrokerageData[item])) { throw new Exception($"BitfinexBrokerageFactory.CreateBrokerage: Missing {item} in config.json"); } } var priceProvider = new ApiPriceProvider(job.UserId, job.UserToken); var brokerage = new BitfinexBrokerage( job.BrokerageData["bitfinex-url"], job.BrokerageData["bitfinex-rest"], job.BrokerageData["bitfinex-api-key"], job.BrokerageData["bitfinex-api-secret"], algorithm, priceProvider, Composer.Instance.GetExportedValueByTypeName <IDataAggregator>(Config.Get("data-aggregator", "QuantConnect.Lean.Engine.DataFeeds.AggregationManager"))); Composer.Instance.AddPart <IDataQueueHandler>(brokerage); return(brokerage); }
private static GDAXBrokerage GetBrokerage() { var wssUrl = Config.Get("gdax-url", "wss://ws-feed.pro.coinbase.com"); var webSocketClient = new WebSocketClientWrapper(); var restClient = new RestClient("https://api.pro.coinbase.com"); var apiKey = Config.Get("gdax-api-key"); var apiSecret = Config.Get("gdax-api-secret"); var passPhrase = Config.Get("gdax-passphrase"); var algorithm = new QCAlgorithm(); var userId = Config.GetInt("job-user-id"); var userToken = Config.Get("api-access-token"); var priceProvider = new ApiPriceProvider(userId, userToken); return(new GDAXBrokerage(wssUrl, webSocketClient, restClient, apiKey, apiSecret, passPhrase, algorithm, priceProvider)); }
protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { var restClient = new RestClient("https://api.pro.coinbase.com"); var webSocketClient = new WebSocketClientWrapper(); var algorithm = new Mock <IAlgorithm>(); algorithm.Setup(a => a.BrokerageModel).Returns(new GDAXBrokerageModel(AccountType.Cash)); var priceProvider = new ApiPriceProvider(Config.GetInt("job-user-id"), Config.Get("api-access-token")); return(new GDAXBrokerage(Config.Get("gdax-url", "wss://ws-feed.pro.coinbase.com"), webSocketClient, restClient, Config.Get("gdax-api-key"), Config.Get("gdax-api-secret"), Config.Get("gdax-passphrase"), algorithm.Object, priceProvider)); }
private static TestGDAXDataQueueHandler GetDataQueueHandler() { var wssUrl = Config.Get("gdax-url", "wss://ws-feed.pro.coinbase.com"); var webSocketClient = new WebSocketClientWrapper(); var restClient = new RestClient("https://api.pro.coinbase.com"); var apiKey = Config.Get("gdax-api-key"); var apiSecret = Config.Get("gdax-api-secret"); var passPhrase = Config.Get("gdax-passphrase"); var algorithm = new QCAlgorithm(); var userId = Config.GetInt("job-user-id"); var userToken = Config.Get("api-access-token"); var priceProvider = new ApiPriceProvider(userId, userToken); var aggregator = new AggregationManager(); return(new TestGDAXDataQueueHandler(wssUrl, webSocketClient, restClient, apiKey, apiSecret, passPhrase, algorithm, priceProvider, aggregator, null)); }
/// <summary> /// Create the Brokerage instance /// </summary> /// <param name="job"></param> /// <param name="algorithm"></param> /// <returns></returns> public override IBrokerage CreateBrokerage(Packets.LiveNodePacket job, IAlgorithm algorithm) { var required = new[] { "gdax-url", "gdax-api-secret", "gdax-api-key", "gdax-passphrase" }; foreach (var item in required) { if (string.IsNullOrEmpty(job.BrokerageData[item])) { throw new Exception($"GDAXBrokerageFactory.CreateBrokerage: Missing {item} in config.json"); } } var restApi = BrokerageData["gdax-rest-api"]; if (job.BrokerageData.ContainsKey("gdax-rest-api")) { restApi = job.BrokerageData["gdax-rest-api"]; } var restClient = new RestClient(restApi); var webSocketClient = new WebSocketClientWrapper(); var priceProvider = new ApiPriceProvider(job.UserId, job.UserToken); var aggregator = Composer.Instance.GetExportedValueByTypeName <IDataAggregator>(Config.Get("data-aggregator", "QuantConnect.Lean.Engine.DataFeeds.AggregationManager"), forceTypeNameOnExisting: false); IBrokerage brokerage; if (job.DataQueueHandler.Contains("GDAXDataQueueHandler")) { var dataQueueHandler = new GDAXDataQueueHandler(job.BrokerageData["gdax-url"], webSocketClient, restClient, job.BrokerageData["gdax-api-key"], job.BrokerageData["gdax-api-secret"], job.BrokerageData["gdax-passphrase"], algorithm, priceProvider, aggregator, job); Composer.Instance.AddPart <IDataQueueHandler>(dataQueueHandler); brokerage = dataQueueHandler; } else { brokerage = new GDAXBrokerage(job.BrokerageData["gdax-url"], webSocketClient, restClient, job.BrokerageData["gdax-api-key"], job.BrokerageData["gdax-api-secret"], job.BrokerageData["gdax-passphrase"], algorithm, priceProvider, aggregator, job); } return(brokerage); }
/// <summary> /// Create the Brokerage instance /// </summary> /// <param name="job"></param> /// <param name="algorithm"></param> /// <returns></returns> public override IBrokerage CreateBrokerage(Packets.LiveNodePacket job, IAlgorithm algorithm) { var required = new[] { "gdax-url", "gdax-api-secret", "gdax-api-key", "gdax-passphrase" }; foreach (var item in required) { if (string.IsNullOrEmpty(job.BrokerageData[item])) { throw new Exception($"GDAXBrokerageFactory.CreateBrokerage: Missing {item} in config.json"); } } var restClient = new RestClient("https://api.pro.coinbase.com"); var webSocketClient = new WebSocketWrapper(); var priceProvider = new ApiPriceProvider(job.UserId, job.UserToken); IBrokerage brokerage; if (job.DataQueueHandler.EndsWith("GDAXDataQueueHandler")) { var dataQueueHandler = new GDAXDataQueueHandler(job.BrokerageData["gdax-url"], webSocketClient, restClient, job.BrokerageData["gdax-api-key"], job.BrokerageData["gdax-api-secret"], job.BrokerageData["gdax-passphrase"], algorithm, priceProvider); Composer.Instance.AddPart <IDataQueueHandler>(dataQueueHandler); brokerage = dataQueueHandler; } else { brokerage = new GDAXBrokerage(job.BrokerageData["gdax-url"], webSocketClient, restClient, job.BrokerageData["gdax-api-key"], job.BrokerageData["gdax-api-secret"], job.BrokerageData["gdax-passphrase"], algorithm, priceProvider); } return(brokerage); }