public override async Task UpdatePrices() { var binancePrices = await _client.GetStringAsync("https://www.binance.com/api/v3/ticker/price"); var ticks = JsonConvert.DeserializeObject <List <BinanceTick> >(binancePrices); var exchangeInfo = _marketDataMemCacheService.GetExchange(_exchangeName); var market = ""; _marketRates = ticks.Where(o => exchangeInfo.TranslateMarket(o.symbol, out market)) .ToDictionary(o => market, o => decimal.Parse(o.price)); }
public IActionResult ExchangeInfo(string exchange) { var exchangeInfo = _marketDataService.GetExchange(exchange); if (exchangeInfo == null) { return(BadRequest("Exchange not found")); } return(Ok(exchangeInfo)); }
public override IEnumerable <object> GetValues() { var exchangeInfo = _marketDataMemCacheService.GetExchange(_exchangeName); var result = exchangeInfo.Currencies .Select(o => { if (o.Id == "BTC") { return(currency: "BTC", (btcValue: 1m, usdValue: _marketRates["USDT_BTC"])); } else if (_marketRates.ContainsKey("BTC_" + o.Id)) //weaker coins { if (_marketRates.ContainsKey("USDT_" + o.Id)) { return(currency: o.Id, ( btcValue: _marketRates["BTC_" + o.Id], usdValue: _marketRates["USDT_" + o.Id] )); } else { return(currency: o.Id, ( btcValue: _marketRates["BTC_" + o.Id], usdValue: _marketRates["USDT_BTC"] * _marketRates["BTC_" + o.Id] )); } } else //stronger coins { var x = _marketRates.ContainsKey(o.Id + "_BTC"); var y = _marketRates.ContainsKey("USDT_" + o.Id); return(currency: o.Id, ( btcValue: 1 / _marketRates[o.Id + "_BTC"], usdValue: o.Id == "USDT" ? 1 : o.Id == "USDC" ? 1 / _marketRates["USDC_USDT"] : _marketRates["USDT_" + o.Id] )); } }).Select(o => new { o.currency, o.Item2.btcValue, o.Item2.usdValue }); return(result); }