Exemplo n.º 1
0
        private void CacheTick(BinanceStreamTick data)
        {
            var instrument = data.Symbol;

            lock (_subMgr)
            {
                CacheResult(BINANCE, instrument, RtdFields.FIRST_ID, data.FirstTradeId);
                CacheResult(BINANCE, instrument, RtdFields.LAST_ID, data.LastTradeId);
                CacheResult(BINANCE, instrument, RtdFields.QUOTE_VOL, data.TotalTradedQuoteAssetVolume);
                CacheResult(BINANCE, instrument, RtdFields.VOL, data.TotalTradedBaseAssetVolume);

                CacheResult(BINANCE, instrument, RtdFields.ASK, data.BestAskPrice);
                CacheResult(BINANCE, instrument, RtdFields.ASK_SIZE, data.BestAskQuantity);
                CacheResult(BINANCE, instrument, RtdFields.BID, data.BestBidPrice);
                CacheResult(BINANCE, instrument, RtdFields.BID_SIZE, data.BestBidQuantity);

                CacheResult(BINANCE, instrument, RtdFields.LOW, data.LowPrice);
                CacheResult(BINANCE, instrument, RtdFields.HIGH, data.HighPrice);

                CacheResult(BINANCE, instrument, RtdFields.VWAP, data.WeightedAverage);
                CacheResult(BINANCE, instrument, RtdFields.PRICE_PCT, data.PriceChangePercentage / 100);
                CacheResult(BINANCE, instrument, RtdFields.PRICE_CHG, data.PriceChange);
                CacheResult(BINANCE, instrument, RtdFields.TRADES, data.TotalTrades);

                CacheResult(BINANCE, instrument, RtdFields.OPEN_TIME, data.StatisticsOpenTime.ToLocalTime());
                CacheResult(BINANCE, instrument, RtdFields.CLOSE_TIME, data.StatisticsCloseTime.ToLocalTime());

                // A calculated field
                CacheResult(BINANCE, instrument, RtdFields.SPREAD, data.BestAskPrice - data.BestBidPrice);
            }
        }
Exemplo n.º 2
0
        private void PriceTicksHandler(BinanceStreamTick obj)
        {
            var startTime = DateTime.UtcNow;

            MamaBot.GlobalShared.Vars.TickChannel.Queue.Enqueue(obj);

            Debug.WriteLine((DateTime.UtcNow - startTime).TotalMilliseconds + "ms");
        }
Exemplo n.º 3
0
        private void TT5(BinanceStreamTick obj)
        {
            //TBD
            Logger.Info(string.Format("CVD : {0}", CurrentCumulativeDelta));

            Logger.Info(string.Format("WAP : {0}", obj.WeightedAveragePrice));

            CurrentCumulativeDelta -= obj.AskQuantity;

            CurrentCumulativeDelta += obj.BidQuantity;
        }
Exemplo n.º 4
0
        public void SubscribingToSymbolTicker_Should_TriggerWhenSymbolTickerStreamMessageIsReceived()
        {
            // arrange
            var socket = new Mock <IWebsocket>();

            socket.Setup(s => s.Close());
            socket.Setup(s => s.Connect()).Returns(Task.FromResult(true));
            socket.Setup(s => s.SetEnabledSslProtocols(It.IsAny <System.Security.Authentication.SslProtocols>()));

            var factory = new Mock <IWebsocketFactory>();

            factory.Setup(s => s.CreateWebsocket(It.IsAny <Log>(), It.IsAny <string>())).Returns(socket.Object);

            BinanceStreamTick result = null;
            var client = new BinanceSocketClient {
                SocketFactory = factory.Object
            };

            client.SubscribeToSymbolTicker("test", (test) => result = test);

            var data = new BinanceStreamTick()
            {
                BestAskPrice          = 0.1m,
                BestAskQuantity       = 0.2m,
                BestBidPrice          = 0.3m,
                BestBidQuantity       = 0.4m,
                CloseTradesQuantity   = 0.5m,
                CurrentDayClosePrice  = 0.6m,
                FirstTradeId          = 1,
                HighPrice             = 0.7m,
                LastTradeId           = 2,
                LowPrice              = 0.8m,
                OpenPrice             = 0.9m,
                PrevDayClosePrice     = 1.0m,
                PriceChange           = 1.1m,
                PriceChangePercentage = 1.2m,
                StatisticsCloseTime   = new DateTime(2017, 1, 2),
                StatisticsOpenTime    = new DateTime(2017, 1, 1),
                Symbol = "test",
                TotalTradedBaseAssetVolume  = 1.3m,
                TotalTradedQuoteAssetVolume = 1.4m,
                TotalTrades     = 3,
                WeightedAverage = 1.5m
            };

            // act
            socket.Raise(r => r.OnMessage += null, JsonConvert.SerializeObject(data));

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data, result));
        }
