コード例 #1
0
        private static async Task<ICryptoOrderBook> StartHuobi(string pair, bool optimized, bool l2Optimized)
        {
            var config = new HuobiMarketByPriceWebsocketClientConfig
            {
                Url = HuobiConstants.ApiMbpWebsocketUrl,
                CommunicatorName = "Huobi"
            };
            var loggerFactory = new LoggerFactory().AddSerilog(Log.Logger);

            var client = HuobiWebsocketClientsFactory.CreateMarketByPriceClient(config, loggerFactory);
            var source = new HuobiOrderBookSource(client);

            var orderBook = l2Optimized ? 
                new CryptoOrderBookL2(pair, source) : 
                (ICryptoOrderBook)new CryptoOrderBook(pair, source);

            if (optimized)
            {
                ConfigureOptimized(source, orderBook);
            }

            _ = client.Start();

            // send subscription request to order book data
            client.Send(new MarketByPriceSubscribeRequest("s1", pair, 20));

            // send request to snapshot
            client.Send(new MarketByPricePullRequest("p1", pair, 20));

            return orderBook;
        }
コード例 #2
0
        public async Task ConnectionEstablished_PingMessageReceived()
        {
            // Arrange
            using var client = HuobiWebsocketClientsFactory.CreateAccountClient(
                      HuobiConstants.ApiAccountWebsocketUrl,
                      "not_required_for_ping",
                      "not_required_for_ping");

            AccountPingRequest?receivedPingMessage = null;
            var receivedEvent = new ManualResetEvent(false);

            client.Streams.AccountPingMessageStream.Subscribe(
                message =>
            {
                receivedPingMessage = message;
                receivedEvent.Set();
            });

            // Act
            await client.Start();

            // Assert
            receivedEvent.WaitOne(TimeSpan.FromSeconds(30));
            Assert.NotNull(receivedPingMessage);
        }
コード例 #3
0
        public async Task AuthenticationRequest_ResponseMessageReceived(string accessKey, string secretKey)
        {
            // Arrange
            using var client = HuobiWebsocketClientsFactory.CreateAccountClient(
                      HuobiConstants.ApiAccountWebsocketUrl,
                      accessKey,
                      secretKey);

            AuthenticationResponse?response = null;
            var receivedEvent = new ManualResetEvent(false);

            client.Streams.AuthenticationResponseStream.Subscribe(
                message =>
            {
                response = message;
                receivedEvent.Set();
            });

            // Act
            await client.Start();

            // Assert
            receivedEvent.WaitOne(TimeSpan.FromSeconds(30));
            Assert.NotNull(response);
        }
コード例 #4
0
        public async Task PullRequest_ResponseMessageReceived()
        {
            // Arrange
            using var client = HuobiWebsocketClientsFactory.CreateMarketClient(HuobiConstants.ApiWebsocketUrl);

            var request = new MarketCandlestickPullRequest("req1", "btcusdt", MarketCandlestickPeriodType.SixtyMinutes);

            MarketCandlestickPullResponse?response = null;
            var receivedEvent = new ManualResetEvent(false);

            client.Streams.CandlestickPullStream.Subscribe(
                message =>
            {
                response = message;
                receivedEvent.Set();
            });

            await client.Start();

            // Act
            client.Send(request);

            // Assert
            receivedEvent.WaitOne(TimeSpan.FromSeconds(30));
            Assert.NotNull(response);
        }
コード例 #5
0
        private static (ITradeSource, IWebsocketClient) GetHuobi(string pair)
        {
            var config = new HuobiMarketWebsocketClientConfig
            {
                Url = HuobiConstants.ApiWebsocketUrl,
                CommunicatorName = "Huobi"
            };
            var loggerFactory = new LoggerFactory().AddSerilog(Log.Logger);

            var client = HuobiWebsocketClientsFactory.CreateMarketClient(config, loggerFactory);
            var source = new HuobiTradeSource(client);

            client.Communicator.ReconnectionHappened.Subscribe(
                x =>
            {
                var subscribeRequest = new MarketTradeDetailSubscribeRequest("id1", pair);
                client.Send(subscribeRequest);
            });

            return(source, client.Communicator);
        }