/// <summary> /// Select record of underlying in DB with korea name and name type(FM1, FM2 or Drop) /// </summary> /// <param name="koreaName"></param> /// <returns></returns> public static KoreaUnderlyingInfo SelectUnderlying(string koreaName, KoreaNameType type) { string condition = ""; if (type.Equals(KoreaNameType.KoreaName)) { condition = "where KoreaName =N'" + koreaName + "'"; } else if (type.Equals(KoreaNameType.KoreaNameForFM2)) { condition = "where KoreaNameFM2 =N'" + koreaName + "'or KoreaNameDrop =N'" + koreaName + "' or UnderlyingName =N'" + koreaName + "'"; } else if (type.Equals(KoreaNameType.KoreaNameForDrop)) { condition = "where KoreaNameFM2 =N'" + koreaName + "'or KoreaNameDrop =N'" + koreaName + "' or UnderlyingName =N'" + koreaName + "'"; } else { condition = "where KoreaNameFM2 =N'" + koreaName + "'or KoreaNameDrop =N'" + koreaName + "' or UnderlyingName =N'" + koreaName + "'"; } DataTable dt = ManagerBase.Select(ETI_KOREA_UNDERLYING_TABLE_NAME, new string[] { "*" }, condition); if (dt == null || dt.Rows.Count == 0) { return(null); } KoreaUnderlyingInfo underlying = new KoreaUnderlyingInfo(); DataRow dr = dt.Rows[0]; underlying.BNDUnderlying = Convert.ToString(dr["BNDUnderlying"]); underlying.BodyGroupCommonName = Convert.ToString(dr["BodyGroupCommonName"]); underlying.IDNDisplayNamePart = Convert.ToString(dr["IDNDisplayNamePart"]); underlying.KoreaName = Convert.ToString(dr["KoreaName"]); underlying.KoreaNameDrop = Convert.ToString(dr["KoreaNameDrop"]); underlying.KoreaNameFM2 = Convert.ToString(dr["KoreaNameFM2"]); underlying.NDATCUnderlyingTitle = Convert.ToString(dr["NDATCUnderlyingTitle"]); underlying.QACommonNamePart = Convert.ToString(dr["QACommonNamePart"]); underlying.UnderlyingName = Convert.ToString(dr["UnderlyingName"]); underlying.UnderlyingRIC = Convert.ToString(dr["UnderlyingRIC"]); underlying.ISIN = Convert.ToString(dr["ISIN"]); return(underlying); }
public static void UpdateUnderlying(KoreaUnderlyingInfo underlying) { DataTable dt = Select(ETI_KOREA_UNDERLYING_TABLE_NAME, new string[] { "*" }, "where KoreaName = N'" + underlying.KoreaName + "'"); DataRow dr = null; if (dt == null || dt.Rows.Count == 0) { dr = dt.NewRow(); dr["BNDUnderlying"] = underlying.BNDUnderlying; dr["BodyGroupCommonName"] = underlying.BodyGroupCommonName; dr["IDNDisplayNamePart"] = underlying.IDNDisplayNamePart; dr["KoreaName"] = underlying.KoreaName; dr["KoreaNameDrop"] = underlying.KoreaNameDrop; dr["KoreaNameFM2"] = underlying.KoreaNameFM2; dr["NDATCUnderlyingTitle"] = underlying.NDATCUnderlyingTitle; dr["QACommonNamePart"] = underlying.QACommonNamePart; dr["UnderlyingName"] = underlying.UnderlyingName; dr["UnderlyingRIC"] = underlying.UnderlyingRIC; dr["ISIN"] = underlying.ISIN; dt.Rows.Add(dr); } else { foreach (DataRow row in dt.Rows) { row["BNDUnderlying"] = underlying.BNDUnderlying; row["BodyGroupCommonName"] = underlying.BodyGroupCommonName; row["IDNDisplayNamePart"] = underlying.IDNDisplayNamePart; row["KoreaName"] = underlying.KoreaName; row["KoreaNameDrop"] = underlying.KoreaNameDrop; row["KoreaNameFM2"] = underlying.KoreaNameFM2; row["NDATCUnderlyingTitle"] = underlying.NDATCUnderlyingTitle; row["QACommonNamePart"] = underlying.QACommonNamePart; row["UnderlyingName"] = underlying.UnderlyingName; row["UnderlyingRIC"] = underlying.UnderlyingRIC; row["ISIN"] = underlying.ISIN; } } UpdateDbTable(dt, ETI_KOREA_UNDERLYING_TABLE_NAME); }
public static KoreaUnderlyingInfo SelectUnderlyingByISIN(string isin) { string condition = "where ISIN ='" + isin + "'"; DataTable dt = ManagerBase.Select(ETI_KOREA_UNDERLYING_TABLE_NAME, new string[] { "*" }, condition); if (dt == null || dt.Rows.Count == 0) { return(null); } KoreaUnderlyingInfo underlying = new KoreaUnderlyingInfo(); DataRow dr = dt.Rows[0]; underlying.BNDUnderlying = Convert.ToString(dr["BNDUnderlying"]); underlying.BodyGroupCommonName = Convert.ToString(dr["BodyGroupCommonName"]); underlying.IDNDisplayNamePart = Convert.ToString(dr["IDNDisplayNamePart"]); underlying.KoreaName = Convert.ToString(dr["KoreaName"]); underlying.KoreaNameDrop = Convert.ToString(dr["KoreaNameDrop"]); underlying.KoreaNameFM2 = Convert.ToString(dr["KoreaNameFM2"]); underlying.NDATCUnderlyingTitle = Convert.ToString(dr["NDATCUnderlyingTitle"]); underlying.QACommonNamePart = Convert.ToString(dr["QACommonNamePart"]); underlying.UnderlyingName = Convert.ToString(dr["UnderlyingName"]); underlying.UnderlyingRIC = Convert.ToString(dr["UnderlyingRIC"]); return(underlying); }
private void FormatELWFMDropModel() { try { for (var i = 0; i < dropList.Count; i++) { ELWFMDropModel drop = (ELWFMDropModel)dropList[i]; //미래1507OCI머티콜 char[] temp_array = drop.OrgSource.ToCharArray(); string str_issuername = ""; foreach (var item in temp_array) { int asciiCode = (int)item; if (asciiCode > 47 && asciiCode < 58) { break; } str_issuername += item; } int no = 0; for (var j = 0; j < temp_array.Length; j++) { int asciiCode = (int)temp_array[j]; if (asciiCode > 47 && asciiCode < 58) { no = j; break; } } string CharLen = drop.OrgSource.Substring(no, 4).Trim().ToString(); drop.Type = "WNT"; string shortname = ""; KoreaIssuerInfo issuer = KoreaIssuerManager.SelectIssuer(str_issuername); if (issuer != null) { drop.Ticker = issuer.IssuerCode2 + CharLen; drop.RIC = issuer.IssuerCode2 + CharLen + ".KS"; shortname = issuer.IssuerCode4; } string tempCompany = string.Empty; //현대1882삼성엔지콜 if (!drop.OrgSource.Contains("조기종료")) { tempCompany = drop.OrgSource; drop.Comment = "Premature"; } else { tempCompany = drop.OrgSource.Replace("조기종료", ""); drop.Comment = "KOBA Drop"; } string last = tempCompany.Substring((no + 4)).Trim().ToString(); string str_underlying_Dsply_Nmll = last.Substring(0, (last.Length - 1)).Trim().ToString(); if (str_underlying_Dsply_Nmll == "KOSPI200") { str_underlying_Dsply_Nmll = "코스피"; } else if (str_underlying_Dsply_Nmll == "스탠차") { str_underlying_Dsply_Nmll = "스탠다드차타드"; } else if (str_underlying_Dsply_Nmll == "IBK") { str_underlying_Dsply_Nmll = "아이비케이"; } else if (str_underlying_Dsply_Nmll == "HMC") { str_underlying_Dsply_Nmll = "에이치엠씨"; } else if (str_underlying_Dsply_Nmll == "KB") { str_underlying_Dsply_Nmll = "케이비"; } string str_call_or_put = last.Substring((last.Length - 1)).Trim().ToString(); string idn_name = "***"; KoreaUnderlyingInfo underlying = KoreaUnderlyingManager.SelectUnderlying(str_underlying_Dsply_Nmll, KoreaNameType.KoreaNameForDrop); if (underlying == null) { Logger.Log("Can not find underlying info with Korea Name for Drop:" + str_underlying_Dsply_Nmll + ". Please input the ISIN.", Logger.LogType.Warning); string isin = InputISIN.Prompt(str_underlying_Dsply_Nmll, "Korea Name For Drop"); if (!string.IsNullOrEmpty(isin)) { underlying = KoreaUnderlyingManager.SelectUnderlyingByISIN(isin); KoreaUnderlyingManager.UpdateKoreaNameDrop(str_underlying_Dsply_Nmll, isin); } } if (underlying != null) { idn_name = underlying.IDNDisplayNamePart; } if (drop.Comment == "KOBA Drop") { idn_name += "KO"; } if (str_call_or_put == "콜") { str_call_or_put = "C"; } else if (str_call_or_put == "풋") { str_call_or_put = "P"; } string _idn_display_name = (shortname + CharLen + idn_name + str_call_or_put).ToString(); drop.IDNDisplayName = _idn_display_name; if (str_issuername == "스탠차") { str_issuername = "스탠다드차타드"; } if (str_issuername == "IBK") { str_issuername = "아이비케이"; } if (str_issuername == "HMC") { str_issuername = "에이치엠씨"; } if (str_issuername == "KB") { str_issuername = "케이비"; } //우리1C83삼성테크콜 drop.Issuername = str_issuername; drop.Num = "제" + CharLen + "호"; } } catch (Exception ex) { string msg = "Error found in _ELWFMDropModelFormat() : " + ex.ToString(); Logger.Log(msg, Logger.LogType.Error); } }
/// <summary> /// Grab new underlying info with korean name. /// </summary> /// <param name="koreaName">korean name</param> /// <returns>new underlying info</returns> public static KoreaUnderlyingInfo GrabNewUnderlyingInfo(string koreaName, string isin) { if (string.IsNullOrEmpty(isin)) { return(null); } KoreaUnderlyingInfo newUnderlying = new KoreaUnderlyingInfo(); string uri = string.Format("http://isin.krx.co.kr/jsp/BA_VW010.jsp?isu_cd={0}&modi=f&req_no=", isin); string pageSource = null; int retry = 3; while (pageSource == null && retry-- > 0) { try { pageSource = WebClientUtil.GetPageSource(null, uri, 6000, "", Encoding.GetEncoding("EUC-KR")); } catch { continue; } } if (pageSource == null) { string msg = "Can not get the New Underlying infos in ISIN webpage. For ISIN:" + isin + ". please check if the webpage can be accessed!"; return(null); } HtmlDocument isinRoot = new HtmlDocument(); isinRoot.LoadHtml(pageSource); HtmlNode isinTable = isinRoot.DocumentNode.SelectSingleNode("/html[1]/body[1]/table[1]/tr[3]/td[1]/table[1]"); HtmlNodeCollection isinTrs = isinTable.SelectNodes("./tr"); string ric = isinTrs[2].SelectNodes("./td")[3].InnerText.TrimStart().TrimEnd(); string sixDigit = ric.Substring(ric.Length - 6); string underEngName = isinTrs[10].SelectNodes("./td")[1].InnerText.TrimStart().TrimEnd(); string suffix = string.IsNullOrEmpty(isinTrs[11].SelectNodes("./td")[2].InnerText.TrimStart().TrimEnd()) ? "KQ" : "KS"; string usName = isinTrs[10].SelectNodes("./td")[3].InnerText.Trim(); string symbol = isinTrs[3].SelectNodes("./td")[1].InnerText.Trim(); string companyName = isinTrs[0].SelectNodes("./td")[1].InnerText.Trim(); Regex regex = new Regex(@"\[.+?]"); Match m = regex.Match(companyName); companyName = m.Value.Trim(new[] { ' ', '[', ']' }); companyName = Regex.Replace(companyName, " ", ""); newUnderlying.UnderlyingRIC = sixDigit + "." + suffix; if (sixDigit.Substring(5) == "0") { sixDigit = sixDigit.Substring(0, 5); } sixDigit = "kr;" + sixDigit.TrimStart('0'); if (suffix == "KQ") { sixDigit += "K"; } string ndaTc = ClearCoLtdForName(underEngName.ToUpper()); newUnderlying.QACommonNamePart = ndaTc; newUnderlying.NDATCUnderlyingTitle = ndaTc; newUnderlying.BNDUnderlying = sixDigit; newUnderlying.KoreaName = koreaName; newUnderlying.KoreaNameFM2 = koreaName; newUnderlying.KoreaNameDrop = koreaName; newUnderlying.IDNDisplayNamePart = GetIDNDisplayName(symbol, usName, ndaTc); newUnderlying.ISIN = isin; newUnderlying.CompanyName = companyName; return(newUnderlying); }
private void FormatEntityData(List <FMELWEntity> listFMELW) { if (listFMELW == null || listFMELW.Count == 0) { string msg = "there is not useful data in the file"; Logger.Log(msg, Logger.LogType.Warning); return; } string updateDate = DateTime.Now.ToString("dd-MMM-yy"); string updateYear = DateTime.Now.ToString("yyyy"); int lengthTicker = 0; try { foreach (var fm in listFMELW) { lengthTicker = fm.Ticker.Length; DateTime matDate = DateTime.Parse(fm.MatDate); DateTime issueDate = DateTime.Parse(fm.IssueDate); fm.Ticker = fm.Ticker.Substring(lengthTicker - 6, 6); fm.UpdatedDate = updateDate; fm.EffectiveDate = updateYear; fm.RIC = fm.Ticker + ".KS"; fm.FM = "1"; string bcastRef = string.Empty; if (string.IsNullOrEmpty(fm.XSovereignIssuingAuthority.Trim())) { bcastRef = fm.YStockIndexTypes.Trim(); } else { bcastRef = fm.XSovereignIssuingAuthority.Trim(); bcastRef = bcastRef.Replace("(주)", "").Replace("구성주식비율: 1", ""); } KoreaUnderlyingInfo underlying = KoreaUnderlyingManager.SelectUnderlying(bcastRef); KoreaIssuerInfo issuer = KoreaIssuerManager.SelectIssuerByIssuerCode2(fm.Ticker.Trim().Substring(0, 2)); fm.IDNDisplayName += issuer.IssuerCode4; fm.IDNDisplayName += fm.Ticker.Substring(2, 4); fm.IDNDisplayName += underlying.IDNDisplayNamePart; if (fm.KoreaWarrantName.Trim() == "콜") { fm.IDNDisplayName += "C"; // "C" ***************** KBIS +4019 + underlying.IDNDisplayNamePart +C } else { fm.IDNDisplayName += "P"; // "P"**************** KBIS +4019 + underlying.IDNDisplayNamePart +P } fm.BCAST_REF = underlying.UnderlyingRIC; fm.QACommonName = " "; fm.MatDate = matDate.ToString("dd-MMM-yy"); fm.StrikePrice = ""; fm.IssueDate = issueDate.ToString("dd-MMM-yy"); fm.Issuer = fm.Issuer.ToUpper(); string koreanWarrantName = fm.KoreaWarrantName; fm.KoreaWarrantName = string.Empty; fm.KoreaWarrantName += issuer.KoreaIssuerName; fm.KoreaWarrantName += fm.Ticker.Substring(2, 4); fm.KoreaWarrantName += underlying.KoreaNameDrop; fm.KoreaWarrantName += koreanWarrantName; if (fm.BCAST_REF.Trim() == ".KS200") { fm.Chain = "0#WARRANTS.KS, 0#ELW.KS, 0#.KS200W.KS"; } else { fm.Chain = "0#WARRANTS.KS, 0#ELW.KS, 0#CELW.KS,0#" + fm.BCAST_REF.Substring(0, 6) + "W.KS"; } fm.LastTradingDate = ""; fm.KnockOutPrice = ""; } } catch (Exception ex) { string msg = string.Format("error happened when format result entity :{0}", ex.Message); Logger.Log(msg, Logger.LogType.Error); } }