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);
        }