public static List <StockSummary> GetStocksFromBarchart(string Symbols) { List <StockSummary> lst = new List <StockSummary>(); var fmt = "https://marketdata.websol.barchart.com/getQuote.csv?apikey={0}&symbols={1}&fields={2}&mode=I&jerq=false"; var token = "a12e94cc748160856f9039fcc6f6177b"; var fields = "ask,bid"; // api key 0: the api key from https://www.barchart.com/ondemand // symbols 1:A symbol or code that identifies a financial instrument. Multiple symbols separated by a comma may be used. // fields 2: the fields requested var url = string.Format(fmt, token, Symbols, fields); // get content var sb = new StringBuilder(); var wc = new WebClient(); IWebProxy defaultProxy = WebRequest.DefaultWebProxy; if (defaultProxy != null) { defaultProxy.Credentials = CredentialCache.DefaultCredentials; wc.Proxy = defaultProxy; } using (var sr = new StreamReader(wc.OpenRead(url))) { // skip headers var header = sr.ReadLine(); var headers = new List <string>(header.Split(',')); int i = 0; // read each line for (var line = sr.ReadLine(); line != null; line = sr.ReadLine()) { var items = line.Split(',').Select(item => item.Trim('"')).ToArray(); var stock = new StockSummary(); stock.Symbol = items[headers.IndexOf("symbol")]; stock.Name = items[headers.IndexOf("name")]; stock.Open = ParseFloat(items[headers.IndexOf("open")]); // as requested stock.Close = ParseFloat(items[headers.IndexOf("close")]); // as requested stock.LastSale = ParseFloat(items[headers.IndexOf("lastPrice")]); lst.Add(stock); } } return(lst); }
/// <summary> /// Get stock summary by symbol name. /// </summary> /// <param name="symbol">symbol name</param> /// <returns></returns> public static StockSummary GetStock(string symbol) { StockSummary stock = null; try { stock = GetStockFromBarchart(symbol); } catch { try { CacheData cacheData = new CacheData(); stock = cacheData.GetCachedStock(symbol); } catch { } } return(stock); }