private NseBankNiftyModel GetNseBankNiftyData() { dynamic ce = new JObject(); var finalss = new NseBankNiftyModel(); var final = new List <BankNiftyOiHistory>(); using (var context = new NseToolsContext()) { var result = context.BankNiftyOiHistories.OrderBy(x => x.StrikePrice) .GroupBy(x => x.StrikePrice).Select(grp => grp.ToList()).ToList(); var temp = new List <string>(); finalss.AllStrikes = JsonConvert.SerializeObject(result.Select(x => x.First().StrikePrice).ToList()); // var result1 = context.BankNiftyOiHistories.GroupBy(x => x.StrikePrice).Select(grp => grp.ToList()[0]).ToList(); foreach (var res in result) { var sorted = res.OrderBy(x => x.ModifiedDateTime).ToList(); var allCes = sorted.Select(x => x.CeOi).ToList(); var allPes = sorted.Select(x => x.PeOi).ToList(); var allDateTime = sorted.Select(x => x.ModifiedDateTime != null ? x.ModifiedDateTime.Value.ToShortTimeString() : "").ToList(); var allStrikes = sorted.Select(x => x.StrikePrice).Distinct().ToList(); finalss.NseBankNiftyOiDataForStrikePrice.Add(new NseBankNiftyOiDataForStrikePrice { StrikePrice = JsonConvert.SerializeObject(allStrikes), CeOi = JsonConvert.SerializeObject(allCes), PeOi = JsonConvert.SerializeObject(allPes), DtTm = JsonConvert.SerializeObject(allDateTime) }); } // var res = result.First(); // // var sorted = res.OrderBy(x => x.ModifiedDateTime).ToList(); // var allCes = sorted.Select(x => x.CeOi).ToList(); // var allPes = sorted.Select(x => x.PeOi).ToList(); // var allDateTime = sorted.Select(x => x.ModifiedDateTime).ToList(); // // finalss.NseBankNiftyOiDataForStrikePrice.CeOi = JsonConvert.SerializeObject(allCes); // finalss.NseBankNiftyOiDataForStrikePrice.PeOi = JsonConvert.SerializeObject(allPes); // finalss.NseBankNiftyOiDataForStrikePrice.DtTm = JsonConvert.SerializeObject(allDateTime); return(finalss); } }
public void ScrapNseBankNiftyData() { string[] bnfRange = ConfigurationManager.AppSettings["BNfStrikePriceRange"].Split(','); var web = new HtmlWeb(); HtmlDocument doc = web.Load( "https://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbolCode=-9999&symbol=BANKNIFTY&symbol=BANKNIFTY&instrument=OPTIDX&date=-&segmentLink=17&segmentLink=17"); // doc foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) { Console.WriteLine("Found: " + table.Id); if (table.Id == "octable") { using (var context = new NseToolsContext()) { var records = new List <BankNiftyOiHistory>(); foreach (HtmlNode row in table.SelectNodes("tr")) { Console.WriteLine("row"); string innerHtml = row.InnerHtml; HtmlNodeCollection allCells = row.SelectNodes("td"); if (allCells.Count > 10 && !string.IsNullOrWhiteSpace(allCells[11].InnerText) && Convert.ToDecimal(allCells[11].InnerText) >= Convert.ToInt16(bnfRange[0]) && Convert.ToDecimal(allCells[11].InnerText) <= Convert.ToInt16(bnfRange[1])) { var record = new BankNiftyOiHistory(); // Chart // OI YES record.CeOi = Convert.ToInt32(allCells[1].InnerText.Replace(",", "")); // Chng in OI YES //TODO - fix this // record.CeChange = Convert.ToInt32(allCells[2].InnerText.Replace(",", "")); // Volume // IV // LTP // Net Chng // Bid Qty // Bid Price // Ask Price // Ask Qty // Strike Price YES record.StrikePrice = Convert.ToInt32(Convert.ToDecimal(allCells[11].InnerText.Replace(",", ""))); // Bid Qty // Bid Price // Ask Price // Ask Qty // Net Chng // LTP // IV // Volume // Chng in OI YES //TODO - fix this // record.PeChange = Convert.ToInt32(allCells[20].InnerText.Replace(",", "")); // OI YES if (allCells[21].InnerText.Contains(",")) { record.PeOi = Convert.ToInt32(allCells[21].InnerText.Replace(",", "")); } // Chart record.ModifiedDateTime = DateTime.Now; records.Add(record); // innerHtml = innerHtml.Replace(",", ""); //// string replacement = Regex.Replace(innerText, @"\t|\n|\r", ","); // string replacement = Regex.Replace(innerHtml, @"\n", ","); // var csvRow = replacement.Split(','); // csvRow.ForEach(x => x = x.Trim()); // // foreach (HtmlNode cell in row.SelectNodes("th|td")) // { // Console.WriteLine("cell: " + cell.InnerText); // } } } //add the row context.BankNiftyOiHistories.AddRange(records); context.SaveChanges(); } } } }