/// <summary> /// Loads the specified financial data. /// </summary> /// <param name="ticker">The currency pair to load.</param> /// <param name="dataNeeded">The financial data needed.</param> /// <param name="from">The beginning date to load data from.</param> /// <param name="to">The ending date to load data to.</param> /// <returns>A collection of LoadedMarketData objects that represent /// the data loaded.</returns> public ICollection <LoadedMarketData> Load( TickerSymbol ticker, IList <MarketDataType> dataNeeded, DateTime from, DateTime to ) { ICollection <LoadedMarketData> result = new List <LoadedMarketData>(); Uri url = buildURL(ticker, from, to); WebRequest http = HttpWebRequest.Create(url); HttpWebResponse response = http.GetResponse() as HttpWebResponse; using (Stream istream = response.GetResponseStream()) { ReadCSV csv = new ReadCSV(istream, true, CSVFormat.DECIMAL_POINT); while (csv.Next()) { // TODO: check these values if possible DateTime date = csv.GetDate("date"); double adjClose = csv.GetDouble("adj close"); // TODO: deprecate? double open = csv.GetDouble("open"); double close = csv.GetDouble("close"); double high = csv.GetDouble("high"); double low = csv.GetDouble("low"); double volume = csv.GetDouble("volume"); // TODO: deprecate? LoadedMarketData data = new LoadedMarketData(date, ticker); data.SetData(MarketDataType.ADJUSTED_CLOSE, adjClose); data.SetData(MarketDataType.OPEN, open); data.SetData(MarketDataType.CLOSE, close); data.SetData(MarketDataType.HIGH, high); data.SetData(MarketDataType.LOW, low); data.SetData(MarketDataType.OPEN, open); data.SetData(MarketDataType.VOLUME, volume); result.Add(data); } csv.Close(); istream.Close(); } return(result); }