Exemplo n.º 1
0
        public void SubscribingToTradeStream_Should_TriggerWhenTradeStreamMessageIsReceived()
        {
            // arrange
            var socket = new TestSocket();
            var client = TestHelpers.CreateSocketClient(socket);

            BinanceStreamTrade result = null;

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

            var data = new BinanceCombinedStream <BinanceStreamTrade>()
            {
                Stream = "test",
                Data   = new BinanceStreamTrade()
                {
                    Event         = "TestTradeStream",
                    EventTime     = new DateTime(2017, 1, 1),
                    Symbol        = "ETHBTC",
                    BuyerIsMaker  = true,
                    BuyerOrderId  = 10000000000000,
                    SellerOrderId = 2000000000000,
                    Price         = 1.1m,
                    Quantity      = 2.2m,
                    TradeTime     = new DateTime(2017, 1, 1)
                }
            };

            // act
            socket.InvokeMessage(data);

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.AreEqual(data.Data, result));
        }
 public AggregateTradeViewModel(BinanceStreamTrade data)
 {
     Symbol       = data.Symbol;
     Price        = data.Price;
     Quantity     = data.Quantity;
     FirstTradeID = data.FirstTradeId;
     LastTradeID  = data.LastTradeId;
     Time         = data.TradeTime;
     BuyerIsMaker = data.BuyerIsMaker;
     //IsBestMatch = data.
 }
Exemplo n.º 3
0
 public BinanceStreamClick(BinanceStreamTrade t)
 {
     Symbol        = t.Symbol;
     TradeId       = t.TradeId;
     Price         = t.Price;
     Quantity      = t.Quantity;
     BuyerOrderId  = t.BuyerOrderId;
     SellerOrderId = t.SellerOrderId;
     TradeTime     = t.TradeTime;
     BuyerIsMaker  = t.BuyerIsMaker ? 1 : 0;
 }
Exemplo n.º 4
0
        public static Trade ToEntity(this BinanceStreamTrade item)
        {
            Trade trade = new Trade();

            trade.ExchangeCode = ExchangeCode.BINANCE.Code;
            trade.Symbol       = item.Symbol;
            trade.Time         = item.TradeTime;
            trade.TradeId      = item.TradeId;
            trade.Price        = item.Price;
            trade.Quantity     = item.Quantity;

            return(trade);
        }
Exemplo n.º 5
0
 public static Trade ToTradeModel(this BinanceStreamTrade streamTrade, SymbolPair symbolPair)
 {
     return(new Trade()
     {
         SymbolPair = symbolPair,
         TradeId = streamTrade.TradeId,
         TradeTime = streamTrade.TradeTime,
         Price = streamTrade.Price,
         Quantity = streamTrade.Quantity,
         BuyerOrderId = streamTrade.BuyerOrderId,
         SellerOrderId = streamTrade.SellerOrderId,
     });
 }
Exemplo n.º 6
0
 public void ProduceEvent(BinanceStreamTrade e)
 {
     try
     {
         //Console.WriteLine(e.TradeTime);
         _producer.BeginProduce("socket", new Message <Null, string>
         {
             Value = JsonConvert.SerializeObject(new BinanceStreamClick(e))
         }, Void);
         _producer.Flush(TimeSpan.FromSeconds(42));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }
Exemplo n.º 7
0
        public void SubscribingToTradeStream_Should_TriggerWhenTradeStreamMessageIsReceived()
        {
            // 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);

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

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

            var data = new BinanceCombinedStream <BinanceStreamTrade>()
            {
                Stream = "test",
                Data   = new BinanceStreamTrade()
                {
                    Event         = "TestTradeStream",
                    EventTime     = new DateTime(2017, 1, 1),
                    Symbol        = "test",
                    TradeId       = 1000000000000,
                    BuyerIsMaker  = true,
                    BuyerOrderId  = 10000000000000,
                    SellerOrderId = 2000000000000,
                    Price         = 1.1m,
                    Quantity      = 2.2m,
                    TradeTime     = new DateTime(2017, 1, 1)
                }
            };

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

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data.Data, result));
        }
