예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        /// <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, "&nbsp;", "");

            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);
        }
예제 #6
0
        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);
            }
        }