Beispiel #1
0
        public async Task <BalanceInformation> GetAccountBalance(int accountId)
        {
            var accounts = await _coinigyApiService.GetAccounts();

            var selectedAccount = accounts[accountId];

            var hour24Balance = await _databaseService.GetBalance24HoursAgo(selectedAccount.AuthId);

            var balanceCurrent = await _coinigyApiService.GetBtcBalance(selectedAccount.AuthId);

            var reportingAmount = await _priceService.GetReportingAmount(Constants.BTC, balanceCurrent, _config.ReportingCurrency, Constants.Bittrex);

            // Add to database. Should move these "Add to database" as an event which is called whenever a balance is queried
            var currentBalance = await _databaseService.AddBalance(balanceCurrent, reportingAmount, _config.ReportingCurrency, selectedAccount.AuthId);

            return(new BalanceInformation(currentBalance, hour24Balance, selectedAccount.Name));;
        }
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> poloniexToWalletBalances;

            try
            {
                var balances = await _poloniexClient.Wallet.GetBalancesAsync();

                poloniexToWalletBalances = TradeConverter.PoloniexToWalletBalances(balances);
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from poloniex: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in poloniexToWalletBalances)
            {
                if (balance.BtcAmount == 0)
                {
                    continue;
                }

                var price = await GetPrice("BTC", balance.Currency);

                var boughtPrice = 0m;

                var lastTradeForPair1 = _databaseService.GetLastTradeForPair(balance.Currency, Constants.Poloniex, TradeSide.Buy);
                if (lastTradeForPair1 != null)
                {
                    boughtPrice = lastTradeForPair1.Limit;
                }

                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, boughtPrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.Price   = price;
                totalBtcBalance = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance  = _databaseService.GetBalance24HoursAgo(Constants.Poloniex);
            var dollarAmount = await _priceService.GetDollarAmount(totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Poloniex);

            await _databaseService.AddWalletBalances(poloniexToWalletBalances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Poloniex, poloniexToWalletBalances));
        }
Beispiel #3
0
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> bittrexBalances = new List <WalletBalance>();

            try
            {
                using (var client = new BittrexClient(new BittrexClientOptions()
                {
                    ApiCredentials = new ApiCredentials(_config.Key, _config.Secret)
                }))
                {
                    var response = await client.GetBalancesAsync();

                    if (response.Success)
                    {
                        bittrexBalances = BittrexConvertor.BittrexToWalletBalances(response.Data);
                    }
                    else
                    {
                        _log.LogWarning($"Bittrex returned an error {response.Error.Code} : {response.Error.Message}");
                    }
                }
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from Bittrex: " + e.Message);
            }

            var totalBtcBalance = 0m;

            foreach (var balance in bittrexBalances)
            {
                if (balance.Balance == 0)
                {
                    continue;
                }

                decimal price;
                decimal btcAmount;
                decimal averagePrice = 0m;

                if (balance.Currency == _generalConfig.TradingCurrency)
                {
                    btcAmount = balance.Balance;
                    price     = 0m;
                }
                else if (balance.Currency == "USDT")
                {
                    var marketPrice = await GetPrice("USDT", _generalConfig.TradingCurrency);

                    btcAmount = balance.Balance / marketPrice;
                    price     = 0m;
                }
                else
                {
                    var marketPrice = await GetPrice(_generalConfig.TradingCurrency, balance.Currency);

                    price        = marketPrice;
                    btcAmount    = (price * balance.Balance);
                    averagePrice =
                        await _databaseService.GetBuyAveragePrice(_generalConfig.TradingCurrency, balance.Currency, Constants.Bittrex, balance.Balance);
                }
                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, averagePrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.BtcAmount = btcAmount;
                balance.Price     = price;
                totalBtcBalance   = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance = await _databaseService.GetBalance24HoursAgo(Constants.Bittrex);

            var reportingAmount = await GetReportingAmount(_generalConfig.TradingCurrency, totalBtcBalance, _generalConfig.ReportingCurrency);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, reportingAmount, _generalConfig.ReportingCurrency, Constants.Bittrex);

            await _databaseService.AddWalletBalances(bittrexBalances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Bittrex, bittrexBalances));
        }
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> balances;

            try
            {
                var accountInfo = await _binanceWebsocketService.GetAccountInfoAsync();

                if (accountInfo == null)
                {
                    throw new Exception("Account info not had get from binance");
                }

                balances = BinanceConverter.BinanceToWalletBalances(accountInfo.Balances);
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from binance: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in balances)
            {
                decimal price;
                decimal btcAmount;
                decimal averagePrice = 0m;

                if (balance.Currency == _generalConfig.TradingCurrency)
                {
                    btcAmount = balance.Balance;
                    price     = 0m;
                }
                else if (balance.Currency == "USDT")
                {
                    var marketPrice = await GetPrice("USDT", _generalConfig.TradingCurrency);

                    btcAmount = balance.Balance / marketPrice;
                    price     = 0m;
                }
                else
                {
                    var marketPrice = await GetPrice(_generalConfig.TradingCurrency, balance.Currency);

                    price        = marketPrice;
                    btcAmount    = (price * balance.Balance);
                    averagePrice =
                        await _databaseService.GetBuyAveragePrice(_generalConfig.TradingCurrency, balance.Currency, Constants.Binance, balance.Balance);
                }

                balance.PercentageChange = ProfitCalculator.PriceDifference(price, averagePrice);
                balance.BtcAmount        = btcAmount;
                balance.Price            = price;
                totalBtcBalance          = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance = await _databaseService.GetBalance24HoursAgo(Constants.Binance);

            var dollarAmount = await GetDollarAmount(_generalConfig.TradingCurrency, totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Binance);

            await _databaseService.AddWalletBalances(balances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Binance, balances));
        }
