// Display realized volatility for top-ranked (by market cap) cryptos from CoinMarketCap private void DisplayRealizedVolatility(int limit = 50) { int numberOfBars = 12; var top = m_cmc.GetRankings(limit); foreach (var t in top) { var exchange = "BINANCE"; string symbol; string[] mainSymbols = { "ADA", "BCC", "BNB", "BTC", "EOS", "ETH", "IOTA", "LTC", "NEO", "QTUM", "TUSD", "XLM", "XRP" }; if (mainSymbols.Contains(t.symbol)) { symbol = t.symbol + "USDT"; } else { symbol = t.symbol + "BTC"; } var xs = new XSymbol(exchange, symbol); var candles = m_maker.GetCandles(xs, 1440, 1); if (candles.Count < numberOfBars) { continue; } var rvol = new RealizedVolatility(candles, numberOfBars); //var mr = CoinMarketCapApi.GetMarkets(t.name); //var marketExchanges = mr.Select(m => m.exchange).Distinct(); Console.WriteLine("{0,4} {1,-7} {2,6:0.00}", t.rank, t.symbol, rvol.Value); } }
// Sort the CoinMarketCap coins by their % change (1h, 24h, 7d) static void CoinMarketCapGainersLosers() { var cmcap = new CoinMarketCapApi(); var rank = cmcap.GetRankings(); var gainers1h = rank.OrderByDescending(t => t.percent_change_1h); var gainers24h = rank.OrderByDescending(t => t.percent_change_24h); var gainers7d = rank.OrderByDescending(t => t.percent_change_7d); var losers1h = rank.OrderBy(t => t.percent_change_1h); var losers24h = rank.OrderBy(t => t.percent_change_24h); var losers7d = rank.OrderBy(t => t.percent_change_7d); }
static Dictionary <string, List <CoinMarketCapTicker> > m_cmcTickers; // CoinMarketCap tickers static void ThreadUpdateCoinMarketCapRankings() { var cmcapi = new CoinMarketCapApi(); // create CoinMarketCap API object var g1 = cmcapi.GetGlobalData(); Console.WriteLine(g1); while (true) { var rank = cmcapi.GetRankings(); //var gainers1h = rank.OrderByDescending(t => t.percent_change_1h); if (m_cmcTickers == null) // first time through, create the dictionary to store CoinMarketCap data { m_cmcTickers = new Dictionary <string, List <CoinMarketCapTicker> >(); foreach (var t in rank) { m_cmcTickers[t.id] = new List <CoinMarketCapTicker>(); m_cmcTickers[t.id].Add(t); } } else { Console.WriteLine(new string('=', 180)); foreach (var t in rank) { if (!m_cmcTickers.ContainsKey(t.id)) // if we have not yet stored this symbol... { m_cmcTickers[t.id] = new List <CoinMarketCapTicker>(); // create a new list for this symbol's tickers m_cmcTickers[t.id].Add(t); } else { var last = m_cmcTickers[t.id].Last(); // check the last ticker we added to the list for this symbol if (last.last_updated != t.last_updated) // only add to our stored tickers if the "last_updated" field has changed { m_cmcTickers[t.id].Add(t); Console.WriteLine("{0} {1} {2}", last.last_updated, t.last_updated, t); } } } } Thread.Sleep(20000); // sleep for 20 seconds } }