Exemplo n.º 8
0
        public void SubscribingToTradeStream_Should_TriggerWhenTradeStreamMessageIsReceived()
        {
            // arrange
            var socket = new Mock <IWebsocket>();

            socket.Setup(s => s.Close());
            socket.Setup(s => s.Connect());
            socket.Setup(s => s.Url).Returns("test");
            socket.Setup(s => s.SetEnabledSslProtocols(It.IsAny <System.Security.Authentication.SslProtocols>()));

            var factory = new Mock <IWebsocketFactory>();

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

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

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

            var data = new BinanceStreamTrade()
            {
                Event             = "TestTradeStream",
                EventTime         = new DateTime(2017, 1, 1),
                Symbol            = "test",
                AggregatedTradeId = 1000000000000,
                BuyerIsMaker      = true,
                FirstTradeId      = 10000000000000,
                LastTradeId       = 2000000000000,
                Price             = 1.1,
                Quantity          = 2.2,
                TradeTime         = new DateTime(2017, 1, 1)
            };

            // act
            socket.Raise(r => r.OnMessage += null, new MessagedEventArgs(JsonConvert.SerializeObject(data), false, false, true, new byte[2]));

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data, result));
        }
Exemplo n.º 9
0
 private void OnTradesUpdate(BinanceStreamTrade data)
 {
     //var symbol = AllPrices.SingleOrDefault(a => a.Symbol == data.Symbol);
     //if (symbol == null) return;
     //
     //lock (tradeLock)
     //{
     //    var trade = symbol?.AggregateTrades?.SingleOrDefault(t => t.AggregateTradeID == data.AggregatedTradeId);
     //    if (trade == null)
     //    {
     //        Application.Current.Dispatcher.Invoke(() =>
     //        {
     //            symbol.AddAggregateTrade(new AggregateTradeViewModel(data));
     //        });
     //    }
     //    else
     //    {
     //        // Possibly Update Trade if there is new info
     //    }
     //}
 }
Exemplo n.º 10
0
        /// <summary>
        /// Method used to receive Order socked
        /// Todo : Migrate external list from Instance class to Orderflow Stats
        /// </summary>
        /// <param name="Trade"></param>
        private async void OrderSocketHandler(BinanceStreamTrade trade)
        {
            try
            {
                var startTime = DateTime.UtcNow;

                Stopwatch counter = new Stopwatch();
                counter.Start();
                MamaBot.GlobalShared.Vars.OrderChannel.Queue.Enqueue(new Order(trade.OrderId, trade.Price, trade.Quantity, trade.BuyerIsMaker ? OrderDirection.Buy : OrderDirection.Sell, trade.TradeTime));
                counter.Stop();
                //_logger.LogInformation($"StopWatch Queue routing time (including CMPT call) : {counter.Elapsed}");

                Debug.WriteLine((DateTime.UtcNow - startTime).TotalMilliseconds + "ms");

                //System.Threading.Thread ComputeThread = new Thread(() => {

                //    if (trade.BuyerIsMaker)
                //    {

                //        Task.Run(() =>
                //        {
                //            counter.Start();
                //            BuyerMatcher.Add(trade);
                //            TT2.AddOrder(new Order(trade.OrderId, trade.Price, trade.Quantity, OrderDirection.Buy, trade.TradeTime));
                //            var filledBuyerQuantity = BuyerMatcher.SumF(y => y.Quantity);
                //            counter.Stop();
                //            _logger.LogInformation($"StopWatch Buy Trade : {counter.Elapsed}");

                //            _logger.LogInformation($"FilledBuyerQuantity : {filledBuyerQuantity}");
                //            _logger.LogInformation($"FilledBuyerPrice : {trade.Price}");

                //        });


                //    }
                //    else
                //    {
                //        Task.Run(() =>
                //        {
                //            counter.Start();
                //            SellerMatcher.Add(trade);
                //            TT2.AddOrder(new Order(trade.OrderId, trade.Price, trade.Quantity, OrderDirection.Sell, trade.TradeTime));
                //            var filledSellerQuantity = SellerMatcher.SumF(y => y.Quantity);
                //            counter.Stop();
                //            _logger.LogInformation($"StopWatch Seller Trade : {counter.Elapsed}");

                //            //_logger.LogInformation($"FilledSellerQuantity : {filledSellerQuantity}");
                //            //_logger.LogInformation($"FilledSellerPrice : {trade.Price}");


                //        });


                //    }

                //});
                //ComputeThread.ApartmentState = ApartmentState.MTA;
                //ComputeThread.Start();
            }
            catch (Exception ex)
            {
                MamaBot.GlobalShared.Vars.Logger.LogError("Exception occured on the OrderSocketHandler : " + ex.Message);
            }
        }