Beispiel #5
0
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> balances;

            try
            {
                var binanceClient = GetApi();
                using (var user = new BinanceApiUser(_config.Key, _config.Secret))
                {
                    var accountInfo = await binanceClient.GetAccountInfoAsync(user);

                    balances = BinanceConverter.BinanceToWalletBalances(accountInfo.Balances);
                }
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from binance: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in balances)
            {
                decimal price;
                decimal btcAmount;
                decimal averagePrice = 0m;

                if (balance.Currency == _generalConfig.TradingCurrency)
                {
                    btcAmount = balance.Balance;
                    price     = 0m;
                }
                else if (balance.Currency == "USDT")
                {
                    var marketPrice = await GetPrice("USDT", _generalConfig.TradingCurrency);

                    btcAmount = balance.Balance / marketPrice;
                    price     = 0m;
                }
                else
                {
                    var marketPrice = await GetPrice(_generalConfig.TradingCurrency, balance.Currency);

                    price        = marketPrice;
                    btcAmount    = (price * balance.Balance);
                    averagePrice =
                        await _databaseService.GetBuyAveragePrice(_generalConfig.TradingCurrency, balance.Currency, Constants.Binance, balance.Balance);
                }
                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, averagePrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.BtcAmount = btcAmount;
                balance.Price     = price;
                totalBtcBalance   = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance = await _databaseService.GetBalance24HoursAgo(Constants.Binance);

            var dollarAmount = await GetDollarAmount(_generalConfig.TradingCurrency, totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Binance);

            await _databaseService.AddWalletBalances(balances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Binance, balances));
        }
Beispiel #6
0
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> bittrexBalances;

            try
            {
                var response = await _exchange.GetBalances();

                bittrexBalances = TradeConverter.BittrexToWalletBalances(response);
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from bittrex: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in bittrexBalances)
            {
                if (balance.Balance == 0)
                {
                    continue;
                }

                decimal price;
                decimal btcAmount;
                decimal averagePrice = 0m;

                if (balance.Currency == _generalConfig.TradingCurrency)
                {
                    btcAmount = balance.Balance;
                    price     = 0m;
                }
                else if (balance.Currency == "USDT")
                {
                    var marketPrice = await GetPrice("USDT", _generalConfig.TradingCurrency);

                    btcAmount = balance.Balance / marketPrice;
                    price     = 0m;
                }
                else
                {
                    var marketPrice = await GetPrice(_generalConfig.TradingCurrency, balance.Currency);

                    price        = marketPrice;
                    btcAmount    = (price * balance.Balance);
                    averagePrice =
                        await _databaseService.GetBuyAveragePrice(_generalConfig.TradingCurrency, balance.Currency, Constants.Bittrex, balance.Balance);
                }
                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, averagePrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.BtcAmount = btcAmount;
                balance.Price     = price;
                totalBtcBalance   = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance = await _databaseService.GetBalance24HoursAgo(Constants.Bittrex);

            var dollarAmount = await GetDollarAmount(_generalConfig.TradingCurrency, totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Bittrex);

            await _databaseService.AddWalletBalances(bittrexBalances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Bittrex, bittrexBalances));
        }
