示例#1
0
        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);
        }