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