Ejemplo n.º 1
0
        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());
            });
        }
Ejemplo n.º 2
0
        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);
            });
        }
Ejemplo n.º 3
0
        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);
            });
        }