public async Task SubscribeOnCandles(string currencyPairId, CandlePeriod period, Action <IList <Infrastructure.Common.Models.Market.Candle> > callback, int limit = 30) { var request = new SocketSubscriptionRequest <CandleRequestParameters> { RequestMethodName = "subscribeCandles", SnapshotMethodName = "snapshotCandles", NotificationMethodName = "updateCandles", UnsubscribeMethodName = "unsubscribeCandles", RequestParameters = new CandleRequestParameters { CurrencyPairId = currencyPairId, Period = period.ToInnerFormat(), Limit = limit } }; await _connection.Subscribe <CandleNotificationParameters>(request, notificationParameters => { var notificationCurrencyPairId = notificationParameters.CurrencyPairId; var notificationPeriod = CandlePeriodMap.ToOuterFormat(notificationParameters.Period); if (!(currencyPairId == notificationCurrencyPairId && notificationPeriod == period)) { return; } callback(notificationParameters.Candles .Select(CandleMap.ToOuterModel) .ToList()); }); }
public async Task SubscribeOnOrderBook(string currencyPairId, Action <IList <Infrastructure.Common.Models.Market.OrderBookItem> > callback) { var request = new SocketSubscriptionRequest <OrderBookRequestParameters> { RequestMethodName = "subscribeOrderbook", SnapshotMethodName = "snapshotOrderbook", NotificationMethodName = "updateOrderbook", UnsubscribeMethodName = "unsubscribeOrderbook", RequestParameters = new OrderBookRequestParameters { CurrencyPairId = currencyPairId, } }; await _connection.Subscribe <OrderBookNotificationParameters>(request, notificationParameters => { var notificationCurrencyPairId = notificationParameters.CurrencyPairId; if (currencyPairId != notificationCurrencyPairId) { return; } var mergedItems = new List <Infrastructure.Common.Models.Market.OrderBookItem>(); mergedItems.AddRange(notificationParameters.AskItems.Select(item => item.ToOuterModel(OrderBookItemType.Ask))); mergedItems.AddRange(notificationParameters.BidItems.Select(item => item.ToOuterModel(OrderBookItemType.Bid))); callback(mergedItems); }); }
public async Task SubscribeOrders(Infrastructure.Common.Models.Market.CurrencyPair targetCurrencyPair, Action <Infrastructure.Common.Models.Trading.Order> callback) { var request = new SocketSubscriptionRequest <EmptyRequestParameters> { RequestMethodName = "subscribeReports", SnapshotMethodName = null, NotificationMethodName = "activeOrders", UnsubscribeMethodName = null, RequestParameters = new EmptyRequestParameters() }; await _connection.Subscribe <Order[]>(request, orders => { foreach (var order in orders) { if (order.CurrencyPairId != targetCurrencyPair.Id) { continue; } var result = order.ToOuterModel(targetCurrencyPair); callback(result); } }); request = new SocketSubscriptionRequest <EmptyRequestParameters> { RequestMethodName = "subscribeReports", SnapshotMethodName = null, NotificationMethodName = "report", UnsubscribeMethodName = null, RequestParameters = new EmptyRequestParameters() }; await _connection.Subscribe <Order>(request, order => { if (order.CurrencyPairId != targetCurrencyPair.Id) { return; } var result = order.ToOuterModel(targetCurrencyPair); callback(result); }); }