/// <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 Interfaces.IBrokerage CreateBrokerage(Packets.LiveNodePacket job, Interfaces.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(string.Format("GDAXBrokerageFactory.CreateBrokerage: Missing {0} in config.json", item)); } } var restClient = new RestClient("https://api.gdax.com"); var webSocketClient = new WebSocketWrapper(); var brokerage = new GDAXBrokerage(job.BrokerageData["gdax-url"], webSocketClient, restClient, job.BrokerageData["gdax-api-key"], job.BrokerageData["gdax-api-secret"], job.BrokerageData["gdax-passphrase"], algorithm); 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[] { "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); }