Exemplo n.º 1
0
        public void UnsubscribingStream_Should_CloseTheSocket()
        {
            // arrange
            bool closed = false;
            var  socket = new Mock <IWebsocket>();

            socket.Setup(s => s.Close()).Raises(s => s.OnClose += null, new ClosedEventArgs(0, "", true));
            socket.Setup(s => s.Connect());
            socket.Setup(s => s.Url).Returns("test");
            socket.Setup(s => s.SetEnabledSslProtocols(It.IsAny <System.Security.Authentication.SslProtocols>()));
            socket.Object.OnClose += (sender, args) =>
            {
                closed = true;
            };

            var factory = new Mock <IWebsocketFactory>();

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

            var client = new BinanceSocketClient {
                SocketFactory = factory.Object
            };
            var subscription = client.SubscribeToTradesStream("test", (data) => { });

            // act
            client.UnsubscribeFromStream(subscription.Data);

            // assert
            Assert.IsTrue(closed);
        }
        private void BinanceWebsocketHandleEvents()
        {
            // SUBSCRIBE
            var sub = m_socketClient.SubscribeToAllSymbolTicker(data =>
            {
                Console.WriteLine("Reveived list update");
            });

            // HANDLE EVENTS
            sub.Data.Closed += () =>
            {
                Console.WriteLine("Socket closed");
            };

            sub.Data.Error += (e) =>
            {
                Console.WriteLine("Socket error " + e.Message);
            };

            Thread.Sleep(15000);

            // UNSUBSCRIBE
            m_socketClient.UnsubscribeFromStream(sub.Data);

            // Additionaly, all sockets can be closed with the UnsubscribeAllStreams method.
            m_socketClient.UnsubscribeAllStreams();
        }
Exemplo n.º 3
0
 public void UnsubscribeFromStream(string key, BinanceSocketClient socketClient)
 {
     try {
         BinanceStreamSubscription streamSubscription = GetSubscriptionByKey(key);
         if (streamSubscription != null)
         {
             socketClient.UnsubscribeFromStream(streamSubscription);
             subscriptionList.Remove(key);
         }
     } catch (Exception ex) {
         _logger.LogException(ex);
     }
 }
Exemplo n.º 4
0
 public void UnsubscribeFromAllStreams(BinanceSocketClient socketClient)
 {
     try {
         var streamsList = subscriptionList.Keys.ToList();
         foreach (var streamKey in streamsList)
         {
             BinanceStreamSubscription streamSubscription = GetSubscriptionByKey(streamKey);
             if (streamSubscription != null)
             {
                 socketClient.UnsubscribeFromStream(streamSubscription);
                 subscriptionList.Remove(streamKey);
             }
         }
     } catch (Exception ex) {
         _logger.LogException(ex);
     }
 }
Exemplo n.º 5
0
        public void TickerThread(ExchangeData Data)
        {
            InProgress = true;

            using (ApiSocketClient = new BinanceSocketClient())
            {
                //ApiSocketClient.SubscribeToAccountUpdateStream("ikKz2GYMzCSNFjPzPeJHGYQI6sXwVNIzX7KNg31FDZkRE9OVrOE3al8PQwS8", (data) =>
                //{
                //    var d = data;

                //});
                //ETHBTC
                //BTCUSDT
                //QTUMBTC

                var successDepth = ApiSocketClient.SubscribeToDepthStream(Data.ExchangeType, (data) =>
                {
                    if (data.Asks.Any())
                    {
                        Data.Ask = (decimal)data.Asks.OrderBy(x => x.Price).First().Price;
                    }
                    if (data.Bids.Any())
                    {
                        Data.Bid = (decimal)data.Bids.OrderByDescending(x => x.Price).First().Price;
                    }
                    Data.UpdateTime = DateTime.UtcNow;
                });

                if (!successDepth.Success)
                {
                    throw new Exception(successDepth.Error.Message);
                }

                while (InProgress)
                {
                    Thread.Sleep(500);
                }

                ApiSocketClient.UnsubscribeFromStream(successDepth.Data);
                Data.Status = EnumData.ExchangeStatus.停止;
            }
        }
Exemplo n.º 6
0
        static void Main(string[] args)
        {
            BinanceDefaults.SetDefaultApiCredentials("APIKEY", "APISECRET");
            BinanceDefaults.SetDefaultLogVerbosity(LogVerbosity.Debug);
            BinanceDefaults.SetDefaultLogOutput(Console.Out);

            using (var client = new BinanceClient())
                using (var socketClient = new BinanceSocketClient())
                {
                    // Public
                    var ping          = client.Ping();
                    var serverTime    = client.GetServerTime();
                    var orderBook     = client.GetOrderBook("BNBBTC", 10);
                    var aggTrades     = client.GetAggregatedTrades("BNBBTC", startTime: DateTime.UtcNow.AddMinutes(-2), endTime: DateTime.UtcNow, limit: 10);
                    var klines        = client.GetKlines("BNBBTC", KlineInterval.OneHour, startTime: DateTime.UtcNow.AddHours(-10), endTime: DateTime.UtcNow, limit: 10);
                    var prices24h     = client.Get24HPrices("BNBBTC");
                    var allPrices     = client.GetAllPrices();
                    var allBookPrices = client.GetAllBookPrices();

                    // Private
                    var openOrders      = client.GetOpenOrders("BNBBTC");
                    var allOrders       = client.GetAllOrders("BNBBTC");
                    var testOrderResult = client.PlaceTestOrder("BNBBTC", OrderSide.Buy, OrderType.Limit, TimeInForce.GoodTillCancel, 1, 1);
                    var queryOrder      = client.QueryOrder("BNBBTC", allOrders.Data[0].OrderId);
                    var orderResult     = client.PlaceOrder("BNBBTC", OrderSide.Sell, OrderType.Limit, TimeInForce.GoodTillCancel, 10, 0.0002);
                    var cancelResult    = client.CancelOrder("BNBBTC", orderResult.Data.OrderId);
                    var accountInfo     = client.GetAccountInfo();
                    var myTrades        = client.GetMyTrades("BNBBTC");


                    // Withdrawal/deposit
                    var withdrawalHistory = client.GetWithdrawHistory();
                    var depositHistory    = client.GetDepositHistory();
                    var withdraw          = client.Withdraw("ASSET", "ADDRESS", 0);


                    // Streams
                    var successDepth = socketClient.SubscribeToDepthStream("bnbbtc", (data) =>
                    {
                        // handle data
                    });
                    var successTrades = socketClient.SubscribeToTradesStream("bnbbtc", (data) =>
                    {
                        // handle data
                    });
                    var successKline = socketClient.SubscribeToKlineStream("bnbbtc", KlineInterval.OneMinute, (data) =>
                    {
                        // handle data
                    });

                    var successStart   = client.StartUserStream();
                    var successAccount = socketClient.SubscribeToAccountUpdateStream(successStart.Data.ListenKey, (data) =>
                    {
                        // handle data
                    });
                    var successOrder = socketClient.SubscribeToOrderUpdateStream(successStart.Data.ListenKey, (data) =>
                    {
                        // handle data
                    });

                    socketClient.UnsubscribeFromStream(successDepth.Data);
                    socketClient.UnsubscribeFromAccountUpdateStream();
                    socketClient.UnsubscribeAllStreams();
                }

            Console.ReadLine();
        }