// 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);
            }
        }
示例#2
0
 // 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);
 }
示例#3
0
        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
            }
        }