コード例 #1
0
        private void axKHOpenAPI1_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            logger.Debug("axKHOpenAPI1_OnReceiveTrData");

            int repCnt = this.axKHOpenAPI1.GetRepeatCnt(e.sTrCode, e.sRQName);



            if (e.sRQName.Contains("계좌평가잔고내역"))
            {
                //TODO. repCnt 로 루프를 돌려서 전체 종목을 받아오기
                string 종목번호 = axKHOpenAPI1.GetCommData(e.sTrCode, e.sRQName, 0, "종목번호").Trim();
                logger.Debug(종목번호);
            }
        }
コード例 #2
0
        private Opt10001VO getOpt10001VO(string sTrCode, string sRQName)
        {
            Opt10001VO opt10001VO = new Opt10001VO();

            opt10001VO.종목코드      = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "종목코드").Trim();
            opt10001VO.종목명       = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "종목명").Trim();
            opt10001VO.결산월       = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "결산월").Trim();
            opt10001VO.액면가       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "액면가").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "액면가").Trim());
            opt10001VO.자본금       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "자본금").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "자본금").Trim());
            opt10001VO.상장주식      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "상장주식").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "상장주식").Trim());
            opt10001VO.신용비율      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "신용비율").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "신용비율").Trim());
            opt10001VO.연중최고      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "연중최고").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "연중최고").Trim());
            opt10001VO.연중최저      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "연중최저").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "연중최저").Trim());
            opt10001VO.시가총액      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "시가총액").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "시가총액").Trim());
            opt10001VO.시가총액비중    = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "시가총액비중").Trim();
            opt10001VO.외인소진률     = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "외인소진률").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "외인소진률").Trim());
            opt10001VO.대용가       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "대용가").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "대용가").Trim());
            opt10001VO.PER       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "PER").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "PER").Trim());
            opt10001VO.EPS       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "EPS").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "EPS").Trim());
            opt10001VO.ROE       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "ROE").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "ROE").Trim());
            opt10001VO.PBR       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "PBR").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "PBR").Trim());
            opt10001VO.EV        = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "EV").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "EV").Trim());
            opt10001VO.BPS       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "BPS").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "BPS").Trim());
            opt10001VO.매출액       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "매출액").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "매출액").Trim());
            opt10001VO.영업이익      = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "영업이익").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "영업이익").Trim());
            opt10001VO.당기순이익     = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "당기순이익").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "당기순이익").Trim());
            opt10001VO.최고250     = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최고").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최고").Trim());
            opt10001VO.최저250     = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최저").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최저").Trim());
            opt10001VO.시가        = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "시가").Trim()));
            opt10001VO.고가        = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "고가").Trim()));
            opt10001VO.저가        = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "저가").Trim()));
            opt10001VO.상한가       = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "상한가").Trim()));
            opt10001VO.하한가       = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "하한가").Trim()));
            opt10001VO.기준가       = int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "기준가").Trim());
            opt10001VO.예상체결가     = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "예상체결가").Trim();
            opt10001VO.예상체결수량    = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "예상체결수량").Trim();
            opt10001VO.최고가일250   = DateTime.ParseExact(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최고가일").Trim(), "yyyyMMdd", null);
            opt10001VO.최고가대비율250 = float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최고가대비율").Trim());
            opt10001VO.최저가일250   = DateTime.ParseExact(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최저가일").Trim(), "yyyyMMdd", null);
            opt10001VO.최저가대비율250 = float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "250최저가대비율").Trim());
            opt10001VO.현재가       = Math.Abs(int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "현재가").Trim()));
            opt10001VO.대비기호      = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "대비기호").Trim();
            opt10001VO.전일대비      = int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "전일대비").Trim());
            opt10001VO.등락율       = float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "등락율").Trim());
            opt10001VO.거래량       = int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "거래량").Trim());
            opt10001VO.거래대비      = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "거래대비").Trim();
            opt10001VO.액면가단위     = axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "액면가단위").Trim();
            opt10001VO.통주식       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "유통주식").Trim()) ? 0 : int.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "유통주식").Trim());
            opt10001VO.통비율       = System.String.IsNullOrEmpty(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "유통비율").Trim()) ? 0 : float.Parse(axKHOpenAPI1.GetCommData(sTrCode, sRQName, 0, "유통비율").Trim());

            return(opt10001VO);
        }
