async Task DumpAllCoinsAndStats() { List <Coin> allCoinList = exchangeMonitor.allCoins.ToList(); List <string[]> results = new List <string[]>(); AboutCoin headers = new AboutCoin(); headers.PopulateWithColumnNames(); results.Add(headers.ToArray()); for (int i = 0; i < allCoinList.Count; i++) { Coin coin = allCoinList[i]; if (coin.coinMarketCapData == null || coin.coinMarketCapData.marketCapUsd == null || coin.coinMarketCapData.marketCapUsd.Value < minCap) { continue; } AboutCoin about = DescribeCoin(coin.fullName); if (about != null) { results.Add(about.ToArray()); } } for (int i = 0; i < 100; i++) { // Clear some old coins results.Add(new AboutCoin().ToArray()); } await sheet.Write(dataDumpTab, "A1", results); }
AboutCoin DescribeCoin( object coinName) { AboutCoin about = new AboutCoin(); Coin coin = Coin.FromName((string)coinName); if (coin == null) { return(about); } if (coin.hasValidTradingPairs == false) //&& coin.coinMarketCapData == null) { return(null); } about.columns[(int)Column.CoinName] = coin.fullName; TradingPair bestBtcBid = coin.FindBestOffer(Coin.bitcoin, OrderType.Sell); if (bestBtcBid != null) { about.columns[(int)Column.BestBidBTC] = bestBtcBid.bidPriceOrOfferYouCanSell.ToString(); about.columns[(int)Column.BestBidBTCExchange] = bestBtcBid.exchange.exchangeName.ToString(); } TradingPair bestBtcAsk = coin.FindBestOffer(Coin.bitcoin, OrderType.Buy); if (bestBtcAsk != null) { about.columns[(int)Column.BestAskBTC] = bestBtcAsk.askPriceOrOfferYouCanBuy.ToString(); about.columns[(int)Column.BestAskBTCExchange] = bestBtcAsk.exchange.exchangeName.ToString(); } if (coin.coinMarketCapData != null) { about.columns[(int)Column.MarketCapUSD] = coin.coinMarketCapData.marketCapUsd?.ToString() ?? "?"; } return(about); }