Beispiel #1
0
        public void Setup()
        {
            var priceProvider = new Mock <IPriceProvider>();

            priceProvider.Setup(x => x.GetLastPrice(It.IsAny <Symbol>())).Returns(1.234m);

            _unit          = new GDAXBrokerage("wss://localhost", _wss.Object, _rest.Object, "abc", "MTIz", "pass", _algo.Object, priceProvider.Object);
            _orderData     = File.ReadAllText("TestData//gdax_order.txt");
            _matchData     = File.ReadAllText("TestData//gdax_match.txt");
            _openOrderData = File.ReadAllText("TestData//gdax_openOrders.txt");
            _accountsData  = File.ReadAllText("TestData//gdax_accounts.txt");
            _holdingData   = File.ReadAllText("TestData//gdax_holding.txt");
            _orderByIdData = File.ReadAllText("TestData//gdax_orderById.txt");
            _tickerData    = File.ReadAllText("TestData//gdax_ticker.txt");

            _symbol = Symbol.Create("BTCUSD", SecurityType.Crypto, Market.GDAX);

            _rest.Setup(m => m.Execute(It.Is <IRestRequest>(r => r.Resource.StartsWith("/products/")))).Returns(new RestSharp.RestResponse
            {
                Content    = File.ReadAllText("TestData//gdax_tick.txt"),
                StatusCode = HttpStatusCode.OK
            });

            _rest.Setup(m => m.Execute(It.Is <IRestRequest>(r => r.Resource.StartsWith("/orders/" + _brokerId) || r.Resource.StartsWith("/orders/" + _matchBrokerId))))
            .Returns(new RestSharp.RestResponse
            {
                Content    = File.ReadAllText("TestData//gdax_orderById.txt"),
                StatusCode = HttpStatusCode.OK
            });

            _algo.Setup(a => a.BrokerageModel.AccountType).Returns(_accountType);
            _algo.Setup(a => a.AccountCurrency).Returns(Currencies.USD);
        }
        public static void AddOrder(GDAXBrokerage unit, int id, string brokerId, decimal quantity)
        {
            var order = new Orders.MarketOrder {
                BrokerId = new List <string> {
                    brokerId
                }, Quantity = quantity, Id = id
            };

            unit.CachedOrderIDs.TryAdd(1, order);
            unit.FillSplit.TryAdd(id, new GDAXFill(order));
        }
Beispiel #3
0
        public static void AddOrder(GDAXBrokerage unit, int id, string brokerId, decimal quantity)
        {
            var order = new Orders.MarketOrder {
                BrokerId = new List <string> {
                    brokerId
                }, Symbol = Btcusd, Quantity = quantity, Id = id
            };

            order.PriceCurrency = Currencies.USD;
            unit.CachedOrderIDs.TryAdd(1, order);
            unit.FillSplit.TryAdd(id, new GDAXFill(order));
        }
Beispiel #4
0
        public void GetsHistory(Symbol symbol, Resolution resolution, TickType tickType, TimeSpan period, bool shouldBeEmpty)
        {
            var restClient      = new RestClient("https://api.pro.coinbase.com");
            var webSocketClient = new WebSocketClientWrapper();
            var aggregator      = new AggregationManager();

            var brokerage = 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"), null, null, aggregator, null);

            var historyProvider = new BrokerageHistoryProvider();

            historyProvider.SetBrokerage(brokerage);
            historyProvider.Initialize(new HistoryProviderInitializeParameters(null, null, null, null, null, null, null, false, new DataPermissionManager()));

            var now = DateTime.UtcNow;

            var requests = new[]
            {
                new HistoryRequest(now.Add(-period),
                                   now,
                                   typeof(TradeBar),
                                   symbol,
                                   resolution,
                                   SecurityExchangeHours.AlwaysOpen(TimeZones.Utc),
                                   DateTimeZone.Utc,
                                   resolution,
                                   false,
                                   false,
                                   DataNormalizationMode.Adjusted,
                                   tickType)
            };

            var history = historyProvider.GetHistory(requests, TimeZones.Utc).ToList();

            foreach (var slice in history)
            {
                var bar = slice.Bars[symbol];

                Log.Trace($"{bar.Time}: {bar.Symbol} - O={bar.Open}, H={bar.High}, L={bar.Low}, C={bar.Close}, V={bar.Volume}");
            }

            if (shouldBeEmpty)
            {
                Assert.IsTrue(history.Count == 0);
            }
            else
            {
                Assert.IsTrue(history.Count > 0);
            }

            Log.Trace("Data points retrieved: " + historyProvider.DataPointCount);
        }
        private static GDAXBrokerage GetBrokerage()
        {
            var wssUrl          = Config.Get("gdax-url", "wss://ws-feed.pro.coinbase.com");
            var webSocketClient = new WebSocketWrapper();
            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 brokerage = new GDAXBrokerage(wssUrl, webSocketClient, restClient, apiKey, apiSecret, passPhrase, algorithm);

            brokerage.Connect();

            return(brokerage);
        }
Beispiel #6
0
        private static GDAXBrokerage GetBrokerage()
        {
            var wssUrl          = Config.Get("gdax-url", "wss://ws-feed.pro.coinbase.com");
            var webSocketClient = new WebSocketWrapper();
            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 brokerage = new GDAXBrokerage(wssUrl, webSocketClient, restClient, apiKey, apiSecret, passPhrase, algorithm, priceProvider);

            brokerage.Connect();

            return(brokerage);
        }
Beispiel #7
0
        public void Setup()
        {
            _unit          = new GDAXBrokerage("wss://localhost", _wss.Object, _rest.Object, "abc", "MTIz", "pass", _algo.Object);
            _orderData     = File.ReadAllText("TestData//gdax_order.txt");
            _matchData     = File.ReadAllText("TestData//gdax_match.txt");
            _openOrderData = File.ReadAllText("TestData//gdax_openOrders.txt");
            _accountsData  = File.ReadAllText("TestData//gdax_accounts.txt");
            _holdingData   = File.ReadAllText("TestData//gdax_holding.txt");
            _orderByIdData = File.ReadAllText("TestData//gdax_orderById.txt");
            _tickerData    = File.ReadAllText("TestData//gdax_ticker.txt");

            _symbol = Symbol.Create("BTCUSD", SecurityType.Crypto, Market.GDAX);

            _rest.Setup(m => m.Execute(It.Is <IRestRequest>(r => r.Resource.StartsWith("/products/")))).Returns(new RestSharp.RestResponse
            {
                Content    = File.ReadAllText("TestData//gdax_tick.txt"),
                StatusCode = HttpStatusCode.OK
            });

            _rest.Setup(m => m.Execute(It.Is <IRestRequest>(r => r.Resource.StartsWith("/orders/" + _brokerId) || r.Resource.StartsWith("/orders/" + _matchBrokerId))))
            .Returns(new RestSharp.RestResponse
            {
                Content    = File.ReadAllText("TestData//gdax_orderById.txt"),
                StatusCode = HttpStatusCode.OK
            });

            _algo.Setup(a => a.BrokerageModel.AccountType).Returns(_accountType);
            var rateMock = new Mock <IRestClient>();

            _unit.RateClient = rateMock.Object;
            rateMock.Setup(r => r.Execute(It.IsAny <IRestRequest>())).Returns(new RestResponse
            {
                Content    = @"{""base"":""USD"",""date"":""2001-01-01"",""rates"":{""GBP"":1.234 }}",
                StatusCode = HttpStatusCode.OK
            });
        }