コード例 #3
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            try {
                /*
                 * sScrNo – 화면번호
                 * sRQName – 사용자구분 명
                 * sTrCode – Tran 명
                 * sRecordName – Record 명
                 * sPreNext – 연속조회 유무
                 */
                String 종목코드 = "XXXX";
                String keyStockCodeLayout = "sRQName:{0}|sTrCode:{1}|sScreenNo:{2}";
                String keyStockCode       = String.Format(keyStockCodeLayout, e.sRQName, e.sTrCode, e.sScrNo);
                종목코드 = AppLib.getClass1Instance().getStockCode(keyStockCode);
                String keyLayout = "sRQName:{0}|sTrCode:{1}|sScreenNo:{2}|stockCode:{3}";
                String key       = String.Format(keyLayout, e.sRQName, e.sTrCode, e.sScrNo, 종목코드);
                spell = AppLib.getClass1Instance().getSpell(key).ShallowCopy();
                TB_OPT10001 tmp = new TB_OPT10001();

                String 종목코드1 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "종목코드").Trim();
                if (종목코드1.Equals(""))
                {
                    종목코드1 = 종목코드;//일부 종목코드들은 아래 데이터가 아예 안나온다. ///51A077
                }
                tmp.stock_cd = 종목코드1;
                String 결산월 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "결산월").Trim();
                tmp.settlement_mm = 결산월;

                String str액면가 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "액면가").Trim();
                int    액면가    = 0;
                int.TryParse(str액면가.Trim(), out 액면가);
                tmp.face_amt = 액면가;

                String str자본금 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "자본금").Trim();
                int    자본금    = 0;
                int.TryParse(str자본금.Trim(), out 자본금);
                tmp.capital_amt = 자본금;

                String str상장주식 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "상장주식").Trim();
                int    상장주식    = 0;
                int.TryParse(str상장주식.Trim(), out 상장주식);
                tmp.stock_cnt = 상장주식;

                String str신용비율 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "신용비율").Trim();
                float  신용비율    = 0;
                float.TryParse(str신용비율.Trim(), out 신용비율);
                tmp.credit_rt = 신용비율;

                String str연중최고 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "연중최고").Trim();
                int    연중최고    = 0;
                int.TryParse(str연중최고.Trim(), out 연중최고);
                tmp.year_high_amt = 연중최고;

                String str연중최저 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "연중최저").Trim();
                int    연중최저    = 0;
                int.TryParse(str연중최저.Trim(), out 연중최저);
                tmp.year_low_amt = 연중최저;


                String str시가총액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "시가총액").Trim();
                int    시가총액    = 0;
                int.TryParse(str시가총액.Trim(), out 시가총액);
                tmp.total_mrkt_amt = 시가총액;


                String str시가총액비중 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "시가총액비중").Trim();
                float  시가총액비중    = 0;
                float.TryParse(str시가총액비중.Trim(), out 시가총액비중);
                tmp.total_mrkt_amt_rt = 시가총액비중;

                String str외인소진률 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "외인소진률").Trim();
                float  외인소진률    = 0;
                float.TryParse(str외인소진률.Trim(), out 외인소진률);
                tmp.foreigner_exhaustion_rt = 외인소진률;

                String str대용가 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "대용가").Trim();
                int    대용가    = 0;
                int.TryParse(str대용가.Trim(), out 대용가);
                tmp.substitute_amt = 대용가;

                String strPER = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "PER").Trim();
                float  PER    = 0;
                float.TryParse(strPER.Trim(), out PER);
                tmp.per = PER;

                String strEPS = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "EPS").Trim();
                int    EPS    = 0;
                int.TryParse(strEPS.Trim(), out EPS);
                tmp.eps = EPS;

                String strROE = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "ROE").Trim();
                float  ROE    = 0;
                float.TryParse(strROE.Trim(), out ROE);
                tmp.roe = ROE;

                String strPBR = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "PBR").Trim();
                float  PBR    = 0;
                float.TryParse(strPBR.Trim(), out PBR);
                tmp.pbr = PBR;

                String strEV = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "EV").Trim();
                float  EV    = 0;
                float.TryParse(strEV.Trim(), out EV);
                tmp.ev = EV;

                String strBPS = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "BPS").Trim();
                int    BPS    = 0;
                int.TryParse(strBPS.Trim(), out BPS);
                tmp.bps = BPS;

                String str매출액 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "매출액").Trim();
                int    매출액    = 0;
                int.TryParse(str매출액.Trim(), out 매출액);
                tmp.sales = 매출액;

                String str영업이익 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "영업이익").Trim();
                int    영업이익    = 0;
                int.TryParse(str영업이익.Trim(), out 영업이익);
                tmp.business_profits = 영업이익;

                String strD250최고 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최고").Trim();
                int    D250최고    = 0;
                int.TryParse(strD250최고.Trim(), out D250최고);
                tmp.d250_high_amt = D250최고;

                String strD250최저 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최저").Trim();
                int    D250최저    = 0;
                int.TryParse(strD250최저.Trim(), out D250최저);
                tmp.d250_low_amt = D250최저;

                int 시가  = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "시가").Trim());   //[23]
                int 고가  = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "고가").Trim());   //[24]
                int 저가  = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "저가").Trim());   //[25]
                int 상한가 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "상한가").Trim());  //[26]
                int 하한가 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "하한가").Trim());  //[27]
                int 기준가 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "기준가").Trim());  //[28]
                tmp.start_amt     = 시가;
                tmp.high_amt      = 고가;
                tmp.low_amt       = 저가;
                tmp.upper_amt_lmt = 상한가;
                tmp.lower_amt_lmt = 하한가;
                tmp.yesterday_amt = 기준가;

                String str예상체결가 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "예상체결가").Trim();
                int    예상체결가    = 0;
                int.TryParse(str예상체결가.Trim(), out 예상체결가);
                tmp.expectation_contract_amt = 예상체결가;


                String str예상체결수량 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "예상체결수량").Trim();
                int    예상체결수량    = 0;
                int.TryParse(str예상체결수량.Trim(), out 예상체결수량);
                tmp.expectation_contract_qty = 예상체결수량;

                String D250최고가일 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최고가일").Trim();
                tmp.d250_high_dt = D250최고가일;

                float D250최고가대비율 = float.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최고가대비율").Trim());
                tmp.d250_high_rt = D250최고가대비율;


                String D250최저가일 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최저가일").Trim();
                tmp.d250_low_dt = D250최저가일;

                float D250최저가대비율 = float.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "250최저가대비율").Trim());
                tmp.d250_low_rt = D250최저가대비율;

                int 현재가 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "현재가").Trim());
                tmp.curr_amt = 현재가;

                int 대비기호 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "대비기호").Trim());
                tmp.contrast_symbol = 대비기호;

                int 전일대비 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "전일대비").Trim());
                tmp.contrast_yesterday = 전일대비;

                float 등락율 = float.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "등락율").Trim());
                tmp.fluctuation_rt = 등락율;

                int 거래량 = int.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "거래량").Trim());
                tmp.trade_qty = 거래량;

                float 거래대비 = float.Parse(axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "거래대비").Trim());
                tmp.trade_contrast = 거래대비;

                tmp.face_amt_unit = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "액면가단위").Trim();

                String str유통주식 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "유통주식").Trim();         //[31]
                int    통주식     = 0;
                int.TryParse(str유통주식.Trim(), out 통주식);
                tmp.distribution_stock = 통주식;

                String str유통비율 = axKHOpenAPI.GetCommData(e.sTrCode, e.sRQName, 0, "유통비율").Trim();         //[31]
                float  통비율     = 0;
                float.TryParse(str유통비율.Trim(), out 통비율);
                tmp.distribution_stock_rt = 통비율;

                //이것은 연속적이지 않기 때문에 바로 제거 한다.
                AppLib.getClass1Instance().removeSpellDictionary(spell.key);
                int    position = spell.key.LastIndexOf("|");
                String key1     = spell.key.Substring(0, position);
                AppLib.getClass1Instance().removeStockCodeDictionary(key1);
                //래치를 호출해서 잠김을 제거한다.--래치 일단 제거 호출하는데도 제거 했다. 1초에 5번 호출 규칙만 적용해보자.
                AppLib.getClass1Instance().setOpt10081(spell.sTrCode);

                DailyData dd = new DailyData();
                dd.insertOpt10001(tmp);
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10001]Exception ex=" + ex.Message);
            }
        }