Beispiel #1
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);
            }
        }
Beispiel #2
0
        public void insertOpt10001(TB_OPT10001 tmp)
        {
            using (var conn = new NpgsqlConnection(Config.GetDbConnStr()))
            {
                try
                {
                    conn.Open();
                    String sql = @"CALL insert_tb_opt10001(
@stock_cd
,@face_amt
,@capital_amt
,@stock_cnt
,@credit_rt
,@settlement_mm
,@year_high_amt
,@year_low_amt
,@total_mrkt_amt
,@total_mrkt_amt_rt
,@foreigner_exhaustion_rt
,@substitute_amt
,@per
,@eps
,@roe
,@pbr
,@ev
,@bps
,@sales
,@business_profits
,@d250_high_amt
,@d250_low_amt
,@start_amt
,@high_amt
,@low_amt
,@upper_amt_lmt
,@lower_amt_lmt
,@yesterday_amt
,@expectation_contract_amt
,@expectation_contract_qty
,@d250_high_dt
,@d250_high_rt
,@d250_low_dt
,@d250_low_rt
,@curr_amt
,@contrast_symbol
,@contrast_yesterday
,@fluctuation_rt
,@trade_qty
,@trade_contrast
,@face_amt_unit
)";
                    using (var cmd = new NpgsqlCommand(sql, conn))
                    {
                        //cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@stock_cd", tmp.stock_cd);
                        cmd.Parameters.AddWithValue("@face_amt", tmp.face_amt);
                        cmd.Parameters.AddWithValue("@capital_amt", tmp.capital_amt);
                        cmd.Parameters.AddWithValue("@stock_cnt", tmp.stock_cnt);
                        cmd.Parameters.AddWithValue("@credit_rt", tmp.credit_rt);
                        cmd.Parameters.AddWithValue("@settlement_mm", tmp.settlement_mm);
                        cmd.Parameters.AddWithValue("@year_high_amt", tmp.year_high_amt);
                        cmd.Parameters.AddWithValue("@year_low_amt", tmp.year_low_amt);
                        cmd.Parameters.AddWithValue("@total_mrkt_amt", tmp.total_mrkt_amt);
                        cmd.Parameters.AddWithValue("@total_mrkt_amt_rt", tmp.total_mrkt_amt_rt);
                        cmd.Parameters.AddWithValue("@foreigner_exhaustion_rt", tmp.foreigner_exhaustion_rt);
                        cmd.Parameters.AddWithValue("@substitute_amt", tmp.substitute_amt);
                        cmd.Parameters.AddWithValue("@per", tmp.per);
                        cmd.Parameters.AddWithValue("@eps", tmp.eps);
                        cmd.Parameters.AddWithValue("@roe", tmp.roe);
                        cmd.Parameters.AddWithValue("@pbr", tmp.pbr);
                        cmd.Parameters.AddWithValue("@ev", tmp.ev);
                        cmd.Parameters.AddWithValue("@bps", tmp.bps);
                        cmd.Parameters.AddWithValue("@sales", tmp.sales);
                        cmd.Parameters.AddWithValue("@business_profits", tmp.business_profits);
                        cmd.Parameters.AddWithValue("@d250_high_amt", tmp.d250_high_amt);
                        cmd.Parameters.AddWithValue("@d250_low_amt", tmp.d250_low_amt);
                        cmd.Parameters.AddWithValue("@start_amt", tmp.start_amt);
                        cmd.Parameters.AddWithValue("@high_amt", tmp.high_amt);
                        cmd.Parameters.AddWithValue("@low_amt", tmp.low_amt);
                        cmd.Parameters.AddWithValue("@upper_amt_lmt", tmp.upper_amt_lmt);
                        cmd.Parameters.AddWithValue("@lower_amt_lmt", tmp.lower_amt_lmt);
                        cmd.Parameters.AddWithValue("@yesterday_amt", tmp.yesterday_amt);
                        cmd.Parameters.AddWithValue("@expectation_contract_amt", tmp.expectation_contract_amt);
                        cmd.Parameters.AddWithValue("@expectation_contract_qty", tmp.expectation_contract_qty);
                        cmd.Parameters.AddWithValue("@d250_high_dt", tmp.d250_high_dt);
                        cmd.Parameters.AddWithValue("@d250_high_rt", tmp.d250_high_rt);
                        cmd.Parameters.AddWithValue("@d250_low_dt", tmp.d250_low_dt);
                        cmd.Parameters.AddWithValue("@d250_low_rt", tmp.d250_low_rt);
                        cmd.Parameters.AddWithValue("@curr_amt", tmp.curr_amt);
                        cmd.Parameters.AddWithValue("@contrast_symbol", tmp.contrast_symbol);
                        cmd.Parameters.AddWithValue("@contrast_yesterday", tmp.contrast_yesterday);
                        cmd.Parameters.AddWithValue("@fluctuation_rt", tmp.fluctuation_rt);
                        cmd.Parameters.AddWithValue("@trade_qty", tmp.trade_qty);
                        cmd.Parameters.AddWithValue("@trade_contrast", tmp.trade_contrast);
                        cmd.Parameters.AddWithValue("@face_amt_unit", tmp.face_amt_unit);

                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    FileLog.PrintF("[insertOpt10001]Exception ex=" + ex.Message);
                    //{ "42883: insert_tb_stock(p_market_cd => text, p_stock_cd => text, p_stock_nm => text, p_stock_dt => text, p_cnt => integer, p_last_price => text, p_stock_state => text, p_construction => text) 이름의 함수가 없음"}
                    //		Message	"42601: 구문 오류, 입력 끝부분"	string
                }
            }
        }