Exemplo n.º 1
0
        public async Task <List <Withdrawal> > GetNewWithdrawals()
        {
            var checkedBefore = _databaseService.GetSetting("Poloniex.WithdrawalCheck");
            var list          = await GetDepositsAndWithdrawals(checkedBefore);

            var poloWithdrawals = list.Withdrawals;

            var withdrawals = PoloniexConvertor.PoloniexToWithdrawals(poloWithdrawals);

            var newWithdrawals = await _databaseService.AddWithdrawals(withdrawals, Constants.Poloniex);

            await _databaseService.AddLastChecked("Poloniex.WithdrawalCheck", DateTime.Now);

            return(newWithdrawals);
        }
Exemplo n.º 2
0
        public async Task <List <Deposit> > GetNewDeposits()
        {
            var checkedBefore = _databaseService.GetSetting("Poloniex.DepositCheck");
            var list          = await GetDepositsAndWithdrawals(checkedBefore);

            var poloDeposits = list.Deposits;

            var localDesposits = PoloniexConvertor.PoloniexToDeposits(poloDeposits);

            var newDeposits = await _databaseService.AddDeposits(localDesposits, Constants.Poloniex);

            await _databaseService.AddLastChecked("Poloniex.DepositCheck", DateTime.Now);

            return(newDeposits);
        }
Exemplo n.º 3
0
        public async Task <List <Trade> > GetOrderHistory(DateTime lastChecked)
        {
            try
            {
                using (var poloClient = _poloniexClientFactory.CreateClient(_poloniexConfig.Key, _poloniexConfig.Secret))
                {
                    var tradesAsync = await poloClient.Trading.GetTradesAsync(CurrencyPair.All, lastChecked, DateTime.Now);

                    var poloniexToTrades = PoloniexConvertor.PoloniexToTrades(tradesAsync);
                    return(poloniexToTrades);
                }
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from poloniex: " + e.Message);
                throw;
            }
        }
Exemplo n.º 4
0
        public async Task <List <OpenOrder> > GetNewOpenOrders(DateTime lastChecked)
        {
            Dictionary <string, List <Order> > poloOrders;

            try
            {
                using (var poloClient = _poloniexClientFactory.CreateClient(_poloniexConfig.Key, _poloniexConfig.Secret))
                {
                    poloOrders = await poloClient.Trading.GetOpenOrdersAsync();
                }
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting balances from poloniex: " + e.Message);
                throw;
            }

            var orders = PoloniexConvertor.PoloniexToOpenOrders(poloOrders);

            var newOrders = await _databaseService.AddOpenOrders(orders);

            return(newOrders);
        }
Exemplo n.º 5
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));
        }