public override async Task <CommandResult> Execute() { var products = new[] { "btc", "eth", "ltc" }; foreach (var product in products) { var price = await gdaxClient.GetProductTicker($"{product}-usd"); await dataService.RecordPrice(product, decimal.Parse(price.Price), "gdax", DateTimeOffset.UtcNow); } return(CommandResult.SuccessfulResult); }
public async Task ShowBalance() { var balanceList = new Dictionary <Currency, Balance>(); foreach (var account in await _gdaxClient.GetCoinbaseAccount()) { if (!balanceList.ContainsKey(account.Currency)) { balanceList.Add(account.Currency, new Balance { Currency = account.Currency }); } balanceList[account.Currency].Amount += account.Balance; } foreach (var account in await _gdaxClient.GetAccounts()) { if (!balanceList.ContainsKey(account.Currency)) { balanceList.Add(account.Currency, new Balance { Currency = account.Currency }); } balanceList[account.Currency].Amount += account.Balance; } var total = 0m; foreach (var balance in balanceList) { switch (balance.Value.Currency) { case Currency.BTC: if (balance.Value.Amount > 0) { var btcTicker = await _gdaxClient.GetProductTicker(ProductType.BTC_EUR); total += balance.Value.Amount * btcTicker.Price; Console.WriteLine($" - {btcTicker.Price:F2} BTC"); } break; case Currency.ETH: if (balance.Value.Amount > 0) { var ethTicker = await _gdaxClient.GetProductTicker(ProductType.ETH_EUR); total += balance.Value.Amount * ethTicker.Price; Console.WriteLine($" - {ethTicker.Price:F2} ETH"); } break; case Currency.EUR: total += balance.Value.Amount; Console.WriteLine($" - {balance.Value.Amount:F2} EUR"); break; case Currency.LTC: break; default: throw new ArgumentOutOfRangeException(); } } Console.WriteLine($"Total amount : {total:F2} EUR"); }