Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        /// <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);
        }