static void Download_Macro(string URL, Bachlor_EssayEntities db) { string India_GDP = URL; WebClient streamUrl = new WebClient(); streamUrl.BaseAddress = India_GDP; string URI = India_GDP; Stream data = streamUrl.OpenRead(URI); StreamReader reader = new StreamReader(data); while (reader.Peek() > 0) { string s = reader.ReadLine(); string[] data_string = s.Split(','); India_GDP g = new India_GDP(); double c; bool can = double.TryParse(data_string[1], out c); if (!can) { continue; } g.Date_of_GDP = Convert.ToDateTime(data_string[0]); g.GDP = Convert.ToDouble(data_string[1]); db.India_GDP.Add(g); } data.Close(); reader.Close(); db.SaveChanges(); Console.WriteLine("India Yields Done"); }
static void Download_Macro(string URL, Bachlor_EssayEntities db) { string India_GDP = URL; WebClient streamUrl = new WebClient(); streamUrl.BaseAddress = India_GDP; string URI = India_GDP; Stream data = streamUrl.OpenRead(URI); StreamReader reader = new StreamReader(data); while (reader.Peek() > 0) { string s = reader.ReadLine(); string[] data_string = s.Split(','); India_GDP g = new India_GDP(); double c; bool can = double.TryParse(data_string[1], out c); if (!can) { continue; } g.Date_ = data_string[0]; g.GDP = Convert.ToDouble(data_string[1]); db.India_GDP.Add(g); } db.SaveChanges(); data.Close(); reader.Close(); }
static void download_us_bond_yields(string URL, Bachlor_EssayEntities db) { //connect to quandl WebClient streamUrl = new WebClient(); streamUrl.BaseAddress = URL; string URI = URL; Stream d = streamUrl.OpenRead(URI); StreamReader reader = new StreamReader(d); while (reader.Peek() > 0) { //download the split the returned string string s = reader.ReadLine(); string[] data = s.Split(','); US_Yield g = new US_Yield(); double c; //make sure you arent getting headers, if its a number push to database bool can = double.TryParse(data[1], out c); if (!can) { continue; } g.Date_of_Bond = Convert.ToDateTime(data[0]); if (!String.IsNullOrEmpty(data[1])) { g.one_mo = Convert.ToDouble(data[1]); } if (!String.IsNullOrEmpty(data[2])) { g.three_mo = Convert.ToDouble(data[2]); } if (!String.IsNullOrEmpty(data[3])) { g.six_mo = Convert.ToDouble(data[3]); } if (!String.IsNullOrEmpty(data[4])) { g.one_yr = Convert.ToDouble(data[4]); } if (!String.IsNullOrEmpty(data[5])) { g.two_yr = Convert.ToDouble(data[5]); } if (!String.IsNullOrEmpty(data[6])) { g.three_yr = Convert.ToDouble(data[6]); } if (!String.IsNullOrEmpty(data[7])) { g.five_yr = Convert.ToDouble(data[7]); } if (!String.IsNullOrEmpty(data[8])) { g.seven_yr = Convert.ToDouble(data[8]); } if (!String.IsNullOrEmpty(data[9])) { g.ten_yr = Convert.ToDouble(data[9]); } if (!String.IsNullOrEmpty(data[10])) { g.twenty_yr = Convert.ToDouble(data[10]); } if (!String.IsNullOrEmpty(data[11])) { g.thirty_yr = Convert.ToDouble(data[11]); } db.US_Yield.Add(g); } d.Close(); reader.Close(); db.SaveChanges(); Console.WriteLine("Us Bond Yields Done"); }
static void Download_prices(Bachlor_EssayEntities db) { //connect to database DateTime today = DateTime.Today; String error; //file with all the tickers on the NSE, split out each ticker individually string ticker_file = @"C:\Users\Gabe Henderson\Google Drive\Senior Year\Second Semester\Bachlors Essay\Neural\Neural-Networks-and-Emerging-Markets\Tickers.txt"; string text = System.IO.File.ReadAllText(ticker_file); string[] tickers = text.Split(','); foreach (String ticker in tickers) { //build the URL to connect to google and get the data GoogleFinanceDownloader.DownloadURIBuilder a = new GoogleFinanceDownloader.DownloadURIBuilder("NSE", ticker); String URL = a.getGetPricesUrlToDownloadAllData(today); GoogleFinanceDownloader.DataProcessor process = new GoogleFinanceDownloader.DataProcessor(); WebClient streamUrl = new WebClient(); streamUrl.BaseAddress = URL; String data = process.processStreamMadeOfOneDayLinesToExtractHistoricalData(streamUrl.OpenRead(URL), out error); //split out each day String[] b = data.Split('\n'); //used for calculating technicals double previous_price = 1; int j = 1; double Average_up = 0; double Average_down = 0; double SMA = 0; double EMA26 = 0; double EMA12 = 0; double MACD_EMA9 = 0; //formula for multiplier is 2/(timer period+1) double smooth26 = 2.0 / (26 + 1); double smooth12 = 2.0 / (12 + 1); double smooth9 = 2.0 / (9 + 1); double MACD = 0; double Avg_Macd = 0; //for each day, split out the volume for the day, open and close prices, and date, calculate percent change from the day before foreach (String i in b) { MACD m = new MACD(); RSI r = new RSI(); Historic_NSE_Date g = new Historic_NSE_Date(); String[] array = i.Split(','); if (array.Length < 5) { continue; } double c; bool can = double.TryParse(array[1], out c); if (!can) { continue; } g.Date_of_Price = Convert.ToDateTime(array[0]); g.Ticker = ticker; g.Open_Price = Convert.ToDouble(array[1]); double close = Convert.ToDouble(array[4]); g.Close_Price = close; g.Volume = Convert.ToDouble(array[5]); double percent_change = Convert.ToDouble(g.Close_Price) / previous_price - 1; g.percent_change = percent_change; previous_price = Convert.ToDouble(g.Close_Price); // // //calculating rsi. First 14 periods, simply sum the ups and downs seperately if (j < 15) { if (percent_change < 0) { Average_down = (Average_down * (j - 1) + Math.Abs(percent_change)) / j; } else { Average_up = (Average_down * (j - 1) + percent_change) / j; } } //past the first 14 periods else { if (percent_change < 0) { Average_down = (Average_down * 13 + Math.Abs(percent_change)) / 14; } else { Average_up = (Average_up * 13 + percent_change) / 14; } } //calculate RSI double RSI = 100 - (100 / (1 + (Average_up / Average_down))); r.ticker = ticker; r.date_t = Convert.ToDateTime(array[0]); if (!Double.IsNaN(RSI)) { r.RSI1 = RSI / 1; } else { r.RSI1 = null; } /// ///calculating MACD /// //MACD, first part just get SMA off the close price SMA += close; if (j == 12) { EMA12 = SMA / j; } if (j == 26) { EMA26 = SMA / j; } //calculate EMAS to finally calc macd EMA12 = (close - EMA12) * smooth12 + EMA12; EMA26 = (close - EMA26) * smooth26 + EMA26; MACD = EMA12 - EMA26; //calc signal line Avg_Macd = Avg_Macd + MACD; if (j == 9) { MACD_EMA9 = Avg_Macd / j; } if (j > 9) { MACD_EMA9 = (MACD * smooth9) + MACD_EMA9 * (1 - smooth9); } //transfer m.Ticker = ticker; m.Date_of_Price = Convert.ToDateTime(array[0]); m.MACD1 = MACD; m.signal = MACD_EMA9; // // j++; //insert into the database db.Historic_NSE_Date.Add(g); db.RSIs.Add(r); db.MACDs.Add(m); } try { db.SaveChanges(); Console.WriteLine(ticker); } catch (Exception e) { Console.WriteLine("{0} Exception caught.", e); } } Console.WriteLine("India Stock Prices and technicals Done"); }
static void download_us_bond_yields(string URL, Bachlor_EssayEntities db) { WebClient streamUrl = new WebClient(); streamUrl.BaseAddress = URL; string URI = URL; Stream d = streamUrl.OpenRead(URI); StreamReader reader = new StreamReader(d); while (reader.Peek() > 0) { string s = reader.ReadLine(); Console.WriteLine(s); Console.WriteLine(); string[] data= s.Split(','); US_Yield g = new US_Yield(); double c; bool can = double.TryParse(data[1], out c); if (!can) { continue; } g.Date_ = data[0]; if(!String.IsNullOrEmpty(data[1])) g.one_mo = Convert.ToDouble(data[1]); if (!String.IsNullOrEmpty(data[2])) g.three_mo = Convert.ToDouble(data[2]); if (!String.IsNullOrEmpty(data[3])) g.six_mo = Convert.ToDouble(data[3]); if (!String.IsNullOrEmpty(data[4])) g.one_yr = Convert.ToDouble(data[4]); if (!String.IsNullOrEmpty(data[5])) g.two_yr = Convert.ToDouble(data[5]); if (!String.IsNullOrEmpty(data[6])) g.three_yr = Convert.ToDouble(data[6]); if (!String.IsNullOrEmpty(data[7])) g.five_yr = Convert.ToDouble(data[7]); if (!String.IsNullOrEmpty(data[8])) g.seven_yr = Convert.ToDouble(data[8]); if (!String.IsNullOrEmpty(data[9])) g.ten_yr = Convert.ToDouble(data[9]); if (!String.IsNullOrEmpty(data[10])) g.twenty_yr = Convert.ToDouble(data[10]); if (!String.IsNullOrEmpty(data[11])) g.thirty_yr = Convert.ToDouble(data[11]); db.US_Yield.Add(g); } db.SaveChanges(); d.Close(); reader.Close(); }