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); }
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); }
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)); } }
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)); }