public List <MarketHistory> GetMarketHistory(string symbol) { List <MarketHistory> marketHistoryList = new List <MarketHistory>(); SqlCommand cmdSelectAllHistory = new SqlCommand("SELECT * FROM MarketHistory WHERE Symbol = @Symbol ORDER BY Date", conn); cmdSelectAllHistory.Parameters.AddWithValue("Symbol", symbol); using (SqlDataReader reader = cmdSelectAllHistory.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { MarketHistory currentHistory = new MarketHistory(); currentHistory.Id = (int)reader["Id"]; currentHistory.Symbol = (string)reader["Symbol"]; currentHistory.Date = (DateTime)reader["Date"]; currentHistory.Open = double.Parse(reader["OpenPrice"].ToString()); currentHistory.High = double.Parse(reader["HighPrice"].ToString()); currentHistory.Low = double.Parse(reader["LowPrice"].ToString()); currentHistory.Close = double.Parse(reader["ClosePrice"].ToString()); currentHistory.Volume = (int)reader["Volume"]; marketHistoryList.Add(currentHistory); } return(marketHistoryList); } } return(marketHistoryList); }
//for market history public static List <MarketHistory> SaveMarketHistory(string symbol) { const string API_KEY = "7I217NA0556LS5X8"; List <MarketHistory> marketHistory = new List <MarketHistory>(); try { HttpResponse <string> response = Unirest.get(String.Format("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={0}&apikey={1}", symbol, API_KEY)).asJson <string>(); if (response.Code != 200) { return(null); } JObject jMarketHistory = (JObject)JsonConvert.DeserializeObject(response.Body.ToString()); DateTime dailyDate; dailyDate = DateTime.Now; //initialize today's date for (int i = 0; i < jMarketHistory["Time Series (Daily)"].Count();) { //Console.WriteLine(dailyDate.ToString("yyyy-MM-dd")); if (jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")] == null) { dailyDate = dailyDate.AddDays(-1); continue; } MarketHistory dailyData = new MarketHistory(); dailyData.Open = double.Parse(jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")]["1. open"].ToString()); dailyData.High = double.Parse(jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")]["2. high"].ToString()); dailyData.Low = double.Parse(jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")]["3. low"].ToString()); dailyData.Close = double.Parse(jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")]["4. close"].ToString()); dailyData.Volume = int.Parse(jMarketHistory["Time Series (Daily)"][dailyDate.ToString("yyyy-MM-dd")]["5. volume"].ToString()); dailyData.Date = dailyDate; dailyData.Symbol = symbol; marketHistory.Add(dailyData); dailyDate = dailyDate.AddDays(-1); //step back by one day after processing every record i++; } marketHistory = marketHistory.OrderBy(t => t.Date).ToList <MarketHistory>(); Globals.Db.AddToMarketHistory(symbol, marketHistory); } catch (Exception ex) { //MessageBox.Show(ex.Message); } return(marketHistory); }