Exemple #1
0
        public async Task <List <Trade> > GetOrderHistory(DateTime lastChecked)
        {
            var list = new List <Trade>();

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

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

            return(list);
        }
Exemple #2
0
        public async Task <List <Withdrawal> > GetNewWithdrawals()
        {
            var list = new List <Withdrawal>();

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

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

            var newWithdrawals = await _databaseService.AddWithdrawals(list, Constants.Bittrex);

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

            return(newWithdrawals);
        }
Exemple #3
0
        public async Task <List <OpenOrder> > GetNewOpenOrders(DateTime lastChecked)
        {
            var openOrders = new List <OpenOrder>();

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

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

            var newOrders = await _databaseService.AddOpenOrders(openOrders);

            return(newOrders);
        }
        public async Task <List <Deposit> > GetNewDeposits()
        {
            var list = new List <Deposit>();

            try
            {
                using (var client = new BittrexClient(_config.Key, _config.Secret))
                {
                    var response = await client.GetDepositHistoryAsync();

                    if (response.Success)
                    {
                        list = BittrexConvertor.BittrexToDeposits(response.Result);
                    }
                    else
                    {
                        _log.LogWarning($"Bittrex returned an error {response.Error.ErrorCode} : {response.Error.ErrorMessage}");
                    }
                }
            }
            catch (Exception e)
            {
                _log.LogError("Error in getting deposits from Bittrex: " + e.Message);
            }

            var newDeposits = await _databaseService.AddDeposits(list, Constants.Bittrex);

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

            return(newDeposits);
        }
        public async Task Handle(BittrexTradeExportCommand command)
        {
            try
            {
                var file = await _bot.GetFileAsync(command.FileId);

                var trades = BittrexConvertor.BittrexFileToTrades(file.FileStream, _log);
                await _databaseService.DeleteAllTrades(Constants.Bittrex);

                var newTrades = await _databaseService.AddTrades(trades);

                var sb = new StringBuffer();
                sb.Append(string.Format("{0} new Bittrex trades added.", newTrades.Count));

                await _bus.SendAsync(new SendMessageCommand(sb));
            }
            catch (Exception)
            {
                var sb = new StringBuffer();
                sb.Append(StringContants.CouldNotProcessFile);
                await _bus.SendAsync(new SendMessageCommand(sb));
            }
        }
Exemple #6
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));
        }