private void GrabDataByISIN() { List <String> lists = configObj.ISINList.ToList(); if (lists.Count > 0) { foreach (var item in lists) { if (String.IsNullOrEmpty(item)) { continue; } String uri = String.Format("http://isin.krx.co.kr/jsp/BA_VW021.jsp?isu_cd={0}&modi=f&req_no=", item); HtmlDocument htc = WebClientUtil.GetHtmlDocument(uri, 300000); if (htc != null) { HtmlNode table = htc.DocumentNode.SelectNodes("//table")[2]; if (table != null) { String tr5_td2 = table.SelectSingleNode(".//tr[5]/td[2]").InnerText.Trim().ToString(); //String tr3_td2 = table.SelectSingleNode(".//tr[3]/td[2]").InnerText.Trim().ToString(); if (tr5_td2.Equals("사모")) { continue; } WarrantTemplate wt = new WarrantTemplate(); wt.ISIN = item.Trim().ToString(); DataAnalysisForSingleSearch(table, wt); koreaList.Add(wt); } } } } }
public int CompareTicker(WarrantTemplate x, WarrantTemplate y) { if (x.Ticker == null) { if (y.Ticker == null) { return(0); } else { return(-1); } } else { if (y.Ticker == null) { return(1); } else { int retval = x.Ticker.CompareTo(y.Ticker); if (retval != 0) { return(retval); } else { return(x.Ticker.CompareTo(y.Ticker)); } } } }
private void CreateNewQACommonName(WarrantTemplate wt, String PorC) { try { //QA Common Name String cname = koreaUnderlyingHash.Contains(wt.Underlying_Korea_Name) ? ((UnderlyingCodeConversion)koreaUnderlyingHash[(wt.Underlying_Korea_Name)]).QACommonName : "***"; String sname = KoreaIssuerNameHash.Contains(wt.Issuer_Korea_Name) ? ((IssuerCodeConversion)KoreaIssuerNameHash[(wt.Issuer_Korea_Name)]).shortname : "***"; String mtime = Convert.ToDateTime(wt.Org_Mat_date).ToString("MMM-yy", new CultureInfo("en-US")).Replace("-", "").ToUpper(); String price = wt.Strike_Price.Contains(".") ? wt.Strike_Price.Split('.')[0] : wt.Strike_Price; price = price.Length >= 4 ? price.Substring(0, 4) : price; String last = wt.Underlying_Korea_Name.Equals("KOSPI200") ? "IW" : "WNT"; String qacommonname = String.Empty; if (String.IsNullOrEmpty(wt.KnockOut_price)) { qacommonname = cname + " " + sname + " " + mtime + " " + price + " " + PorC + last; } else { qacommonname = cname + " " + sname + " " + mtime + " " + price + " KO " + PorC + last; } wt.QA_Common_Name = qacommonname.ToUpper(); } catch (Exception ex) { String msg = "Error found in create new QA Common Name : \r\n" + ex.ToString() + "\r\n InnerException : " + ex.InnerException; Logger.Log(msg, Logger.LogType.Error); } }
private void CreateNewBcastRef(WarrantTemplate wt) { try { //BCAST_REF String underlying_ric = String.Empty; if (!String.IsNullOrEmpty(wt.Underlying_Korea_Name)) { if (koreaUnderlyingHash.Contains(wt.Underlying_Korea_Name)) { underlying_ric = ((UnderlyingCodeConversion)koreaUnderlyingHash[(wt.Underlying_Korea_Name)]).UnderlyingRic; } else { underlying_ric = "***"; } } wt.BCAST_REF = underlying_ric.ToUpper(); } catch (Exception ex) { String msg = "Error found in create new Bcast Ref : \r\n" + ex.ToString() + "\r\n InnerException : " + ex.InnerException; Logger.Log(msg, Logger.LogType.Error); } }
private void CreateNewIDNDisplayName(WarrantTemplate wt, String PorC) { try { //IDN Display Name if (KoreaIssuerNameHash.Contains(wt.Issuer_Korea_Name)) { IssuerCodeConversion iCode = ((IssuerCodeConversion)KoreaIssuerNameHash[wt.Issuer_Korea_Name]); String shortname = iCode.shortname; if (!string.IsNullOrEmpty(shortname)) { String NumLen = wt.Ticker.Substring(2, 4); String underly = String.Empty; if (!String.IsNullOrEmpty(wt.Underlying_Korea_Name)) { if (koreaUnderlyingHash.Contains(wt.Underlying_Korea_Name)) { underly = ((UnderlyingCodeConversion)koreaUnderlyingHash[(wt.Underlying_Korea_Name)]).IDNDisplayName; } else { underly = "***"; } } String IDN = String.IsNullOrEmpty(wt.KnockOut_price) ? (shortname + NumLen + underly + PorC) : (shortname + NumLen + underly + "KO" + PorC); wt.IDN_Display_Name = IDN; } } } catch (Exception ex) { String msg = "Error found in create new IDN Display Name : \r\n" + ex.ToString() + "\r\n InnerException : " + ex.InnerException; Logger.Log(msg, Logger.LogType.Error); } }
private void CreateTheNewChain(WarrantTemplate wt) { //Chain try { String chain = String.Empty; if (String.IsNullOrEmpty(wt.KnockOut_price)) { chain = wt.Underlying_Korea_Name.Equals("KOSPI200") ? ("0#WARRANTS.KS, 0#ELW.KS, 0#.KS200W.KS") : "0#WARRANTS.KS, 0#ELW.KS, 0#CELW.KS, 0#" + wt.BCAST_REF.Split('.')[0] + "W." + wt.BCAST_REF.Split('.')[1]; } else { chain = "0#KOBA.KS"; } wt.Chain = chain.ToUpper(); } catch (Exception ex) { String msg = "Error found in create new Chain : \r\n" + ex.ToString() + "\r\n InnerException : " + ex.InnerException; Logger.Log(msg, Logger.LogType.Error); } }
private void DataAnalysisForSingleSearch(HtmlNode table, WarrantTemplate wt) { System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); try { String tr2_td4 = table.SelectSingleNode(".//tr[2]/td[4]").InnerText.Trim(); String tr3_td4 = table.SelectSingleNode(".//tr[3]/td[4]").InnerText.Trim(); String tr4_td2 = table.SelectSingleNode(".//tr[4]/td[2]").InnerText.Trim(); String tr4_td4 = table.SelectSingleNode(".//tr[4]/td[4]").InnerText.Trim(); String tr6_td2 = table.SelectSingleNode(".//tr[6]/td[2]").InnerText.Trim(); String tr6_td4 = table.SelectSingleNode(".//tr[6]/td[4]").InnerText.Trim(); String tr7_td2 = table.SelectSingleNode(".//tr[7]/td[2]").InnerText.Trim(); String tr7_td4 = table.SelectSingleNode(".//tr[7]/td[4]").InnerText.Trim(); String tr8_td2 = table.SelectSingleNode(".//tr[8]/td[2]").InnerText.Trim(); String tr11_td4 = table.SelectSingleNode(".//tr[11]/td[4]").InnerText; String tr13_td2 = table.SelectSingleNode(".//tr[13]/td[2]").InnerText; String tr20_td4 = table.SelectSingleNode(".//tr[20]/td[4]").InnerText.Trim(); String tr21_td2 = table.SelectSingleNode(".//tr[21]/td[2]").InnerText.Trim(); if (String.IsNullOrEmpty(tr13_td2)) { tr13_td2 = "KOSPI200"; } else { tr13_td2 = tr13_td2.Contains("(주)") ? tr13_td2.Replace("(주)", "") : tr13_td2; } wt.Underlying_Korea_Name = tr13_td2; string issuer_koreaname = tr3_td4; Char[] array_issuer = issuer_koreaname.ToCharArray(); string ikoreaname = String.Empty; foreach (var item in array_issuer) { if (item > 48 && item < 58) { break; } ikoreaname += item.ToString(); } wt.Issuer_Korea_Name = ikoreaname; wt.Updated_Date = DateTime.Today.ToString("dd-MMM-yy"); wt.Effective_Date = DateTime.Today.Year.ToString(); wt.FM = "1"; wt.Ticker = tr2_td4.Substring(1); wt.RIC = wt.Ticker + ".KS"; wt.Org_Mat_date = tr6_td4.Trim().ToString(); wt.Mat_Date = Convert.ToDateTime(tr6_td4.Trim()).ToString("dd-MMM-yy"); wt.Strike_Price = tr20_td4.Contains(",") ? tr20_td4.Replace(",", "") : tr20_td4; wt.Quanity_of_Warrants = tr7_td4.Contains(",") ? tr7_td4.Replace(",", "") : tr7_td4; wt.Issue_Price = tr7_td2.Contains(",") ? tr7_td2.Replace(",", "") : tr7_td2; wt.Org_Issue_date = tr6_td2; wt.Issue_Date = Convert.ToDateTime(tr6_td2).ToString("dd-MMM-yy", new CultureInfo("en-US")); wt.Conversion_Ratio = tr8_td2; wt.Issuer = tr4_td2.ToUpper(); wt.Korea_Warrant_Name = tr3_td4; if (!string.IsNullOrEmpty(tr21_td2)) { wt.KnockOut_price = tr21_td2.Contains(",") ? tr21_td2.Replace(",", "") : tr21_td2; } int count = tr4_td4.Split('-').Length; String PorC = tr4_td4.Split('-')[(count - 1)]; wt.CallOrPut = PorC.Equals("C") ? "CALL" : "PUT"; CreateNewIDNDisplayName(wt, PorC); CreateNewBcastRef(wt); CreateNewQACommonName(wt, PorC); CreateTheNewChain(wt); } catch (Exception ex) { String msg = "Error found in DataAnalysisForSingleSearch :InnerException \r\n" + ex.InnerException + " : \r\n" + ex.ToString(); Logger.Log(msg, Logger.LogType.Error); } }