Beispiel #7
0
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> poloniexToWalletBalances;

            try
            {
                IDictionary <string, Balance> balances = new Dictionary <string, Balance>();
                using (var poloClient = _poloniexClientFactory.CreateClient(_poloniexConfig.Key, _poloniexConfig.Secret))
                {
                    balances = await poloClient.Wallet.GetBalancesAsync();
                }

                poloniexToWalletBalances = PoloniexConvertor.PoloniexToWalletBalances(balances);
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from poloniex: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in poloniexToWalletBalances)
            {
                if (balance.Balance == 0)
                {
                    continue;
                }

                decimal price;
                decimal btcAmount;
                decimal averagePrice = 0m;

                if (balance.Currency == _generalConfig.TradingCurrency)
                {
                    btcAmount = balance.Balance;
                    price     = 0m;
                }
                else if (balance.Currency == "USDT")
                {
                    var marketPrice = await GetPrice("USDT", _generalConfig.TradingCurrency);

                    btcAmount = balance.Balance * marketPrice;
                    price     = 0m;
                }
                else
                {
                    var marketPrice = await GetPrice(_generalConfig.TradingCurrency, balance.Currency);

                    price        = marketPrice;
                    btcAmount    = (price * balance.Balance);
                    averagePrice =
                        await _databaseService.GetBuyAveragePrice(_generalConfig.TradingCurrency, balance.Currency, Constants.Poloniex, balance.Balance);
                }
                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, averagePrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.BtcAmount = btcAmount;
                balance.Price     = price;
                totalBtcBalance   = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance = await _databaseService.GetBalance24HoursAgo(Constants.Poloniex);

            var dollarAmount = await GetDollarAmount(_generalConfig.TradingCurrency, totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Poloniex);

            await _databaseService.AddWalletBalances(poloniexToWalletBalances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Poloniex, poloniexToWalletBalances));
        }
Beispiel #8
0
        public async Task <BalanceInformation> GetBalance()
        {
            List <WalletBalance> bittrexBalances;

            try
            {
                var response = await _exchange.GetBalances();

                bittrexBalances = TradeConverter.BittrexToWalletBalances(response);
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from bittrex: " + e.Message);
                throw;
            }

            var totalBtcBalance = 0m;

            foreach (var balance in bittrexBalances)
            {
                if (balance.Balance == 0)
                {
                    continue;
                }

                var marketPrice = await GetPrice("BTC", balance.Currency);

                decimal price;
                decimal btcAmount;
                decimal boughtPrice = 0m;

                switch (balance.Currency)
                {
                case "BTC":
                    btcAmount   = balance.Balance;
                    price       = 1;
                    boughtPrice = 1;
                    break;

                case "USDT":
                    price     = marketPrice;
                    btcAmount = (balance.Balance / price);
                    var lastTradeForPair =
                        _databaseService.GetLastTradeForPair(balance.Currency, Constants.Bittrex, TradeSide.Buy);
                    if (lastTradeForPair != null)
                    {
                        boughtPrice = lastTradeForPair.Limit;
                    }
                    break;

                default:
                    price     = marketPrice;
                    btcAmount = (price * balance.Balance);
                    var lastTradeForPair1 =
                        _databaseService.GetLastTradeForPair(balance.Currency, Constants.Bittrex, TradeSide.Buy);
                    if (lastTradeForPair1 != null)
                    {
                        boughtPrice = lastTradeForPair1.Limit;
                    }
                    break;
                }
                try
                {
                    balance.PercentageChange = ProfitCalculator.PriceDifference(price, boughtPrice);
                }
                catch
                {
                    // There maybe a divide by 0 issue if we couldn't find the last trade. Its fine. Just print zero
                    balance.PercentageChange = 0;
                }
                balance.BtcAmount = btcAmount;
                balance.Price     = price;
                totalBtcBalance   = totalBtcBalance + balance.BtcAmount;
            }

            var lastBalance  = _databaseService.GetBalance24HoursAgo(Constants.Bittrex);
            var dollarAmount = await _priceService.GetDollarAmount(totalBtcBalance);

            var currentBalance = await _databaseService.AddBalance(totalBtcBalance, dollarAmount, Constants.Bittrex);

            await _databaseService.AddWalletBalances(bittrexBalances);

            return(new BalanceInformation(currentBalance, lastBalance, Constants.Bittrex, bittrexBalances));
        }