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); }
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); }
private async Task HandleResponse(OrderBookSnapshotResponse snapshot) { var pair = _channels[snapshot.ChannelId].Pair; await HandleOrderBookSnapshotAsync(pair, DateTime.UtcNow, // TODO: Get this from the server snapshot.Orders.Select(BitfinexModelConverter.ToOrderBookItem)); }
private OrderBookLevel[] ConvertSnapshot(OrderBookSnapshotResponse snapshot) { var bids = ConvertLevels(snapshot.Market, snapshot.Data.Bids); var asks = ConvertLevels(snapshot.Market, snapshot.Data.Asks); var levels = bids.Concat(asks).ToArray(); return(levels); }
private void HandleSnapshot(OrderBookSnapshotResponse snapshot) { // received snapshot, convert and stream var levels = ConvertSnapshot(snapshot); var bulk = new OrderBookLevelBulk(OrderBookAction.Insert, levels, CryptoOrderBookType.L2); FillBulk(snapshot, bulk); StreamSnapshot(bulk); }
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); }
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)); }
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); }