コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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();
                    }
                }
            }
        }