Beispiel #1
0
        public void insertOptkwfid(List <TB_OPTKWFID> lst)
        {
            using (var conn = new NpgsqlConnection(Config.GetDbConnStr()))
            {
                try
                {
                    conn.Open();
                    String sql = @"CALL insert_tb_optkwfid (
@p_stock_cd
,@p_curr_amt
,@p_yesterday_amt
,@p_contrast_yesterday
,@p_contrast_yesterday_symbol
,@p_fluctuation_rt
,@p_trade_qty
,@p_trade_amt
,@p_contract_qty
,@p_contract_strength
,@p_yesterday_contrast_trade_rt
,@p_offered_amt
,@p_bid_amt
,@p_offered_amt_one
,@p_offered_amt_two
,@p_offered_amt_three
,@p_offered_amt_four
,@p_offered_amt_five
,@p_bid_amt_one
,@p_bid_amt_two
,@p_bid_amt_three
,@p_bid_amt_four
,@p_bid_amt_five
,@p_upper_amt_lmt
,@p_lower_amt_lmt
,@p_start_amt
,@p_high_amt
,@p_low_amt
,@p_clsg_amt
,@p_contract_time
,@p_expectation_contract_amt
,@p_expectation_contract_qty
,@p_capital_amt
,@p_face_amt
,@p_total_mrkt_amt
,@p_stock_cnt
,@p_hoga_time
,@p_stock_dt
,@p_fst_offered_balance
,@p_fst_bid_balance
,@p_fst_offered_qty
,@p_fst_bid_qty
,@p_tot_offered_balance
,@p_tot_bid_balance
,@p_tot_offered_qty
,@p_tot_bid_qty
,@p_parity_rt
,@p_gearing
,@p_break_even_point
,@p_elw_strike_amt
,@p_conversion_rt
,@p_elw_expiry_dt
,@p_open_interest
,@p_contrast_open_interest
,@p_theorist_amt
,@p_implied_volatility
,@p_delta
,@p_gamma
,@p_theta
,@p_vega
,@p_lo
)";


                    using (var cmd = new NpgsqlCommand(sql, conn))
                    {
                        for (int i = 0; i < lst.Count(); i++)
                        {
                            TB_OPTKWFID tmp = lst[i];
                            //cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@p_stock_cd", NpgsqlTypes.NpgsqlDbType.Text, tmp.stock_cd);
                            cmd.Parameters.AddWithValue("@p_curr_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.curr_amt);
                            cmd.Parameters.AddWithValue("@p_yesterday_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.yesterday_amt);
                            cmd.Parameters.AddWithValue("@p_contrast_yesterday", NpgsqlTypes.NpgsqlDbType.Integer, tmp.contrast_yesterday);
                            cmd.Parameters.AddWithValue("@p_contrast_yesterday_symbol", NpgsqlTypes.NpgsqlDbType.Integer, tmp.contrast_yesterday_symbol);
                            cmd.Parameters.AddWithValue("@p_fluctuation_rt", NpgsqlTypes.NpgsqlDbType.Real, tmp.fluctuation_rt);
                            cmd.Parameters.AddWithValue("@p_trade_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.trade_qty);
                            cmd.Parameters.AddWithValue("@p_trade_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.trade_amt);
                            cmd.Parameters.AddWithValue("@p_contract_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.contract_qty);
                            cmd.Parameters.AddWithValue("@p_contract_strength", NpgsqlTypes.NpgsqlDbType.Real, tmp.contract_strength);
                            cmd.Parameters.AddWithValue("@p_yesterday_contrast_trade_rt", NpgsqlTypes.NpgsqlDbType.Real, tmp.yesterday_contrast_trade_rt);
                            cmd.Parameters.AddWithValue("@p_offered_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt);
                            cmd.Parameters.AddWithValue("@p_bid_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt);
                            cmd.Parameters.AddWithValue("@p_offered_amt_one", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt_one);
                            cmd.Parameters.AddWithValue("@p_offered_amt_two", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt_two);
                            cmd.Parameters.AddWithValue("@p_offered_amt_three", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt_three);
                            cmd.Parameters.AddWithValue("@p_offered_amt_four", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt_four);
                            cmd.Parameters.AddWithValue("@p_offered_amt_five", NpgsqlTypes.NpgsqlDbType.Integer, tmp.offered_amt_five);
                            cmd.Parameters.AddWithValue("@p_bid_amt_one", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt_one);
                            cmd.Parameters.AddWithValue("@p_bid_amt_two", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt_two);
                            cmd.Parameters.AddWithValue("@p_bid_amt_three", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt_three);
                            cmd.Parameters.AddWithValue("@p_bid_amt_four", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt_four);
                            cmd.Parameters.AddWithValue("@p_bid_amt_five", NpgsqlTypes.NpgsqlDbType.Integer, tmp.bid_amt_five);
                            cmd.Parameters.AddWithValue("@p_upper_amt_lmt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.upper_amt_lmt);
                            cmd.Parameters.AddWithValue("@p_lower_amt_lmt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.lower_amt_lmt);
                            cmd.Parameters.AddWithValue("@p_start_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.start_amt);
                            cmd.Parameters.AddWithValue("@p_high_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.high_amt);
                            cmd.Parameters.AddWithValue("@p_low_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.low_amt);
                            cmd.Parameters.AddWithValue("@p_clsg_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.clsg_amt);
                            cmd.Parameters.AddWithValue("@p_contract_time", NpgsqlTypes.NpgsqlDbType.Text, tmp.contract_time);
                            cmd.Parameters.AddWithValue("@p_expectation_contract_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.expectation_contract_amt);
                            cmd.Parameters.AddWithValue("@p_expectation_contract_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.expectation_contract_qty);
                            cmd.Parameters.AddWithValue("@p_capital_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.capital_amt);
                            cmd.Parameters.AddWithValue("@p_face_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.face_amt);
                            cmd.Parameters.AddWithValue("@p_total_mrkt_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.total_mrkt_amt);
                            cmd.Parameters.AddWithValue("@p_stock_cnt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.stock_cnt);
                            cmd.Parameters.AddWithValue("@p_hoga_time", NpgsqlTypes.NpgsqlDbType.Text, tmp.hoga_time);
                            cmd.Parameters.AddWithValue("@p_stock_dt", NpgsqlTypes.NpgsqlDbType.Text, tmp.stock_dt);
                            cmd.Parameters.AddWithValue("@p_fst_offered_balance", NpgsqlTypes.NpgsqlDbType.Integer, tmp.fst_offered_balance);
                            cmd.Parameters.AddWithValue("@p_fst_bid_balance", NpgsqlTypes.NpgsqlDbType.Integer, tmp.fst_bid_balance);
                            cmd.Parameters.AddWithValue("@p_fst_offered_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.fst_offered_qty);
                            cmd.Parameters.AddWithValue("@p_fst_bid_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.fst_bid_qty);
                            cmd.Parameters.AddWithValue("@p_tot_offered_balance", NpgsqlTypes.NpgsqlDbType.Integer, tmp.tot_offered_balance);
                            cmd.Parameters.AddWithValue("@p_tot_bid_balance", NpgsqlTypes.NpgsqlDbType.Integer, tmp.tot_bid_balance);
                            cmd.Parameters.AddWithValue("@p_tot_offered_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.tot_offered_qty);
                            cmd.Parameters.AddWithValue("@p_tot_bid_qty", NpgsqlTypes.NpgsqlDbType.Integer, tmp.tot_bid_qty);
                            cmd.Parameters.AddWithValue("@p_parity_rt", NpgsqlTypes.NpgsqlDbType.Real, tmp.parity_rt);
                            cmd.Parameters.AddWithValue("@p_gearing", NpgsqlTypes.NpgsqlDbType.Real, tmp.gearing);
                            cmd.Parameters.AddWithValue("@p_break_even_point", NpgsqlTypes.NpgsqlDbType.Real, tmp.break_even_point);
                            cmd.Parameters.AddWithValue("@p_elw_strike_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.elw_strike_amt);
                            cmd.Parameters.AddWithValue("@p_conversion_rt", NpgsqlTypes.NpgsqlDbType.Real, tmp.conversion_rt);
                            cmd.Parameters.AddWithValue("@p_elw_expiry_dt", NpgsqlTypes.NpgsqlDbType.Text, tmp.elw_expiry_dt);
                            cmd.Parameters.AddWithValue("@p_open_interest", NpgsqlTypes.NpgsqlDbType.Integer, tmp.open_interest);
                            cmd.Parameters.AddWithValue("@p_contrast_open_interest", NpgsqlTypes.NpgsqlDbType.Integer, tmp.contrast_open_interest);
                            cmd.Parameters.AddWithValue("@p_theorist_amt", NpgsqlTypes.NpgsqlDbType.Integer, tmp.theorist_amt);
                            cmd.Parameters.AddWithValue("@p_implied_volatility", NpgsqlTypes.NpgsqlDbType.Integer, tmp.implied_volatility);
                            cmd.Parameters.AddWithValue("@p_delta", NpgsqlTypes.NpgsqlDbType.Integer, tmp.delta);
                            cmd.Parameters.AddWithValue("@p_gamma", NpgsqlTypes.NpgsqlDbType.Integer, tmp.gamma);
                            cmd.Parameters.AddWithValue("@p_theta", NpgsqlTypes.NpgsqlDbType.Integer, tmp.theta);
                            cmd.Parameters.AddWithValue("@p_vega", NpgsqlTypes.NpgsqlDbType.Integer, tmp.vega);
                            cmd.Parameters.AddWithValue("@p_lo", NpgsqlTypes.NpgsqlDbType.Integer, tmp.lo);

                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                    }
                }
                catch (Exception ex)
                {
                    FileLog.PrintF("[insertOptkwfid]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
                }
            }
        }
Beispiel #2
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPTKWFID");
            //try {

            /*
             * sScrNo – 화면번호
             * sRQName – 사용자구분 명
             * sTrCode – Tran 명
             * sRecordName – Record 명
             * sPreNext – 연속조회 유무
             */
            String 종목코드 = "XXXX";
            int    nCnt = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);
            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();

            List <TB_OPTKWFID> lst = new List <TB_OPTKWFID>();


            if (nCnt > 0)
            {
                for (int i = 0; i < nCnt; i++)
                {
                    /*
                     * FileLog.PrintF("OPTKWFID ReceivedData 종목코드 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim());//[1]
                     * FileLog.PrintF("OPTKWFID ReceivedData 종목명 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim());//[2]
                     * FileLog.PrintF("OPTKWFID ReceivedData 현재가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());//[3]
                     * FileLog.PrintF("OPTKWFID ReceivedData 기준가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기준가").Trim());//[4]
                     * FileLog.PrintF("OPTKWFID ReceivedData 전일대비 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim());//[5]
                     * FileLog.PrintF("OPTKWFID ReceivedData 전일대비기호 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비기호").Trim());//[6]
                     * FileLog.PrintF("OPTKWFID ReceivedData 등락율 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim());//[7]
                     * FileLog.PrintF("OPTKWFID ReceivedData 거래량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim());//[8]
                     * FileLog.PrintF("OPTKWFID ReceivedData 거래대금 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래대금").Trim());//[9]
                     * FileLog.PrintF("OPTKWFID ReceivedData 체결량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결량").Trim());//[10]
                     * FileLog.PrintF("OPTKWFID ReceivedData 체결강도 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결강도").Trim());//[11]
                     * FileLog.PrintF("OPTKWFID ReceivedData 전일거래량대비 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일거래량대비").Trim());//[12]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도호가").Trim());//[13]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수호가").Trim());//[14]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도1차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도1차호가").Trim());//[15]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도2차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도2차호가").Trim());//[16]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도3차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도3차호가").Trim());//[17]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도4차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도4차호가").Trim());//[18]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매도5차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도5차호가").Trim());//[19]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수1차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수1차호가").Trim());//[20]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수2차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수2차호가").Trim());//[21]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수3차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수3차호가").Trim());//[22]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수4차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수4차호가").Trim());//[23]
                     * FileLog.PrintF("OPTKWFID ReceivedData 매수5차호가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수5차호가").Trim());//[24]
                     * FileLog.PrintF("OPTKWFID ReceivedData 상한가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "상한가").Trim());//[25]
                     * FileLog.PrintF("OPTKWFID ReceivedData 하한가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "하한가").Trim());//[26]
                     * FileLog.PrintF("OPTKWFID ReceivedData 시가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가").Trim());//[27]
                     * FileLog.PrintF("OPTKWFID ReceivedData 고가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim());//[28]
                     * FileLog.PrintF("OPTKWFID ReceivedData 저가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim());//[29]
                     * FileLog.PrintF("OPTKWFID ReceivedData 종가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종가").Trim());//[30]
                     * FileLog.PrintF("OPTKWFID ReceivedData 체결시간 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결시간").Trim());//[31]
                     * FileLog.PrintF("OPTKWFID ReceivedData 예상체결가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결가").Trim());//[32]
                     * FileLog.PrintF("OPTKWFID ReceivedData 예상체결량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결량").Trim());//[33]
                     * FileLog.PrintF("OPTKWFID ReceivedData 자본금 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "자본금").Trim());//[34]
                     * FileLog.PrintF("OPTKWFID ReceivedData 액면가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "액면가").Trim());//[35]
                     * FileLog.PrintF("OPTKWFID ReceivedData 시가총액 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가총액").Trim());//[36]
                     * FileLog.PrintF("OPTKWFID ReceivedData 주식수 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "주식수").Trim());//[37]
                     * FileLog.PrintF("OPTKWFID ReceivedData 호가시간 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "호가시간").Trim());//[38]
                     * FileLog.PrintF("OPTKWFID ReceivedData 일자 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());//[39]
                     * FileLog.PrintF("OPTKWFID ReceivedData 우선매도잔량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매도잔량").Trim());//[40]
                     * FileLog.PrintF("OPTKWFID ReceivedData 우선매수잔량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매수잔량").Trim());//[41]
                     * FileLog.PrintF("OPTKWFID ReceivedData 우선매도건수 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매도건수").Trim());//[42]
                     * FileLog.PrintF("OPTKWFID ReceivedData 우선매수건수 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매수건수").Trim());//[43]
                     * FileLog.PrintF("OPTKWFID ReceivedData 총매도잔량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매도잔량").Trim());//[44]
                     * FileLog.PrintF("OPTKWFID ReceivedData 총매수잔량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매수잔량").Trim());//[45]
                     * FileLog.PrintF("OPTKWFID ReceivedData 총매도건수 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매도건수").Trim());//[46]
                     * FileLog.PrintF("OPTKWFID ReceivedData 총매수건수 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매수건수").Trim());//[47]
                     * FileLog.PrintF("OPTKWFID ReceivedData 패리티 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "패리티").Trim());//[48]
                     * FileLog.PrintF("OPTKWFID ReceivedData 기어링 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기어링").Trim());//[49]
                     * FileLog.PrintF("OPTKWFID ReceivedData 손익분기 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "손익분기").Trim());//[50]
                     * FileLog.PrintF("OPTKWFID ReceivedData ELW행사가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "ELW행사가").Trim());//[51]
                     * FileLog.PrintF("OPTKWFID ReceivedData 전환비율 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전환비율").Trim());//[52]
                     * FileLog.PrintF("OPTKWFID ReceivedData ELW만기일 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "ELW만기일").Trim());//[53]
                     * FileLog.PrintF("OPTKWFID ReceivedData 미결제약정 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "미결제약정").Trim());//[54]
                     * FileLog.PrintF("OPTKWFID ReceivedData 미결제전일대비 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "미결제전일대비").Trim());//[55]
                     * FileLog.PrintF("OPTKWFID ReceivedData 이론가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "이론가").Trim());//[56]
                     * FileLog.PrintF("OPTKWFID ReceivedData 내재변동성 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "내재변동성").Trim());//[57]
                     * FileLog.PrintF("OPTKWFID ReceivedData 델타 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "델타").Trim());//[58]
                     * FileLog.PrintF("OPTKWFID ReceivedData 감마 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "감마").Trim());//[59]
                     * FileLog.PrintF("OPTKWFID ReceivedData 세타 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "세타").Trim());//[60]
                     * FileLog.PrintF("OPTKWFID ReceivedData 베가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "베가").Trim());//[61]
                     * FileLog.PrintF("OPTKWFID ReceivedData 로 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "로").Trim());//[62]
                     */


                    /*
                     *[2020-04-18 00:45:39]OPTKWFID ReceivedData 종목코드 =>000390
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 종목명 =>삼화페인트
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 현재가 =>+5110
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 기준가 =>5040
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 전일대비 =>+70
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 전일대비기호 =>2
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 등락율 =>+1.39
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 거래량 =>50291
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 거래대금 =>256
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 체결량 =>+1
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 체결강도 =>108.71
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 전일거래량대비 =>+283.20
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도호가 =>+5120
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수호가 =>+5110
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도1차호가 =>+5120
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도2차호가 =>+5130
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도3차호가 =>+5140
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도4차호가 =>+5150
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매도5차호가 =>+5160
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수1차호가 =>+5110
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수2차호가 =>+5100
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수3차호가 =>+5090
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수4차호가 =>+5080
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 매수5차호가 =>+5070
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 상한가 =>+6550
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 하한가 =>-3530
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 시가 =>5040
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 고가 =>+5170
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 저가 =>5040
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 종가 =>+5110
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 체결시간 =>155926
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 예상체결가 =>+5110
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 예상체결량 =>334
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 자본금 =>132
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 액면가 =>500
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 시가총액 =>1351
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 주식수 =>26439
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 호가시간 =>160000
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 일자 =>20200417
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 우선매도잔량 =>270
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 우선매수잔량 =>117
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 우선매도건수 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 우선매수건수 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 총매도잔량 =>7991
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 총매수잔량 =>12270
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 총매도건수 =>-1000
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 총매수건수 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 패리티 =>0.00
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 기어링 =>0.00
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 손익분기 =>0.00
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData ELW행사가 =>0
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 전환비율 =>0.0000
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData ELW만기일 =>00000000
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 미결제약정 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 미결제전일대비 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 이론가 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 내재변동성 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 델타 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 감마 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 세타 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 베가 =>
                     * [2020-04-18 00:45:39]OPTKWFID ReceivedData 로 =>
                     */



                    TB_OPTKWFID tb_optkwfid = new TB_OPTKWFID();

                    tb_optkwfid.stock_cd = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim(); //[0]
                    tb_optkwfid.stock_nm = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim();  //[1]

                    int 현재가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim(), out 현재가);
                    tb_optkwfid.curr_amt = 현재가;

                    int 기준가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기준가").Trim(), out 기준가);
                    tb_optkwfid.yesterday_amt = 기준가;

                    int 전일대비 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim(), out 전일대비);
                    tb_optkwfid.contrast_yesterday = 전일대비;

                    int 전일대비기호 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비기호").Trim(), out 전일대비기호);
                    tb_optkwfid.contrast_yesterday_symbol = 전일대비기호;

                    float 등락율 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim(), out 등락율);
                    tb_optkwfid.fluctuation_rt = 등락율;

                    int 거래량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim(), out 거래량);
                    tb_optkwfid.trade_qty = 거래량;

                    int 거래대금 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래대금").Trim(), out 거래대금);
                    tb_optkwfid.trade_amt = 거래대금;

                    int 체결량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결량").Trim(), out 체결량);
                    tb_optkwfid.contract_qty = 체결량;

                    float 체결강도 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결강도").Trim(), out 체결강도);
                    tb_optkwfid.contract_strength = 체결강도;

                    float 전일거래량대비 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일거래량대비").Trim(), out 전일거래량대비);
                    tb_optkwfid.yesterday_contrast_trade_rt = 전일거래량대비;

                    int 매도호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도호가").Trim(), out 매도호가);
                    tb_optkwfid.offered_amt = 매도호가;

                    int 매수호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수호가").Trim(), out 매수호가);
                    tb_optkwfid.bid_amt = 매수호가;

                    int 매도1차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도1차호가").Trim(), out 매도1차호가);
                    tb_optkwfid.offered_amt_one = 매도1차호가;

                    int 매도2차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도2차호가").Trim(), out 매도2차호가);
                    tb_optkwfid.offered_amt_two = 매도2차호가;

                    int 매도3차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도3차호가").Trim(), out 매도3차호가);
                    tb_optkwfid.offered_amt_three = 매도3차호가;

                    int 매도4차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도4차호가").Trim(), out 매도4차호가);
                    tb_optkwfid.offered_amt_four = 매도4차호가;

                    int 매도5차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도5차호가").Trim(), out 매도5차호가);
                    tb_optkwfid.offered_amt_five = 매도5차호가;

                    int 매수1차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수1차호가").Trim(), out 매수1차호가);
                    tb_optkwfid.bid_amt_one = 매수1차호가;

                    int 매수2차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수2차호가").Trim(), out 매수2차호가);
                    tb_optkwfid.bid_amt_two = 매수2차호가;

                    int 매수3차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수3차호가").Trim(), out 매수3차호가);
                    tb_optkwfid.bid_amt_three = 매수3차호가;

                    int 매수4차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수4차호가").Trim(), out 매수4차호가);
                    tb_optkwfid.bid_amt_four = 매수4차호가;

                    int 매수5차호가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매수5차호가").Trim(), out 매수5차호가);
                    tb_optkwfid.bid_amt_five = 매수5차호가;


                    int 상한가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "상한가").Trim(), out 상한가);
                    tb_optkwfid.upper_amt_lmt = 상한가;

                    int 하한가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "하한가").Trim(), out 하한가);
                    tb_optkwfid.lower_amt_lmt = 하한가;

                    int 시작가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시작가").Trim(), out 시작가);
                    tb_optkwfid.start_amt = 시작가;

                    int 고가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim(), out 고가);
                    tb_optkwfid.high_amt = 고가;

                    int 저가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim(), out 저가);
                    tb_optkwfid.low_amt = 저가;

                    int 종가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종가").Trim(), out 종가);
                    tb_optkwfid.clsg_amt = 종가;

                    tb_optkwfid.contract_time = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결시간").Trim();//[1]

                    int 예상체결가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결가").Trim(), out 예상체결가);
                    tb_optkwfid.expectation_contract_amt = 예상체결가;


                    int 예상체결수량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결수량").Trim(), out 예상체결수량);
                    tb_optkwfid.expectation_contract_qty = 예상체결수량;

                    int 자본금 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "자본금").Trim(), out 자본금);
                    tb_optkwfid.capital_amt = 자본금;

                    int 액면가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "액면가").Trim(), out 액면가);
                    tb_optkwfid.face_amt = 액면가;

                    int 시가총액 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가총액").Trim(), out 시가총액);
                    tb_optkwfid.total_mrkt_amt = 시가총액;

                    int 상장주식수 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "상장주식수").Trim(), out 상장주식수);
                    tb_optkwfid.stock_cnt = 상장주식수;

                    tb_optkwfid.hoga_time = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "호가시간").Trim(); //[1]
                    tb_optkwfid.stock_dt  = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim();   //[1]

                    int 우선매도잔량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매도잔량").Trim(), out 우선매도잔량);
                    tb_optkwfid.fst_offered_balance = 우선매도잔량;

                    int 우선매수잔량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매수잔량").Trim(), out 우선매수잔량);
                    tb_optkwfid.fst_bid_balance = 우선매수잔량;

                    int 우선매도건수 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매도건수").Trim(), out 우선매도건수);
                    tb_optkwfid.fst_offered_qty = 우선매도건수;

                    int 우선매수건수 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "우선매수건수").Trim(), out 우선매수건수);
                    tb_optkwfid.fst_bid_qty = 우선매수건수;

                    int 총매도잔량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매도잔량").Trim(), out 총매도잔량);
                    tb_optkwfid.tot_offered_balance = 총매도잔량;

                    int 총매수잔량 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매수잔량").Trim(), out 총매수잔량);
                    tb_optkwfid.tot_bid_balance = 총매수잔량;

                    int 총매도건수 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매도건수").Trim(), out 총매도건수);
                    tb_optkwfid.tot_offered_qty = 총매도건수;

                    int 총매수건수 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매수건수").Trim(), out 총매수건수);
                    tb_optkwfid.tot_bid_qty = 총매수건수;

                    float 패리티 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "패리티").Trim(), out 패리티);
                    tb_optkwfid.parity_rt = 패리티;

                    float 기어링 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기어링").Trim(), out 기어링);
                    tb_optkwfid.gearing = 기어링;

                    float 손익분기 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "손익분기").Trim(), out 손익분기);
                    tb_optkwfid.break_even_point = 기어링;

                    int ELW행사가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "ELW행사가").Trim(), out ELW행사가);
                    tb_optkwfid.elw_strike_amt = ELW행사가;

                    float 전환비율 = 0;
                    float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전환비율").Trim(), out 전환비율);
                    tb_optkwfid.conversion_rt = 전환비율;

                    tb_optkwfid.elw_expiry_dt = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "ELW만기일").Trim();//[1]

                    int 미결제약정 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "미결제약정").Trim(), out 미결제약정);
                    tb_optkwfid.open_interest = 미결제약정;

                    int 미결제전일대비 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "미결제전일대비").Trim(), out 미결제전일대비);
                    tb_optkwfid.contrast_open_interest = 미결제전일대비;


                    int 이론가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "이론가").Trim(), out 이론가);
                    tb_optkwfid.theorist_amt = 이론가;

                    int 내재변동성 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "내재변동성").Trim(), out 내재변동성);
                    tb_optkwfid.implied_volatility = 내재변동성;

                    int 델타 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "델타").Trim(), out 델타);
                    tb_optkwfid.delta = 델타;

                    int 감마 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "감마").Trim(), out 감마);
                    tb_optkwfid.gamma = 감마;


                    int 세타 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "세타").Trim(), out 세타);
                    tb_optkwfid.theta = 세타;

                    int 베가 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "베가").Trim(), out 베가);
                    tb_optkwfid.vega = 베가;

                    int 로 = 0;
                    int.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "로").Trim(), out 로);
                    tb_optkwfid.lo = 로;

                    //(8025-8089)/8089*100
                    //24005=23775+160+70
                    //24005-24575=-570
                    //24805
                    lst.Add(tb_optkwfid);
                }
            }

            //이것은 연속적이지 않기 때문에 바로 제거 한다.
            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.insertOptkwfid(lst);
        }