Esempio n. 1
0
        public async Task GetMultipleBalancesUDTValue_BTC_BNB()
        {
            // Arrange
            var exchangeApi     = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.Standard);
            var exchangeService = new WpfExchangeService(exchangeApi);
            var symbolsCache    = SymbolsCacheHelper.GetSymbolsCache(exchangeService);
            var symbols         = await symbolsCache.GetSymbols(new[] { "BNBBTC" });

            var balances = new List <Interface.Model.AccountBalance>();

            balances.Add(new Interface.Model.AccountBalance {
                Asset = "BTC", Free = 0.00396715m
            });
            balances.Add(new Interface.Model.AccountBalance {
                Asset = "BNB", Free = 0.94444141m
            });

            var accountInfo = new Interface.Model.AccountInfo
            {
                Balances = balances
            };

            var account = new Account(accountInfo);

            // Act
            symbolsCache.ValueAccount(account);

            // Assert
            Assert.AreEqual(account.USDTValue, 50.51m);
            Assert.AreEqual(account.BTCValue, 0.00534226m);
        }
Esempio n. 2
0
        public async Task GetSingleBalanceUDTValue_BNB()
        {
            // Arrange
            var exchangeApi     = ExchangeServiceHelper.GetExchangeService(ExchangeServiceType.Standard);
            var exchangeService = new WpfExchangeService(exchangeApi);
            var symbolsCache    = SymbolsCacheHelper.GetSymbolsCache(exchangeService);
            var symbols         = await symbolsCache.GetSymbols(new[] { "BNBBTC" });

            var balances = new List <Interface.Model.AccountBalance>();

            balances.Add(new Interface.Model.AccountBalance {
                Asset = "BNB", Free = 1.88373641m
            });

            var accountInfo = new Interface.Model.AccountInfo
            {
                Balances = balances
            };

            var account = new Account(accountInfo);

            // Act
            symbolsCache.ValueAccount(account);

            // Assert
            Assert.AreEqual(account.USDTValue, 25.93m);
            Assert.AreEqual(account.BTCValue, 0.00274272m);
        }
Esempio n. 3
0
        private Interface.Model.AccountInfo GetAccountInfo(AccountInfo a)
        {
            var accountInfo = new Interface.Model.AccountInfo
            {
                Commissions = new Interface.Model.AccountCommissions {
                    Buyer = a.Commissions.Buyer, Maker = a.Commissions.Maker, Seller = a.Commissions.Seller, Taker = a.Commissions.Taker
                },
                Status = new Interface.Model.AccountStatus {
                    CanDeposit = a.Status.CanDeposit, CanTrade = a.Status.CanTrade, CanWithdraw = a.Status.CanWithdraw
                },
                Time     = a.Time,
                Balances = new List <Interface.Model.AccountBalance>()
            };

            var balances = a.Balances.Where(b => b.Free > 0 || b.Locked > 0);

            foreach (var balance in balances)
            {
                accountInfo.Balances.Add(new Interface.Model.AccountBalance {
                    Asset = balance.Asset, Free = balance.Free, Locked = balance.Locked
                });
            }

            return(accountInfo);
        }
Esempio n. 4
0
        private void AccountInfoUpdate(Interface.Model.AccountInfo e)
        {
            Action <Interface.Model.AccountInfo> action = aie =>
            {
                lock (balancesLock)
                {
                    if (aie.Balances == null ||
                        !aie.Balances.Any())
                    {
                        Account.Balances.Clear();
                        return;
                    }

                    Func <AccountBalance, Interface.Model.AccountBalance, AccountBalance> f = ((ab, nb) =>
                    {
                        ab.Free = nb.Free;
                        ab.Locked = nb.Locked;
                        return(ab);
                    });

                    var balances = (from ab in Account.Balances
                                    join nb in aie.Balances on ab.Asset equals nb.Asset
                                    select f(ab, nb)).ToList();

                    var remove = Account.Balances.Where(ab => !aie.Balances.Any(nb => nb.Asset.Equals(ab.Asset))).ToList();
                    foreach (var ob in remove)
                    {
                        Account.Balances.Remove(ob);
                    }

                    var add = aie.Balances.Where(nb => !Account.Balances.Any(ab => ab.Asset.Equals(nb.Asset))).ToList();
                    foreach (var nb in add)
                    {
                        Account.Balances.Add(new AccountBalance {
                            Asset = nb.Asset, Free = nb.Free, Locked = nb.Locked
                        });
                    }
                }
            };

            if (Dispatcher == null)
            {
                action(e);
            }
            else
            {
                Dispatcher.Invoke(action, e);
            }

            AccountNotification(new AccountEventArgs {
                Value = Account, AccountEventType = AccountEventType.UpdateOrders
            });
        }
Esempio n. 5
0
        public Account(Interface.Model.AccountInfo accountInfo)
        {
            AccountInfo = accountInfo;

            if (!string.IsNullOrWhiteSpace(AccountInfo?.User?.ApiSecret))
            {
                apiSecret = secretText;
            }

            Balances = new ObservableCollection <AccountBalance>();

            if (accountInfo.Balances != null)
            {
                foreach (var balance in AccountInfo.Balances)
                {
                    Balances.Add(new AccountBalance {
                        Asset = balance.Asset, Free = balance.Free, Locked = balance.Locked
                    });
                }
            }

            OnPropertyChanged("ApiKey");
            OnPropertyChanged("Balances");
        }