public async Task ReceiveOrderBook()
        {
            await _clientWebSocket.ConnectAsync();

            var info = await _clientWebSocket.GetResponseAsync();

            Assert.NotNull(info);

            var request = new SubscribeRequest
            {
                Event   = "subscribe",
                Channel = "book",
                Pair    = "BTCUSD",
                Prec    = "R0"
            };
            await _clientWebSocket.SendRequestAsync(request);

            var successfull = await _clientWebSocket.GetResponseAsync();

            var respose = JsonConvert.DeserializeObject <SubscribedResponse>(successfull);

            var snapshot = await _clientWebSocket.GetResponseAsync();

            var obsh = OrderBookSnapshotResponse.Parse(snapshot);


            var update = await _clientWebSocket.GetResponseAsync();

            var upd = OrderBookUpdateResponse.Parse(update);

            Assert.NotNull(respose);
        }
Exemple #2
0
        public async Task ReceiveOrderBook()
        {
            await _clientWebSocket.ConnectAsync(CancellationToken.None);

            var info = await _clientWebSocket.GetResponseAsync(CancellationToken.None);

            Assert.NotNull(info);

            var request = SubscribeOrderBooksRequest.BuildRequest("BTCUSD", "", "R0");

            await _clientWebSocket.SendRequestAsync(request, CancellationToken.None);

            var successfull = await _clientWebSocket.GetResponseAsync(CancellationToken.None);

            var respose = JsonConvert.DeserializeObject <SubscribedResponse>(successfull);

            var snapshot = await _clientWebSocket.GetResponseAsync(CancellationToken.None);

            OrderBookSnapshotResponse.Parse(snapshot);

            var update = await _clientWebSocket.GetResponseAsync(CancellationToken.None);

            OrderBookUpdateResponse.Parse(update);

            Assert.NotNull(respose);
        }
        private async Task <dynamic> GetResponse()
        {
            var json = await Messenger.GetResponseAsync(CancellationToken);

            var result = EventResponse.Parse(json) ??
                         TickerResponse.Parse(json) ??
                         OrderBookSnapshotResponse.Parse(json) ??
                         (dynamic)OrderBookUpdateResponse.Parse(json) ??
                         HeartbeatResponse.Parse(json);

            return(result);
        }
Exemple #4
0
        private IEnumerable <OrderBookLevelBulk> ConvertDiff(OrderBookUpdateResponse update)
        {
            var converted = ConvertLevels(update.ProductId, update.Changes);

            var group = converted.GroupBy(RecognizeAction).ToArray();

            foreach (var actionGroup in group)
            {
                var bulk = new OrderBookLevelBulk(actionGroup.Key, actionGroup.ToArray(), CryptoOrderBookType.L2);
                FillBulk(update, bulk);
                yield return(bulk);
            }
        }
        private IEnumerable <OrderBookLevelBulk> ConvertDiff(OrderBookUpdateResponse update)
        {
            var convertedBids = ConvertLevels(update.Market, update.Data.Asks);
            var convertedAsks = ConvertLevels(update.Market, update.Data.Bids);

            var converted = convertedAsks.Concat(convertedBids);

            var group = converted.GroupBy(RecognizeAction).ToArray();

            foreach (var actionGroup in group)
            {
                var bulk = new OrderBookLevelBulk(actionGroup.Key, actionGroup.ToArray(), CryptoOrderBookType.L2);
                FillBulk(update, bulk);
                yield return(bulk);
            }
        }
        private async Task HandleResponse(OrderBookUpdateResponse response)
        {
            var orderBookItem = BitfinexModelConverter.ToOrderBookItem(response);
            var pair          = _channels[response.ChannelId].Pair;

            response.Pair = pair;

            if (response.Price == 0)
            {
                await HandleOrdersEventsAsync(response.Pair,
                                              OrderBookEventType.Delete, new[] { orderBookItem });
            }
            else
            {
                await HandleOrdersEventsAsync(response.Pair,
                                              OrderBookEventType.Add, new[] { orderBookItem });
            }
        }
 private bool HandleObjectMessage(string msg)
 {
     // ********************
     // ADD OBJECT HANDLERS BELOW
     // ********************
     //var response = FtxJsonSerializer.Deserialize<JObject>(msg);
     return
         (SubscribedResponse.TryHandle(msg, Streams.SubscribedSubject) ||
          ErrorResponse.TryHandle(msg, Streams.ErrorSubject) ||
          PongResponse.TryHandle(msg, Streams.PongSubject) ||
          TickerResponse.TryHandle(msg, Streams.TickerSubject) ||
          OrderBookUpdateResponse.TryHandle(msg, Streams.OrderBookUpdateSubject, "update") ||
          OrderBookSnapshotResponse.TryHandle(msg, Streams.OrderBookSnapshotSubject, "partial") ||
          // MarketsUpdateResponse.TryHandle(msg, Streams.MarketsUpdateSubject, "update") ||
          // MarketsSnapshotResponse.TryHandle(msg, Streams.MarketsSnapshotSubject, "partial") ||
          MarketsResponse.TryHandle(msg, Streams.MarketsSubject) ||
          TradeResponse.TryHandle(msg, Streams.TradesSubject) ||
          OrdersResponse.TryHandle(msg, Streams.OrdersSubject) ||
          FillsResponse.TryHandle(msg, Streams.FillsSubject));
 }
Exemple #8
0
        private bool HandleObjectMessage(string msg)
        {
            var response = CoinbaseJsonSerializer.Deserialize <JObject>(msg);

            // ********************
            // ADD OBJECT HANDLERS BELOW
            // ********************

            return

                (HeartbeatResponse.TryHandle(response, Streams.HeartbeatSubject) ||
                 TradeResponse.TryHandle(response, Streams.TradesSubject) ||
                 OrderBookUpdateResponse.TryHandle(response, Streams.OrderBookUpdateSubject) ||
                 OrderBookSnapshotResponse.TryHandle(response, Streams.OrderBookSnapshotSubject) ||
                 TickerResponse.TryHandle(response, Streams.TickerSubject) ||

                 ErrorResponse.TryHandle(response, Streams.ErrorSubject) ||
                 SubscribeResponse.TryHandle(response, Streams.SubscribeSubject) ||

                 false);
        }
 private void HandleBook(OrderBookUpdateResponse update)
 {
     BufferData(update);
 }