Example #1
0
 private void OnAccountUpdate(BinanceStreamAccountInfo data)
 {
     Assets = new ObservableCollection <AssetViewModel>(data.Balances.Where(b => b.Free != 0 || b.Locked != 0).Select(b => new AssetViewModel()
     {
         Asset = b.Asset, Free = b.Free, Locked = b.Locked
     }).ToList());
 }
Example #2
0
        private void OnAccountUpdate(BinanceStreamAccountInfo data)
        {
            Assets = new ObservableCollection <AssetViewModel>(data.Balances.Where(b => b.Free != 0 || b.Locked != 0).Select(b => new AssetViewModel()
            {
                Asset = b.Asset, Free = b.Free, Locked = b.Locked
            }).ToList());

            // Update Ledger
            foreach (var balance in data.Balances)
            {
                var ledge = Ledger.Where(l => balance.Asset == l.Asset).FirstOrDefault();

                // Only worth tracking if we have a balance to monitor
                if (balance.Free != 0 || balance.Locked != 0)
                {
                    if (ledge == null)
                    {
                        Ledger.Add(new LedgerAssetViewModel()
                        {
                            Asset = balance.Asset, Amount = balance.Total
                        });
                    }
                    else
                    {
                        ledge.Amount = balance.Total;
                    }
                }
                else if (ledge != null)
                {
                    Ledger.Remove(ledge); // needs to be dispatched
                }
            }
            //GetLedgerTrades();
        }
        private void InitializeBinanceAccountInfo()
        {
            var res = m_client.General.GetAccountInfo();

            Console.Write("--- Initializing BINANCE AccountInfo ");
            int count = 0;

            if (res.Success)
            {
                m_account = Convert(res.Data);

                /*foreach (var b in res.Data.Balances)
                 * {
                 *  //Console.WriteLine("BINANCE AccountInfo {0} free:{1} lock:{2} total:{3}", b.Asset, b.Free, b.Locked, b.Total);
                 *  if (count++ % 10 == 0) Console.Write(".");
                 *  // Put Balance data into m_balances
                 *  //var xbal = new XBalance(b.Asset, b.Free, b.Locked, b.Total);
                 *  m_balance[b.Asset] = b;
                 * }
                 * Console.WriteLine(" ({0})", res.Data.Balances.Count);*/
            }
            else
            {
                Console.WriteLine("ERROR {0}: {1}", res.Error.Code, res.Error.Message);
            }
        }
Example #4
0
        public void SubscribingToAccountUpdateStream_Should_TriggerWhenAccountUpdateStreamMessageIsReceived()
        {
            // 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);

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

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

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

            // 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, "Balances"));
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Balances[0], result.Balances[0]));
            Assert.IsTrue(Compare.PublicInstancePropertiesEqual(data.Balances[1], result.Balances[1]));
        }
Example #5
0
        private void OnAccountUpdate(BinanceStreamAccountInfo data)
        {
            _logger.LogInfoMessage("OnAccountUpdate: Trying to process buy/sell new opportunities..");
            //_logger.LogInfoMessage(JsonConvert.SerializeObject(data));

            //process buy as soon as you know any account updates..
            if (data != null && data.Balances.Count > 0)
            {
                var baseAsset   = binanceHelper.GetBaseCurrencySymbol();
                var baseBalance = data.Balances.Where(b => b.Asset == baseAsset).FirstOrDefault()?.Free ?? 0;
                if (binanceHelper.CanUserBuy(baseBalance))
                {
                    //ProcessBuy(client, socketClient, tokenSource.Token);
                }
            }
        }
        private BinanceStreamAccountInfo Convert(BinanceAccountInfo ai)
        {
            var bai = new BinanceStreamAccountInfo();

            bai.Balances         = Convert(ai.Balances);
            bai.BuyerCommission  = ai.BuyerCommission;
            bai.CanDeposit       = ai.CanDeposit;
            bai.CanTrade         = ai.CanTrade;
            bai.CanWithdraw      = ai.CanWithdraw;
            bai.MakerCommission  = ai.MakerCommission;
            bai.SellerCommission = ai.SellerCommission;
            bai.TakerCommission  = ai.TakerCommission;
            bai.EventTime        = ai.UpdateTime;
            //bai.Event =
            return(bai);
        }
        public void SubscribingToUserStream_Should_TriggerWhenAccountUpdateStreamMessageIsReceived()
        {
            // arrange
            var socket = new TestSocket();
            var client = TestHelpers.CreateSocketClient(socket);

            BinanceStreamAccountInfo result = null;

            client.Spot.SubscribeToUserDataUpdates("test", (test) => result = test, null, null, null, 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.InvokeMessage(data);

            // assert
            Assert.IsNotNull(result);
            var expectedBalances = data.Balances.ToList();
            var balances         = result.Balances.ToList();

            Assert.IsTrue(TestHelpers.AreEqual(data, result, "Balances", "Permissions"));
            Assert.IsTrue(TestHelpers.AreEqual(expectedBalances[0], balances[0]));
            Assert.IsTrue(TestHelpers.AreEqual(expectedBalances[1], balances[1]));
        }
        private void UpdateAccount(BinanceStreamAccountInfo accountInfo)
        {
            foreach (var b in accountInfo.Balances)
            {
                var xbal = new XBalance(b.Asset, b.Free, b.Locked, b.Total);

                if (m_balance.ContainsKey(b.Asset))
                {
                    if (IsUpdated(b))
                    {
                        m_balance[b.Asset] = xbal;  // balance is updated
                    }
                }
                else
                {
                    m_balance[b.Asset] = xbal;         // balance is added
                }
            }
            m_account = accountInfo;
        }