private void StartWebsockets()
        {
            var successSymbols = m_socketClient.SubscribeToAllSymbolTicker((data) =>
            {
                //Console.WriteLine(">>>>> {0} BINANCE tickers", data.Length);
                for (int i = 0; i < data.Length; ++i)
                {
                    m_tick[data[i].Symbol] = data[i];
                }
            });

            var lk = m_client.StartUserStream();

            if (lk.Success)
            {
                m_listenKey = lk.Data.ListenKey;
                var successsUser = m_socketClient.SubscribeToUserStream(m_listenKey,
                                                                        UpdateAccount,
                                                                        UpdateOrder
                                                                        );
            }
            else
            {
                Console.WriteLine("Error {0} getting BINANCE ListenKey from StartUserStream(): {1}", lk.Error.Code, lk.Error.Message);
            }
        }
        private void SubscribeUserStream()
        {
            if (ApiKey == null || ApiSecret == null)
            {
                return;
            }

            Task.Run(() =>
            {
                using (var client = new BinanceClient())
                {
                    var startOkay = client.StartUserStream();
                    if (!startOkay.Success)
                    {
                        messageBoxService.ShowMessage($"Error requesting data: {startOkay.Error.Message}", "error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }

                    socketClient.SubscribeToUserStream(startOkay.Data.ListenKey, OnAccountUpdate, OnOrderUpdate);

                    var accountResult = client.GetAccountInfo();
                    if (accountResult.Success)
                    {
                        Assets = new ObservableCollection <AssetViewModel>(accountResult.Data.Balances.Where(b => b.Free != 0 || b.Locked != 0).Select(b => new AssetViewModel()
                        {
                            Asset = b.Asset, Free = b.Free, Locked = b.Locked
                        }).ToList());
                    }
                    else
                    {
                        messageBoxService.ShowMessage($"Error requesting data: {accountResult.Error.Message}", "error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            });
        }
Esempio n. 3
0
        public void SubscribingToUserStream_Should_TriggerWhenOrderUpdateStreamMessageIsReceived()
        {
            // 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);

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

            client.SubscribeToUserStream("test", null, (test) => result = test);

            var data = new BinanceStreamOrderUpdate()
            {
                Event     = "executionReport",
                EventTime = new DateTime(2017, 1, 1),
                AccumulatedQuantityOfFilledTrades = 1.1m,
                BuyerIsMaker    = true,
                Commission      = 2.2m,
                CommissionAsset = "test",
                ExecutionType   = ExecutionType.Trade,
                I       = 100000000000,
                OrderId = 100000000000,
                Price   = 6.6m,
                PriceLastFilledTrade      = 7.7m,
                Quantity                  = 8.8m,
                QuantityOfLastFilledTrade = 9.9m,
                RejectReason              = OrderRejectReason.AccountCannotSettle,
                Side                  = OrderSide.Buy,
                Status                = OrderStatus.Filled,
                Symbol                = "test",
                Time                  = new DateTime(2017, 1, 1),
                TimeInForce           = TimeInForce.GoodTillCancel,
                TradeId               = 10000000000000,
                Type                  = OrderType.Limit,
                ClientOrderId         = "123",
                IcebergQuantity       = 9.9m,
                IsWorking             = true,
                OriginalClientOrderId = "456",
                StopPrice             = 10.10m
            };

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

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data, result, "Balances"));
        }
Esempio n. 4
0
        public void SubscribingToUserStream_Should_TriggerWhenAccountUpdateStreamMessageIsReceived()
        {
            // 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);

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

            client.SubscribeToUserStream("test", (test) => result = test, null);

            var data = new BinanceStreamAccountInfo()
            {
                Event            = "outboundAccountInfo",
                EventTime        = new DateTime(2017, 1, 1),
                BuyerCommission  = 1.1m,
                CanDeposit       = true,
                CanTrade         = true,
                CanWithdraw      = false,
                MakerCommission  = 2.2m,
                SellerCommission = 3.3m,
                TakerCommission  = 4.4m,
                Balances         = new List <BinanceStreamBalance>()
                {
                    new BinanceStreamBalance()
                    {
                        Asset = "test1", Free = 1.1m, Locked = 2.2m
                    },
                    new BinanceStreamBalance()
                    {
                        Asset = "test2", Free = 3.3m, Locked = 4.4m
                    },
                }
            };

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

            // assert
            Assert.IsNotNull(result);
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data, result, "Balances"));
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data.Balances[0], result.Balances[0]));
            Assert.IsTrue(TestHelpers.PublicInstancePropertiesEqual(data.Balances[1], result.Balances[1]));
        }
Esempio n. 5
0
 public void SubscribeToUserStream(BinanceClient client, BinanceSocketClient socketClient)
 {
     try {
         var userStreamKey = client.StartUserStream();
         if (userStreamKey.Error != null)
         {
             _logger.LogError(userStreamKey.Error.Message);
         }
         else
         {
             var userStream = socketClient.SubscribeToUserStream(userStreamKey.Data.ListenKey, OnAccountUpdate, OnOrderUpdate);
             if (userStream.Error != null)
             {
                 _logger.LogError(userStream.Error.Message);
             }
             else
             {
                 binanceHelper.AddToSubscriptionList("UserStream", userStream.Data);
             }
         }
     } catch (Exception ex) {
         _logger.LogException(ex);
     }
 }
Esempio n. 6
0
        static void Main(string[] args)
        {
            BinanceClient.SetDefaultOptions(new BinanceClientOptions()
            {
                ApiCredentials = new ApiCredentials("APIKEY", "APISECRET"),
                LogVerbosity   = LogVerbosity.Debug,
                LogWriters     = new List <TextWriter> {
                    Console.Out
                }
            });
            BinanceSocketClient.SetDefaultOptions(new BinanceSocketClientOptions()
            {
                ApiCredentials = new ApiCredentials("APIKEY", "APISECRET"),
                LogVerbosity   = LogVerbosity.Debug,
                LogWriters     = new List <TextWriter> {
                    Console.Out
                }
            });

            using (var client = new BinanceClient())
            {
                // Public
                var ping             = client.Ping();
                var exchangeInfo     = client.GetExchangeInfo();
                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 price            = client.GetPrice("BNBBTC");
                var prices24h        = client.Get24HPrice("BNBBTC");
                var allPrices        = client.GetAllPrices();
                var allBookPrices    = client.GetAllBookPrices();
                var historicalTrades = client.GetHistoricalTrades("BNBBTC");

                // Private
                var openOrders      = client.GetOpenOrders("BNBBTC");
                var allOrders       = client.GetAllOrders("BNBBTC");
                var testOrderResult = client.PlaceTestOrder("BNBBTC", OrderSide.Buy, OrderType.Limit, 1, price: 1, timeInForce: TimeInForce.GoodTillCancel);
                var queryOrder      = client.QueryOrder("BNBBTC", allOrders.Data[0].OrderId);
                var orderResult     = client.PlaceOrder("BNBBTC", OrderSide.Sell, OrderType.Limit, 10, price: 0.0002m, timeInForce: TimeInForce.GoodTillCancel);
                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);
            }

            var socketClient = new BinanceSocketClient();
            // 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 successTicker = socketClient.SubscribeToAllSymbolTicker((data) =>
            {
                // handle data
            });
            var successSingleTicker = socketClient.SubscribeToSymbolTicker("bnbbtc", (data) =>
            {
                // handle data
            });

            string listenKey;

            using (var client = new BinanceClient())
                listenKey = client.StartUserStream().Data.ListenKey;

            var successAccount = socketClient.SubscribeToUserStream(listenKey, data =>
            {
                // Hanlde account info data
            },
                                                                    data =>
            {
                // Hanlde order update info data
            });

            socketClient.UnsubscribeAllStreams();

            Console.ReadLine();
        }