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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
 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);
            }
        }