Exemplo n.º 5
0
        public void SubscribingToSymbolTicker_Should_TriggerWhenSymbolTickerStreamMessageIsReceived()
        {
            // arrange
            var socket = new TestSocket();
            var client = TestHelpers.CreateSocketClient(socket);

            BinanceStreamTick result = null;

            client.SubscribeToSymbolTickerUpdates("ETHBTC", (test) => result = test);

            var data = new BinanceStreamTick()
            {
                BestAskPrice          = 0.1m,
                BestAskQuantity       = 0.2m,
                BestBidPrice          = 0.3m,
                BestBidQuantity       = 0.4m,
                CloseTradesQuantity   = 0.5m,
                CurrentDayClosePrice  = 0.6m,
                FirstTradeId          = 1,
                HighPrice             = 0.7m,
                LastTradeId           = 2,
                LowPrice              = 0.8m,
                OpenPrice             = 0.9m,
                PrevDayClosePrice     = 1.0m,
                PriceChange           = 1.1m,
                PriceChangePercentage = 1.2m,
                StatisticsCloseTime   = new DateTime(2017, 1, 2),
                StatisticsOpenTime    = new DateTime(2017, 1, 1),
                Symbol = "test",
                TotalTradedBaseAssetVolume  = 1.3m,
                TotalTradedQuoteAssetVolume = 1.4m,
                TotalTrades     = 3,
                WeightedAverage = 1.5m
            };

            // act
            socket.InvokeMessage(data);

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.AreEqual(data, result));
        }
Exemplo n.º 6
0
        private object DecodeTick(BinanceStreamTick data, string field)
        {
            var instrument = data.Symbol;

            switch (field)
            {
            case RtdFields.FIRST_ID: return(data.FirstTradeId);

            case RtdFields.LAST_ID: return(data.LastTradeId);

            case RtdFields.QUOTE_VOL: return(data.TotalTradedQuoteAssetVolume);

            case RtdFields.VOL: return(data.TotalTradedBaseAssetVolume);

            case RtdFields.ASK: return(data.BestAskPrice);

            case RtdFields.ASK_SIZE: return(data.BestAskQuantity);

            case RtdFields.BID: return(data.BestBidPrice);

            case RtdFields.BID_SIZE: return(data.BestBidQuantity);

            case RtdFields.LOW: return(data.LowPrice);

            case RtdFields.HIGH: return(data.HighPrice);

            case RtdFields.VWAP: return(data.WeightedAverage);

            case RtdFields.PRICE_PCT: return(data.PriceChangePercentage / 100);

            case RtdFields.PRICE_CHG: return(data.PriceChange);

            case RtdFields.TRADES: return(data.TotalTrades);

            case RtdFields.SPREAD: return(data.BestAskPrice - data.BestBidPrice);

            default:
                return(SubscriptionManager.UnsupportedField);
            }
        }
        public void SubscribingToSymbolTicker_Should_TriggerWhenSymbolTickerStreamMessageIsReceived()
        {
            // arrange
            var socket = new TestSocket();
            var client = TestHelpers.CreateSocketClient(socket, new BinanceSocketClientOptions()
            {
                LogVerbosity = LogVerbosity.Debug
            });

            BinanceStreamTick result = null;

            client.Spot.SubscribeToSymbolTickerUpdates("ETHBTC", (test) => result = test);

            var data = new BinanceCombinedStream <BinanceStreamTick>()
            {
                Stream = "test",
                Data   = new BinanceStreamTick()
                {
                    FirstTradeId      = 1,
                    HighPrice         = 0.7m,
                    LastTradeId       = 2,
                    LowPrice          = 0.8m,
                    OpenPrice         = 0.9m,
                    PrevDayClosePrice = 1.0m,
                    PriceChange       = 1.1m,
                    Symbol            = "test",
                    Volume            = 1.3m,
                    TotalTradedAlternateAssetVolume = 1.4m,
                    TotalTrades = 3
                }
            };

            // act
            socket.InvokeMessage(data);

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.AreEqual(data.Data, result));
        }
Exemplo n.º 8
0
        private void CacheTick(BinanceStreamTick data)
        {
            var instrument = data.Symbol;

            CacheResult(BINANCE, instrument, RtdFields.FIRST_ID, data.FirstTradeId);
            CacheResult(BINANCE, instrument, RtdFields.LAST_ID, data.LastTradeId);
            CacheResult(BINANCE, instrument, RtdFields.QUOTE_VOL, data.TotalTradedQuoteAssetVolume);
            CacheResult(BINANCE, instrument, RtdFields.VOL, data.TotalTradedBaseAssetVolume);

            CacheResult(BINANCE, instrument, RtdFields.ASK, data.BestAskPrice);
            CacheResult(BINANCE, instrument, RtdFields.ASK_SIZE, data.BestAskQuantity);
            CacheResult(BINANCE, instrument, RtdFields.BID, data.BestBidPrice);
            CacheResult(BINANCE, instrument, RtdFields.BID_SIZE, data.BestBidQuantity);

            CacheResult(BINANCE, instrument, RtdFields.LOW, data.LowPrice);
            CacheResult(BINANCE, instrument, RtdFields.HIGH, data.HighPrice);

            CacheResult(BINANCE, instrument, RtdFields.VWAP, data.WeightedAverage);
            CacheResult(BINANCE, instrument, RtdFields.PRICE_PCT, data.PriceChangePercentage / 100);
            CacheResult(BINANCE, instrument, RtdFields.PRICE_CHG, data.PriceChange);
            CacheResult(BINANCE, instrument, RtdFields.TRADES, data.TotalTrades);

            CacheResult(BINANCE, instrument, RtdFields.SPREAD, data.BestAskPrice - data.BestBidPrice);
        }