Beispiel #1
2
 public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e)
 {
     /*
     
         [27] = (최우선)매도호가         //(0)
     	[28] = (최우선)매수호가         //(1)
     */
     FileLog.PrintF(String.Format("최우선_매도호가 : {0} ==>", axKHOpenAPI.GetCommRealData(e.sRealType, 27).Trim()));   //[0]
     FileLog.PrintF(String.Format("최우선_매수호가 : {0} ==>", axKHOpenAPI.GetCommRealData(e.sRealType, 28).Trim()));     //[1]
     FileLog.PrintF(String.Format("종목코드 : {0} ==>", e.sRealKey.ToString().Trim()));
     FileLog.PrintF(String.Format("RealName : {0} ==>", e.sRealType.ToString().Trim()));
     FileLog.PrintF(String.Format("sRealData : {0} ==>", e.sRealData.ToString().Trim()));
                 
     String 현재시간 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
     REAL10003_Data real10003_data = new REAL10003_Data();
     real10003_data.현재시간 = 현재시간;
     real10003_data.최우선_매도호가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 27).Trim());         //[0]
     real10003_data.최우선_매수호가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 28).Trim());         //[1]
     real10003_data.종목코드 = e.sRealKey.ToString().Trim(); //[2]
     real10003_data.RealName = e.sRealType.ToString().Trim(); //[3]
     
     SendDirectFile(real10003_data);
     SendDirectDb(real10003_data);
 }
Beispiel #2
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell) {
            /*
            
 [ OPW00003 : 추정자산조회요청 ]
 1. Open API 조회 함수 입력값을 설정합니다.
	계좌번호 = 전문 조회할 보유계좌번호
	SetInputValue("계좌번호"	,  "입력값 1");
	비밀번호 = 사용안함(공백)
	SetInputValue("비밀번호"	,  "입력값 2");
	상장폐지조회구분 = 0:전체, 1:상장폐지종목제외
	SetInputValue("상장폐지조회구분"	,  "입력값 3");    
 2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	CommRqData( "RQName"	,  "OPW00003"	,  "0"	,  "화면번호"); 
            */

            FileLog.PrintF("OPT10001:Run sRQNAME=>" + spell.sRQNAME);
            FileLog.PrintF("OPT10001:Run sTrCode=>" + spell.sTrCode);
            FileLog.PrintF("OPT10001:Run nPrevNext=>" + spell.nPrevNext);
            FileLog.PrintF("OPT10001:Run sScreenNo=>" + spell.sScreenNo);
            FileLog.PrintF("OPT10001:Run 계좌번호=>" + spell.accountNum);
            FileLog.PrintF("OPT10001:Run 비밀번호=>" + spell.password);

            axKHOpenAPI.SetInputValue("계좌번호", spell.accountNum);
            axKHOpenAPI.SetInputValue("비밀번호", spell.password);
            axKHOpenAPI.SetInputValue("상장폐지조회구분", "0");// 0:전체, 1:상장폐지종목제외
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
        public void runReceiveTrData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) {
            if (IgnoreReceiveTrData(e.sTrCode) == false) { 
                ReceiveTrData rt = getReceiveTrData(e.sTrCode);
                rt.ReceivedData(axKHOpenAPI, e);
            }


        }
Beispiel #4
0
 private void axKHOpenAPI_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e)
 {
     if (Error.IsError(e.nErrCode))
     {
         Logger(Log.일반, "[로그인 처리결과] " + Error.GetErrorMessage());
     }
     else
     {
         Logger(Log.에러, "[로그인 처리결과] " + Error.GetErrorMessage());
     }
 }
Beispiel #5
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
           FileLog.PrintF("ReceivedData OPW00003");
           try {
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();


                String 조회일자 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                /*추정예탁자산*/
                sb.Append("{0}|{1}|{2}");
                String tmp = sb.ToString();
                String 계좌번호 = "XXXXXXXXXX";
                //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}|accountNum:{3}";
                String key = String.Format(keyLayout
                    , e.sRQName
                    , e.sTrCode
                    , e.sScrNo
                    , 계좌번호
                );
    //            int nCnt = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName);  이거 무조건 0이다.
                String 추정예탁자산 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "추정예탁자산").Trim();//[0]
                String tmp1 = String.Format(tmp
                , 조회일자
                , 계좌번호
                , 추정예탁자산
                );
                sbAll.AppendLine(tmp1);
                String ret = sbAll.ToString();
                FileLog.PrintF("ReceivedData OPW00003 ret=>" + ret);
                ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                //this.SetRealRemove(axKHOpenAPI, "ALL", "ALL");
                AppLib.getClass1Instance().removeStockCodeDictionary(keyStockCode);
                AppLib.getClass1Instance().removeSpellDictionary(key);
                Send(key, ret, "OPW00003");
            } catch (Exception ex)
           {
               FileLog.PrintF("[ALERT-ReceivedData-OPW00003]Exception ex=" + ex.Message);
            
           }
        }
Beispiel #6
0
 private void axKHOpenAPI_OnReceiveTrCondition(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrConditionEvent e)
 {
     FileLog.PrintF("====================axKHOpenAPI_OnReceiveTrCondition===============================");
     FileLog.PrintF("[화면번호] : " + e.sScrNo);
     FileLog.PrintF("[종목리스트] : " + e.strCodeList);
     FileLog.PrintF("[조건명] : " + e.strConditionName);
     FileLog.PrintF("[조건명 인덱스 ] : " + e.nIndex.ToString());
     FileLog.PrintF("[연속조회] : " + e.nNext.ToString());
     Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveTrCondition===============================");
     Logger(Log.조회, "[화면번호] : " + e.sScrNo);
     Logger(Log.조회, "[종목리스트] : " + e.strCodeList);
     Logger(Log.조회, "[조건명] : " + e.strConditionName);
     Logger(Log.조회, "[조건명 인덱스 ] : " + e.nIndex.ToString());
     Logger(Log.조회, "[연속조회] : " + e.nNext.ToString());
 }
Beispiel #7
0
 private void axKHOpenAPI_OnReceiveRealCondition(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealConditionEvent e)
 {
     FileLog.PrintF("====================axKHOpenAPI_OnReceiveRealCondition===============================");
     Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveRealCondition===============================");
     Logger(Log.실시간, "========= 조건조회 실시간 편입/이탈 ==========");
     Logger(Log.실시간, "[종목코드] : " + e.sTrCode);
     Logger(Log.실시간, "[실시간타입] : " + e.strType);
     Logger(Log.실시간, "[조건명] : " + e.strConditionName);
     Logger(Log.실시간, "[조건명 인덱스] : " + e.strConditionIndex);
 }
Beispiel #8
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell) {
            /*
 [ opt10085 : 계좌수익률요청 ]
 1. Open API 조회 함수 입력값을 설정합니다.
	계좌번호 = 전문 조회할 보유계좌번호
	SetInputValue("계좌번호"	,  "입력값 1");
 2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	CommRqData( "RQName"	,  "opt10085"	,  "0"	,  "화면번호"); 
            */
            FileLog.PrintF("OPT10001:Run sRQNAME=>" + spell.sRQNAME);
            FileLog.PrintF("OPT10001:Run sTrCode=>" + spell.sTrCode);
            FileLog.PrintF("OPT10001:Run nPrevNext=>" + spell.nPrevNext);
            FileLog.PrintF("OPT10001:Run sScreenNo=>" + spell.sScreenNo);
            FileLog.PrintF("OPT10001:Run 계좌번호=>" + spell.accountNum);

            axKHOpenAPI.SetInputValue("계좌번호", spell.accountNum);
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
 public abstract void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e);
Beispiel #10
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell)
        {
            /*
1. Open API 조회 함수 입력값을 설정합니다.
종목코드 = 전문 조회할 종목코드
SetInputValue("종목코드"	,  "입력값 1");
기준일자 = YYYYMMDD(20160101 연도4자리, 월 2자리, 일 2자리 형식)
SetInputValue("기준일자"	,  "입력값 2");
수정주가구분 = 0 or 1, 수신데이터 1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락
SetInputValue("수정주가구분"	,  "입력값 3");
2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
CommRqData( "RQName"	,  "opt10081"	,  "0"	,  "화면번호");
*/

            FileLog.PrintF("OPT10081:Run sRQNAME=> " + spell.sRQNAME);
            FileLog.PrintF("OPT10081:Run sTrCode=> " + spell.sTrCode);
            FileLog.PrintF("OPT10081:Run nPrevNext=> " + spell.nPrevNext);
            FileLog.PrintF("OPT10081:Run sScreenNo=> " + spell.sScreenNo);
            FileLog.PrintF("OPT10081:Run 종목코드=> " + spell.stockCode);
            FileLog.PrintF("OPT10081:Run 기준일자=> " + spell.endDate);
            FileLog.PrintF("OPT10081:Run 수정주가구분=> 1");

            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);
            axKHOpenAPI.SetInputValue("기준일자", spell.endDate);
            axKHOpenAPI.SetInputValue("수정주가구분", "1");/*수정주가 구분 이것도 무조건 1로 하자. */
                                                     /*  수정주가구분 = 0 or 1, 수신데이터 1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락
                                                         SetInputValue("수정주가구분"	,  "입력값 3"); */
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #11
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            /*
            sScrNo – 화면번호
            sRQName – 사용자구분 명
            sTrCode – Tran 명
            sRecordName – Record 명
            sPreNext – 연속조회 유무
            */

            String stockDate = DateTime.Today.ToString("yyyyMMdd");
            

            StringBuilder sbAll = new StringBuilder();
            StringBuilder sb = new StringBuilder();
            String 계좌명 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "계좌명").Trim();  //account_name
            String 지점명 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "지점명").Trim();  //place_name
            int 예수금= Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "예수금").Trim());   //deposit
            int D2추정예수금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "D+2추정예수금").Trim()); //twodays_after_deposit
            int 유가잔고평가액 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "유가잔고평가액").Trim()); //stock_evaluation,
            int 예탁자산평가액 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "예탁자산평가액").Trim()); //:stock_balance_evaluation,
            int 총매입금액 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "총매입금액").Trim()); //:total_amount_of_purchase,
            int 추정예탁자산 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "추정예탁자산").Trim()); //:estimation_deposit
            int 매도담보대출금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "매도담보대출금").Trim()); //stock_collacteral_loan,
            int 당일투자원금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당일투자원금").Trim()); //:today_investment_money,
            int 당월투자원금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당월투자원금").Trim()); //:this_month_investment_money,
            int 누적투자원금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "누적투자원금").Trim()); //:accumulative_investment_money,
            int 당일투자손익 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당일투자손익").Trim()); //:today_profit_and_loss,
            int 당월투자손익 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당월투자손익").Trim()); //:today_profit_and_loss,
            int 누적투자손익 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "누적투자손익").Trim()); //:today_profit_and_loss,
            int 당일손익율 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당일손익율").Trim());   //:today_profit_and_loss_rate
            int 당월손익율 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당월손익율").Trim()); //:this_month_profit_and_loss_rate
            int 누적손익율 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "누적손익율").Trim());  //:accumulative_profit_and_loss_rate
            int 출력건수 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "출력건수").Trim()); //:accumulative_profit_and_loss_rate
            sb.Append("날짜:{0}|계좌명:{1}|지점명:{2}|예수금:{3}|D+2추정예수금:{4}|유가잔고평가액:{5}|예탁자산평가액:{6}|총매입금액:{7}|추정예탁자산:{8}");
            sb.Append("|매도담보대출금:{9}|당일투자원금:{10}|당월투자원금:{11}|누적투자원금:{12}|당일투자손익:{13}|당월투자손익:{14}|누적투자손익:{15}");
            sb.Append("|당일손익율:{16}|당월손익율:{17}|누적손익율:{18}|출력건수:{19}");
            String tmp = sb.ToString();
            String tmp1=String.Format(tmp
                , stockDate
                , 계좌명
                , 지점명
                , 예수금
                , D2추정예수금
                , 유가잔고평가액
                , 예탁자산평가액
                , 총매입금액
                , 추정예탁자산
                , 매도담보대출금
                , 당일투자원금
                , 당월투자원금
                , 누적투자원금
                , 당일투자손익
                , 당월투자손익
                , 누적투자손익
                , 당일손익율
                , 당월손익율
                , 누적손익율
                , 출력건수
            );
            sbAll.AppendLine(tmp1);
            
            int nCnt = axKHOpenAPI.GetRepeatCnt(e.sTrCode, e.sRQName); 
            for(int i = 1; i < nCnt; i++)
            {
                String 계좌명1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "계좌명").Trim();
                String 지점명1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "지점명").Trim(); 
                int 예수금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예수금").Trim()); 
                int D2추정예수금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "D+2추정예수금").Trim()); 
                int 유가잔고평가액1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "유가잔고평가액").Trim()); 
                int 예탁자산평가액1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예탁자산평가액").Trim()); 
                int 총매입금액1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "총매입금액").Trim()); 
                int 추정예탁자산1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "추정예탁자산").Trim()); 
                int 매도담보대출금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매도담보대출금").Trim()); 
                int 당일투자원금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일투자원금").Trim()); 
                int 당월투자원금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당월투자원금").Trim()); 
                int 누적투자원금1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "누적투자원금").Trim()); 
                int 당일투자손익1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일투자손익").Trim()); 
                int 당월투자손익1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당월투자손익").Trim()); 
                int 누적투자손익1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "누적투자손익").Trim()); 
                int 당일손익율1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일손익율").Trim());
                int 당월손익율1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, 0, "당월손익율").Trim());
                int 누적손익율1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "누적손익율").Trim()); 
                int 출력건수1 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "출력건수").Trim());

                tmp1=String.Format(tmp
                    , stockDate
                    , 계좌명1
                    , 지점명1
                    , 예수금1
                    , D2추정예수금1
                    , 유가잔고평가액1
                    , 예탁자산평가액1
                    , 총매입금액1
                    , 추정예탁자산1
                    , 매도담보대출금1
                    , 당일투자원금1
                    , 당월투자원금1
                    , 누적투자원금1
                    , 당일투자손익1
                    , 당월투자손익1
                    , 누적투자손익1
                    , 당일손익율1
                    , 당월손익율1
                    , 누적손익율1
                    , 출력건수1
                );
                sbAll.AppendLine(tmp1);
            }
            
            path = System.IO.Path.GetDirectoryName(path);
            path = path + "\\OPW00004_"+stockDate+".log";
            System.IO.StreamWriter file = new System.IO.StreamWriter(path, false);
            file.Write(sbAll.ToString());
            file.Close();
        }
Beispiel #12
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10059");
            try
            {
                /*
                sScrNo – 화면번호
                sRQName – 사용자구분 명
                sTrCode – Tran 명
                sRecordName – Record 명
                sPreNext – 연속조회 유무
                */
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();
                //sb.Append("일자:{0}|종목코드:{1}|현재가:{2}|거래량:{3}|거래대금:{4}|시가:{5}|고가:{6}|저가:{7}");
                //sb.Append("stock_date:{0}|current_price:{1}|current_price:{2}|trade_quantity:{3}|trade_price:{4}|start_price:{5}|high_price:{6}|low_price:{7}");

                /*일자 ,현재가,대비기호,전일대비,등락율,누적거래대금,개인투자자,외국인투자자,기관계,금융투자,보험,투신,기타금융,은행,연기금등,사모펀드,국가,기타법인,내외국인,종목코드,매매구분,금액수량구분*/
                sb.Append("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}|{13}|{14}|{15}|{16}|{17}|{18}|{19}|{20}|{21}");
                String tmp = sb.ToString();
                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);
                String startDate = spell.startDate;

                String lastStockDate = "";
                int startDate일자 = 0;
                if (!int.TryParse(startDate, out startDate일자))
                {
                    startDate일자 = 0;
                }

                if (nCnt > 0)
                {
                    for (int i = 0; i < nCnt; i++)
                    {                   
                        int 일자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());//[0]
                        int 현재가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());//[1]
                        float 대비기호 = 0;//[2]

                        if(!float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대비기호").Trim(),out 대비기호))
                        {
                        }
                    
                        int 전일대비 = 0;//[3]
                        if (!Int32.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim(), out 전일대비))
                        {
                            전일대비 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim().Replace("--", "-"));
                        }
                        float 등락율 = 0;//[4]

                        if (!float.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim(), out 등락율))
                        {
                            등락율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim());
                        }
                    
                        int 누적거래대금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "누적거래대금").Trim());//[5
                        int 개인투자자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "개인투자자").Trim());//[6]
                        int 외국인투자자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "외국인투자자").Trim());//[7]
                        int 기관계 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기관계").Trim());//[8]
                        int 금융투자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "금융투자").Trim());//[9]
                        int 보험 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "보험").Trim());//[10]
                        int 투신 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "투신").Trim());//[11]
                        int 기타금융 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기타금융").Trim());//[12]
                        int 은행 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "은행").Trim());//[13]
                        int 연기금등 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "연기금등").Trim());//[14]
                        int 사모펀드 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "사모펀드").Trim());//[15]
                        int 국가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "국가").Trim());//[16]
                        int 기타법인 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기타법인").Trim());//[17]
                        int 내외국인 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "내외국인").Trim());//[18]

                        String tmp1 = String.Format(tmp,
                            일자 ,
                            현재가,
                            대비기호,
                            전일대비,
                            등락율,
                            누적거래대금,
                            개인투자자,
                            외국인투자자,
                            기관계,
                            금융투자,
                            보험,
                            투신,
                            기타금융,
                            은행,
                            연기금등,
                            사모펀드,
                            국가,
                            기타법인,
                            내외국인,
                            종목코드,
                            spell.buyOrSell,
                            spell.priceOrAmount
                        );
                        lastStockDate = 일자.ToString();
                        if (startDate != null)
                        {
                            if (startDate.Equals("ZERO") || startDate.Equals("TWO"))
                            {
                                sbAll.AppendLine(tmp1);
                            }
                            else
                            {
                                if (일자 >= startDate일자)
                                {
                                    sbAll.AppendLine(tmp1);
                                } else
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            sbAll.AppendLine(tmp1);
                        }
                    }
                }
                else
                {
                    종목코드 = "00000";
                }

                int prevNext = 0;
                if (!int.TryParse(e.sPrevNext, out prevNext))
                {
                    prevNext = 0;
                }

                ScreenNumber.getClass1Instance().DisconnectRealData( e.sScrNo);
                ScreenNumber.getClass1Instance().SetRealRemove( "ALL", "ALL");

                putReceivedQueueAndsetNextSpell(key,sbAll.ToString(), prevNext, lastStockDate);
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10059]Exception ex=" + ex.Message);
            }
        }
Beispiel #13
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {

            /*
       sScrNo – 화면번호
       sRQName – 사용자구분 명
       sTrCode – Tran 명
       sRecordName – Record 명
       sPreNext – 연속조회 유무
       */
            FileLog.PrintF("ReceivedData OPT10080");
            try
            {
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();
                //sb.Append("일자:{0}|종목코드:{1}|현재가:{2}|거래량:{3}|거래대금:{4}|시가:{5}|고가:{6}|저가:{7}");
                //sb.Append("stock_date:{0}|stock_code:{1}|current_price:{2}|trade_quantity:{3}|trade_price:{4}|start_price:{5}|high_price:{6}|low_price:{7}");
                sb.Append("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}|{13}");
                String tmp = sb.ToString();
                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();
                String startDate = spell.startDate;
                String lastStockDate = "";
                long startDate일자 = 0;
                //시분초를 더함
                if (!long.TryParse(startDate+"000000", out startDate일자))
                {
                    startDate일자 = 0;
                }

                if (nCnt > 0)
                {
                    String 종목코드1 = "";
                    for (int i = 0; i < nCnt; i++)
                    {
                        if (i == 0)
                        {
                            종목코드1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim();           //[0] 싱글 -첫번째에만 나타남
                        }
                    
                        int 현재가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());      //[1]
                        int 거래량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim());      //[2]
                        String 체결시간 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "체결시간").Trim();              //[3]
                        int 시가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가").Trim());            //[4]
                        int 고가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim());            //[5]
                        int 저가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim());            //[6]
                        int 수정주가구분 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가구분") !=null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가구분").ToString().Trim().Equals("")){
                            수정주가구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가구분").Trim());    //[7]
                        }
                        float 수정비율 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정비율") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정비율").ToString().Trim().Equals("")){
                            수정비율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정비율").Trim());            //[8]
                        }
                        int 대업종구분 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대업종구분") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대업종구분").ToString().Trim().Equals("")){
                            대업종구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대업종구분").Trim());        //[9]
                        }
                        int 소업종구분 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "소업종구분") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "소업종구분").ToString().Trim().Equals(""))
                        {
                            소업종구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "소업종구분").Trim());        //[10]
                        }
                        int 종목정보 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목정보") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목정보").ToString().Trim().Equals(""))
                        {
                            종목정보 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목정보").Trim());            //[11]
                        }
                        int 수정주가이벤트 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가이벤트") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가이벤트").ToString().Trim().Equals(""))
                        {
                            수정주가이벤트 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가이벤트").Trim());//[12]
                        }
                        int 전일종가 = 0;
                        if (axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일종가") != null && !axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일종가").ToString().Trim().Equals(""))
                        {
                            전일종가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일종가").Trim());            //[13]
                        }
    
                        String tmp1 = String.Format(tmp
                            , 종목코드1
                            , 현재가
                            , 거래량
                            , 체결시간
                            , 시가
                            , 고가
                            , 저가
                            , 수정주가구분
                            , 수정비율
                            , 대업종구분
                            , 소업종구분
                            , 종목정보
                            , 수정주가이벤트
                            , 전일종가
                        );
                        //String str일자 = 체결시간.Substring(0, 8);
                        long 일자 = long.Parse(체결시간);
                        lastStockDate = 체결시간;

                        if (startDate != null)
                        {
                            if (startDate.Equals("ZERO") || startDate.Equals("TWO"))
                            {
                                sbAll.AppendLine(tmp1);
                            }
                            else
                            {
                                if (일자 >= startDate일자)
                                {
                                    sbAll.AppendLine(tmp1);
                                } else
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            sbAll.AppendLine(tmp1);
                        }
                    }
                } else
                {
                    종목코드 = "00000";
                }

                int prevNext = 0;
                if (!int.TryParse(e.sPrevNext, out prevNext))
                {
                    prevNext = 0;
                }

                ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                putReceivedQueueAndsetNextSpell(key,sbAll.ToString(), prevNext, lastStockDate);
             }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10080]Exception ex=" + ex.Message);
            }

        }  
Beispiel #14
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell)
        {
            /*
            [opt10080: 주식분봉차트조회요청]
            1. Open API 조회 함수 입력값을 설정합니다.
            종목코드 = 전문 조회할 종목코드
            SetInputValue("종목코드"	,  "입력값 1");
            틱범위 = 1:1분, 3:3분, 5:5분, 10:10분, 15:15분, 30:30분, 45:45분, 60:60분
            SetInputValue("틱범위"	,  "입력값 2");
            수정주가구분 = 0 or 1, 수신데이터 1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락
            SetInputValue("수정주가구분"	,  "입력값 3");
            2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
            CommRqData( "RQName"	,  "opt10080"	,  "0"	,  "화면번호");
            */
            FileLog.PrintF("OPT10080:Run sRQNAME=> " + spell.sRQNAME);
            FileLog.PrintF("OPT10080:Run sTrCode=> " + spell.sTrCode);
            FileLog.PrintF("OPT10080:Run nPrevNext=> " + spell.nPrevNext);
            FileLog.PrintF("OPT10080:Run sScreenNo=> " + spell.sScreenNo);
            FileLog.PrintF("OPT10080:Run 종목코드=> " + spell.stockCode);
            FileLog.PrintF("OPT10080:Run 틱범위=> " + spell.tick);
            FileLog.PrintF("OPT10080:Run 수정주가구분=> 1");

            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);
            axKHOpenAPI.SetInputValue("틱범위", spell.tick);
            axKHOpenAPI.SetInputValue("수정주가구분", "1");/*수정주가 구분 이것도 무조건 1로 하자. */
                                                     /*  수정주가구분 = 0 or 1, 수신데이터 1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락
                                                         SetInputValue("수정주가구분"	,  "입력값 3"); */
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #15
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10014");
            try
            {
                /*
                sScrNo – 화면번호
                sRQName – 사용자구분 명
                sTrCode – Tran 명
                sRecordName – Record 명
                sPreNext – 연속조회 유무
                */
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();

                /*일자,종목코드 ,종가,전일대비기호,전일대비,등락율,거래량,공매도량,매매비중,공매도거래대금,공매도평균가*/
                sb.Append("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}");
                String tmp = sb.ToString();
                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();
                String startDate = spell.startDate;
                String lastStockDate = "";
                int startDate일자 = 0;
                if (!int.TryParse(startDate, out startDate일자))
                {
                    startDate일자 = 0;
                }

                if (nCnt > 0) {
                    for (int i = 0; i < nCnt; i++) {
                        int 일자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());//[0]
                        int 종가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종가").Trim());//[1]
                        int 전일대비기호 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비기호").Trim());//[2]
                        int 전일대비 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim());//[3]
                        float 등락율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim());//[4]
                        int 거래량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim());//[5]
                        int 공매도량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "공매도량").Trim());//[6]
                        float 매매비중 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매매비중").Trim());//[7]
                        int 공매도거래대금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "공매도거래대금").Trim());//[8]
                        int 공매도평균가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "공매도평균가").Trim());//[9]

                        String tmp1 = String.Format(tmp,
                            일자,
                            종목코드,
                            종가,
                            전일대비기호,
                            전일대비,
                            등락율,
                            거래량,
                            공매도량,
                            매매비중,
                            공매도거래대금,
                            공매도평균가
                        );
                        lastStockDate = 일자.ToString();
                        if (startDate != null)
                        {
                            if (startDate.Equals("ZERO") || startDate.Equals("TWO"))
                            {
                                sbAll.AppendLine(tmp1);
                            }
                            else
                            {
                                if (일자 >= startDate일자)
                                {
                                    sbAll.AppendLine(tmp1);
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            sbAll.AppendLine(tmp1);
                        }

                    }
                } else {
                    종목코드 = "00000";
                }

                int prevNext = 0;
                if (!int.TryParse(e.sPrevNext, out prevNext)) {
                    prevNext = 0;
                }
                ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                putReceivedQueueAndsetNextSpell(key,sbAll.ToString(), prevNext, lastStockDate);
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10014]Exception ex=" + ex.Message);
            }
        }
Beispiel #16
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell) {
            /*
 [ opt10001 : 주식기본정보요청 ]
  1. Open API 조회 함수 입력값을 설정합니다.
	종목코드 = 전문 조회할 종목코드
	SetInputValue("종목코드"	,  "181710;066570");    
 2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	CommRqData( "RQName"	,  "opt10001"	,  "0"	,  "화면번호"); 
            */

            FileLog.PrintF("OPT10001:Run sRQNAME=>" + spell.sRQNAME);
            FileLog.PrintF("OPT10001:Run sTrCode=>" + spell.sTrCode);
            FileLog.PrintF("OPT10001:Run nPrevNext=>" + spell.nPrevNext);
            FileLog.PrintF("OPT10001:Run sScreenNo=>" + spell.sScreenNo);
            FileLog.PrintF("OPT10001:Run 종목코드=>" + spell.stockCode);

            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #17
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10001");
            try { 
                /*
                sScrNo – 화면번호
                sRQName – 사용자구분 명
                sTrCode – Tran 명
                sRecordName – Record 명
                sPreNext – 연속조회 유무
                */
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();

                /*일자,종목코드 ,종가,전일대비기호,전일대비,등락율,거래량,공매도량,매매비중,공매도거래대금,공매도평균가*/
                sb.Append("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}|{11}|{12}|{13}|{14}|{15}|{16}|{17}|{18}|{19}|{20}|{21}|{22}|{23}|{24}|{25}|{26}|{27}|{28}|{29}|{30}|{31}|{32}|{33}|{34}|{35}|{36}|{37}|{38}|{39}|{40}|{41}|{42}");
                String tmp = sb.ToString();
                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
                    , 종목코드
                );
                String 일자 = DateTime.Now.ToString("yyyyMMdd");

                spell = AppLib.getClass1Instance().getSpell(key).ShallowCopy();

                //Array arr =(Array)axKHOpenAPI.GetCommDataEx(e.sTrCode, e.sRQName);
            
                if (nCnt > 0) {
                    for (int i = 0; i < nCnt; i++) {
                        String 종목코드1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim();//[0]
                        if (종목코드1.Equals(""))
                        {
                            종목코드1 = 종목코드;//일부 종목코드들은 아래 데이터가 아예 안나온다. ///51A077
                        }
                        String 종목명 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim();//[1]
                        int 결산월 = 0;
                        String str결산월=axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "결산월");
                        if (isNotNull(str결산월)==true)
                        {
                            결산월 = Int32.Parse(str결산월.Trim());//[2]
                        }
                        String str액면가 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "액면가");
                        float 액면가 = 0;
                        if (isNotNull(str액면가) == true)
                        {
                            액면가 = float.Parse(str액면가.Trim());//[3]
                        }
                        String str자본금 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "자본금");
                        int 자본금 = 0;
                        if (isNotNull(str자본금) == true)
                        {
                            자본금 = Int32.Parse(str자본금.Trim());//[4]
                        }
                        String str상장주식 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "상장주식");
                        int 상장주식 = 0;
                        if (isNotNull(str상장주식) == true)
                        {
                            상장주식 = Int32.Parse(str상장주식.Trim());//[5]
                        }
                        String str신용비율 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용비율");
                        float 신용비율 = 0;
                        if (isNotNull(str신용비율) == true)
                        {
                            신용비율 = float.Parse(str신용비율.Trim());//[6]
                        }
                        String str연중최고 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "연중최고");
                        int 연중최고 = 0;
                        if (isNotNull(str연중최고) == true)
                        {
                            연중최고 = int.Parse(str연중최고.Trim());//[7]
                        }
                        String str연중최저 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "연중최저");
                        int 연중최저 = 0;
                        if (isNotNull(str연중최저) == true)
                        {
                            연중최저 = int.Parse(str연중최저.Trim());//[8]
                        }
                        String str시가총액 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가총액");
                        int 시가총액 = 0;
                        if (isNotNull(str시가총액) == true)
                        {
                            시가총액 = int.Parse(str시가총액.Trim());//[9]
                        }
                        String str시가총액비중 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가총액비중");
                        int 시가총액비중 = 0;
                        if (isNotNull(str시가총액비중) == true)
                        {
                            시가총액비중 = Int32.Parse(str시가총액비중.Trim());//[10]
                        }
                        String str외인소진률 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "외인소진률");
                        float 외인소진률 = 0;
                        if (isNotNull(str외인소진률) == true)
                        {
                            외인소진률 = float.Parse(str외인소진률.Trim());//[11]
                        }
                        String str대용가 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대용가");
                        int 대용가 = 0;
                        if (isNotNull(str대용가) == true)
                        {
                            대용가 = int.Parse(str대용가.Trim());//[12]
                        }
                        String strPER = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "PER");
                        float PER = 0;
                        if (isNotNull(strPER) == true)
                        {
                            PER = float.Parse(strPER.Trim());//[13]
                        }
                        String strEPS = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "EPS");
                        int EPS = 0;
                        if (isNotNull(strEPS) == true)
                        {
                            EPS = int.Parse(strEPS.Trim());//[14]
                        }
                        String strROE = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "ROE");
                        float ROE = 0;
                        if (isNotNull(strROE) == true)
                        { 
                            ROE = float.Parse(strROE.Trim());//[15]    
                        }
                        String strPBR = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "PBR");
                        float PBR = 0;
                        if (isNotNull(strPBR) == true)
                        {
                            PBR = float.Parse(strPBR.Trim());//[16]    
                        }
                        String strEV = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "EV");
                        float EV = 0;
                        if (isNotNull(strEV) == true)
                        {
                            EV = float.Parse(strEV.Trim());//[17]    
                        }
                        String strBPS = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "BPS");
                        int BPS = 0;
                        if (isNotNull(strBPS) == true)
                        {
                            BPS = int.Parse(strBPS.Trim());//[18]    
                        }
                        String str매출액 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매출액");
                        int 매출액 = 0;
                        if (isNotNull(str매출액) == true)
                        { 
                            매출액 = Int32.Parse(str매출액.Trim());//[19]
                        }
                        String str영업이익 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "영업이익");
                        int 영업이익 = 0;
                        if (isNotNull(str영업이익) == true)
                        { 
                            영업이익 = Int32.Parse(str영업이익.Trim());//[20]
                        }
                        String strD250최고 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최고");
                        int D250최고 = 0;
                        if (isNotNull(strD250최고) == true)
                        {
                            D250최고 = Int32.Parse(strD250최고.Trim());//[21]
                        }
                        String strD250최저 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최저");
                        int D250최저 = 0;
                        if (isNotNull(strD250최저) == true)
                        {
                            D250최저 = Int32.Parse(strD250최저.Trim());//[22]
                        }


                    
                        int 시가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가").Trim());//[23]
                        int 고가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim());//[24]
                        int 저가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim());//[25]
                        int 상한가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "상한가").Trim());//[26]
                        int 하한가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "하한가").Trim());//[27]
                        int 기준가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "기준가").Trim());//[28]

                        String str예상체결가 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결가");
                        int 예상체결가 = 0;
                        if (isNotNull(str예상체결가) == true)
                        {
                            예상체결가 = Int32.Parse(str예상체결가.Trim());//[29]
                        }

                        String str예상체결수량 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "예상체결수량");
                        int 예상체결수량 = 0;
                        if (isNotNull(str예상체결수량) == true)
                        {
                            예상체결수량 = Int32.Parse(str예상체결수량.Trim());//[30]
                        }
                        String D250최고가일 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최고가일").Trim();//[31]
                        float D250최고가대비율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최고가대비율").Trim());//[32]
                        String D250최저가일 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최저가일").Trim();//[33]
                        float D250최저가대비율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "250최저가대비율").Trim());//[34]
                        int 현재가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());//[35]
                        int 대비기호 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대비기호").Trim());//[36]
                        int 전일대비 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일대비").Trim());//[37]
                        float 등락율 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "등락율").Trim());//[38]
                        int 거래량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim());//[39]
                        float 거래대비 = float.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래대비").Trim());//[40]
                        String 액면가단위 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "액면가단위").Trim();//[41]

                        String tmp1 = String.Format(tmp,
                            일자,
                            종목코드1,
                            종목명,
                            결산월,
                            액면가,
                            자본금,
                            상장주식,
                            신용비율,
                            연중최고,
                            연중최저,
                            시가총액,
                            시가총액비중,
                            외인소진률,
                            대용가,
                            PER,
                            EPS,
                            ROE,
                            PBR,
                            EV,
                            BPS,
                            매출액,
                            영업이익,
                            D250최고,
                            D250최저,
                            시가,
                            고가,
                            저가,
                            상한가,
                            하한가,
                            기준가,
                            예상체결가,
                            예상체결수량,
                            D250최고가일,
                            D250최고가대비율,
                            D250최저가일,
                            D250최저가대비율,
                            현재가,
                            대비기호,
                            전일대비,
                            등락율,
                            거래량,
                            거래대비,
                            액면가단위
                        );
                        sbAll.AppendLine(tmp1);
                    }
                } else {
                    종목코드 = "00000";
                }

                //이건 nPreNext가 항상 0이다. 당일 조회만 됨
                int prevNext = 0;
                if (!int.TryParse(e.sPrevNext, out prevNext)) {
                    prevNext = 0;
                }
                String lastStockDate = "";
                ScreenNumber.getClass1Instance().DisconnectRealData( e.sScrNo);
                ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                putReceivedQueueAndsetNextSpell(key,sbAll.ToString(), prevNext, lastStockDate);
            }
            catch(Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10001]Exception ex=" + ex.Message);
            }
        }
Beispiel #18
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10085");
            //try { 
                /*
                sScrNo – 화면번호
                sRQName – 사용자구분 명
                sTrCode – Tran 명
                sRecordName – Record 명
                sPreNext – 연속조회 유무
                */
                String 계좌번호 = "XXXXXXXXXX";
                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}|accountNum:{3}";
                String key = String.Format(keyLayout
                    , e.sRQName
                    , e.sTrCode
                    , e.sScrNo
                    , 계좌번호
                );

            List < OPT10085_Data >  opt10085_DataList = new List<OPT10085_Data>();


                if (nCnt > 0) {
                    for (int i = 0; i < nCnt; i++) {

                    FileLog.PrintF("OPT10085 ReceivedData 구매일자 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());//[0]
                    FileLog.PrintF("OPT10085 ReceivedData 종목코드 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim());//[1]
                    FileLog.PrintF("OPT10085 ReceivedData 종목명 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim());//[2]
                    FileLog.PrintF("OPT10085 ReceivedData 현재가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());//[3]
                    FileLog.PrintF("OPT10085 ReceivedData 매입가 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매입가").Trim());//[4]
                    FileLog.PrintF("OPT10085 ReceivedData 매입금액 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매입금액").Trim());//[5]
                    FileLog.PrintF("OPT10085 ReceivedData 보유수량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "보유수량").Trim());//[6]
                    FileLog.PrintF("OPT10085 ReceivedData 당일매도손익 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매도손익").Trim());//[7]
                    FileLog.PrintF("OPT10085 ReceivedData 당일매매수수료 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매매수수료").Trim());//[8]
                    FileLog.PrintF("OPT10085 ReceivedData 당일매매세금 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매매세금").Trim());//[9]
                    FileLog.PrintF("OPT10085 ReceivedData 신용구분 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용구분").Trim());//[10]
                    FileLog.PrintF("OPT10085 ReceivedData 대출일 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대출일").Trim());//[11]
                    FileLog.PrintF("OPT10085 ReceivedData 결제잔고 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "결제잔고").Trim());//[12]
                    FileLog.PrintF("OPT10085 ReceivedData 청산가능수량 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "청산가능수량").Trim());//[13]
                    FileLog.PrintF("OPT10085 ReceivedData 신용금액 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용금액").Trim());//[14]
                    FileLog.PrintF("OPT10085 ReceivedData 신용이자 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용이자").Trim());//[15]
                    FileLog.PrintF("OPT10085 ReceivedData 만기일 =>" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "만기일").Trim());//[16]



                    OPT10085_Data opt10085_Data = new OPT10085_Data();
                    opt10085_Data.구매일자 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim();//[0]
                    opt10085_Data.종목코드 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim();//[1]
                    opt10085_Data.종목명 =axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목명").Trim(); //[2]
                    int 현재가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim()); //[3]
                    opt10085_Data.현재가 = 현재가;
                    opt10085_Data.매입가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매입가").Trim()); //[4]
                    int 매입금액 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "매입금액").Trim()); //[5]
                    opt10085_Data.매입금액 = 매입금액;
                    int 보유수량= Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "보유수량").Trim()); //[6]
                    opt10085_Data.보유수량 = 보유수량;
                    opt10085_Data.당일매도손익 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매도손익").Trim());  //[7]
                        String str당일매매수수료 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매매수수료");
                    opt10085_Data.당일매매수수료 = 0; 
                        if (isNotNull(str당일매매수수료) == true)
                        {
                        opt10085_Data.당일매매수수료 = Int32.Parse(str당일매매수수료.Trim());//[8]
                        }
                    opt10085_Data.당일매매세금 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "당일매매세금").Trim()); //[9]
                    opt10085_Data.신용구분 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용구분").Trim();//[10]
                    opt10085_Data.대출일 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대출일").Trim();//[11]
                    opt10085_Data.결제잔고 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "결제잔고").Trim()); //[12]
                    opt10085_Data.청산가능수량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "청산가능수량").Trim()); //[13]
                    opt10085_Data.신용금액 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용금액").Trim()); //[14]
                    opt10085_Data.신용이자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "신용이자").Trim()); //[15]
                    opt10085_Data.만기일 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "만기일").Trim();//[16]

                        /*내가 만들 데이터*/
                        /*매입가에는 수수료가 포함안되어있다. 매입당시 수수료가 통장에서 빠져나가지만 내가 얼마나 수익이 났는지 확인하기 위해 
                        매입수수료와 매도 수수료를 합쳐서 수수료로 표시해준다.
                        수수료는 10원 미만 절삭 86원이면 80원임
                        */
                        //System.Math.Truncate()
                        int 평가금액 = Math.Abs(현재가) * 보유수량;
                        int 매입수수료 = Commission.GetKiwoomCommissionBuy(매입금액);
                        int 매도수수료 = Commission.GetKiwoomCommissionSell(평가금액);
                        int 수수료 = 매입수수료 + 매도수수료;
                        int 매도세금 =Commission.GetTaxSell(평가금액);
                    int 손익분기매입가 = 0;
                    if (보유수량 != 0)//이게 0일경우가 있다 매도를 한상태일경우 보유수량이 0으로 리스트에 계속 존재한다.
                    {
                        손익분기매입가 = (매입수수료 + 매도수수료 + 매도세금 + 매입금액) / 보유수량;  // 무조건오림
                    }
                    int 평가손익 = 평가금액 - (매입금액+수수료+매도세금);
                    // float 수익률 = (평가손익 / 매입금액) * 100;   //int끼리 나눠서... 소수점을 버리는구나.. 이런..
                    float 수익률 = 0;
                    if (매입금액 != 0)
                    {
                        수익률 = ((float)평가손익 / (float)매입금액) * 100;
                    }
                    int 손익금액 = (평가금액-매입금액);

                    float 손익율 = 0;
                    if (매입금액 != 0)
                    {
                        손익율 = ((float)손익금액 / (float)매입금액) * 100;
                    }

                    

                    opt10085_Data.평가금액=평가금액;
                    opt10085_Data.매입수수료 = 매입수수료;
                    opt10085_Data.매도수수료 = 매도수수료;
                    opt10085_Data.수수료 = 수수료;
                    opt10085_Data.매도세금 = 매도세금;
                    opt10085_Data.손익분기매입가 = 손익분기매입가;
                    opt10085_Data.평가손익 = 평가손익;
                    opt10085_Data.수익률 = 수익률;
                    opt10085_Data.손익금액 = 손익금액;
                    opt10085_Data.손익율 = 손익율;
                    opt10085_Data.계좌번호 = 계좌번호;
                    

                    FileLog.PrintF("OPT10085 ReceivedData 평가손익=>" + 평가손익);
                    FileLog.PrintF("OPT10085 ReceivedData 손익금액=>" + 손익금액);
                    FileLog.PrintF("OPT10085 ReceivedData 매입금액=>" + 매입금액);
                    FileLog.PrintF("OPT10085 ReceivedData 평가손익=>" + 평가손익);
                    FileLog.PrintF("OPT10085 ReceivedData 수익률=>" + 수익률);
                    FileLog.PrintF("OPT10085 ReceivedData 손익율=>" + 손익율);


                    //(8025-8089)/8089*100
                    //24005=23775+160+70
                    //24005-24575=-570
                    //24805
                    opt10085_DataList.Add(opt10085_Data);
                    }
                }
            //axKHOpenAPI.DisconnectRealData(e.sScrNo); 계좌 수익률 정보는  실시간 데이터간 데이터로 들어온다면... 실시간으로 처리하는것이 이익이다..
            //화면번호도 고정이면 좋을것 같다...
            FileLog.PrintF("ReceivedData OPT10085 opt10085_DataList.Count()=>" + opt10085_DataList.Count());
            AppLib.getClass1Instance().removeStockCodeDictionary(keyStockCode);
            AppLib.getClass1Instance().removeSpellDictionary(key);
            MyStock.getClass1Instance().reLoad(opt10085_DataList); //보내는처리 무엇이든.
                                                                    //}
                                                                    //catch(Exception ex)
                                                                    //{
                                                                    //    FileLog.PrintF("[ALERT-ReceivedData-OPT10085]Exception ex=" + ex.Message);
                                                                    //}
        }
Beispiel #19
0
        private void axKHOpenAPI_OnReceiveConditionVer(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveConditionVerEvent e)
        {
            FileLog.PrintF("====================axKHOpenAPI_OnReceiveConditionVer===============================");
            Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveConditionVer===============================");
            if (e.lRet == 1)
            {
                Logger(Log.일반, "[이벤트] 조건식 저장 성공");
                FileLog.PrintF("[이벤트] 조건식 저장 성공");
                String ret=axKHOpenAPI.GetConditionNameList(); // 인덱스1^조건명1;인덱스2^조건명2;인덱스3^조건명3;…  조건리스트를 불러온다.
                FileLog.PrintF("btn_GetConditionNameList_Click ret=>" + ret);
                UpdateDbConditionNameList(ret);
            }
            else
            {
                Logger(Log.에러, "[이벤트] 조건식 저장 실패 : " + e.sMsg);
                FileLog.PrintF("[이벤트] 조건식 저장 실패 : " + e.sMsg);
            }

        }
Beispiel #20
0
 private void axKHOpenAPI_OnReceiveTrData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
 {
     FileLog.PrintF("====================axKHOpenAPI_OnReceiveTrData===============================");
     FileLog.PrintF("axKHOpenAPI_OnReceiveTrData e.sRecordName=>" + e.sRecordName);
     FileLog.PrintF("axKHOpenAPI_OnReceiveTrData e.sRQName=>" + e.sRQName);
     FileLog.PrintF("axKHOpenAPI_OnReceiveTrData e.sScrNo=>" + e.sScrNo);
     FileLog.PrintF("axKHOpenAPI_OnReceiveTrData e.sTrCode=>" + e.sTrCode);
     Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveTrData===============================");
     ReceiveTrDataFactory rtf = ReceiveTrDataFactory.getClass1Instance();
     rtf.runReceiveTrData(axKHOpenAPI, e);
 }
Beispiel #21
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell)
        {
            /*
             [ OPT10059 : 종목별투자자기관별요청 ]
              1. Open API 조회 함수 입력값을 설정합니다.
	            일자 = YYYYMMDD (20160101 연도4자리, 월 2자리, 일 2자리 형식)
	            SetInputValue("일자"	,  "입력값 1");
                종목코드 = 전문 조회할 종목코드
	            SetInputValue("종목코드"	,  "입력값 2");
                금액수량구분 = 1:금액, 2:수량
	            SetInputValue("금액수량구분"	,  "입력값 3");
                매매구분 = 0:순매수, 1:매수, 2:매도
	            SetInputValue("매매구분"	,  "입력값 4");
                단위구분 = 1000:천주, 1:단주
	            SetInputValue("단위구분"	,  "입력값 5");
            2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	            CommRqData( "RQName"	,  "OPT10059"	,  "0"	,  "화면번호"); 
            */
            
            FileLog.PrintF("OPT10059:Run sRQNAME=> " + spell.sRQNAME);
            FileLog.PrintF("OPT10059:Run sTrCode=> " + spell.sTrCode);
            FileLog.PrintF("OPT10059:Run nPrevNext=> " + spell.nPrevNext);
            FileLog.PrintF("OPT10059:Run sScreenNo=> " + spell.sScreenNo);
            FileLog.PrintF("OPT10059:Run 일자=> " + spell.endDate);
            FileLog.PrintF("OPT10059:Run 종목코드=> " + spell.stockCode);
            FileLog.PrintF("OPT10059:Run 금액수량구분=> " + spell.priceOrAmount);
            FileLog.PrintF("OPT10059:Run 매매구분=> " + spell.buyOrSell);
            FileLog.PrintF("OPT10059:Run 단위구분=> 1");

            axKHOpenAPI.SetInputValue("일자", spell.endDate);
            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);           
            axKHOpenAPI.SetInputValue("금액수량구분", spell.priceOrAmount);   
            axKHOpenAPI.SetInputValue("매매구분", spell.buyOrSell); 
            axKHOpenAPI.SetInputValue("단위구분", "1"); /*단위구분 = 1000:천주, 1:단주   --수량단위구분 모조건 1   -금액은 무조건 백만원단위 */
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #22
0
 private void axKHOpenAPI_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e)
 {
     FileLog.PrintF("====================axKHOpenAPI_OnEventConnect===============================");
     Logger(Log.디버깅, "====================axKHOpenAPI_OnEventConnect===============================");
     if (Error.IsError(e.nErrCode))
     {
         Logger(Log.일반, "[로그인 처리결과] " + Error.GetErrorMessage());
         class1.Start();
         axKHOpenAPI.GetConditionLoad();
     }
     else
     {
         Logger(Log.에러, "[로그인 처리결과] " + Error.GetErrorMessage());
     }
 }
Beispiel #23
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell)
        {
/*
[OPW00004: 계좌평가현황요청]
1. Open API 조회 함수 입력값을 설정합니다.
계좌번호 = 전문 조회할 보유계좌번호
SetInputValue("계좌번호"	,  "입력값 1");
비밀번호 = 사용안함(공백)
SetInputValue("비밀번호"	,  "입력값 2");
상장폐지조회구분 = 0:전체, 1:상장폐지종목제외
SetInputValue("상장폐지조회구분"	,  "입력값 3");
비밀번호입력매체구분 = 00
SetInputValue("비밀번호입력매체구분"	,  "입력값 4");
2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
CommRqData( "RQName"	,  "OPW00004"	,  "0"	,  "화면번호");
*/
            axKHOpenAPI.SetInputValue("계좌번호", spell.stockCode);
            axKHOpenAPI.SetInputValue("비밀번호", spell.endDate);
            axKHOpenAPI.SetInputValue("상장폐지조회구분", "0");
            axKHOpenAPI.SetInputValue("비밀번호입력매체구분", "00");
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #24
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell) {
            /*
            [opt10014: 공매도추이요청]
            1. Open API 조회 함수 입력값을 설정합니다.
            종목코드 = 전문 조회할 종목코드
            SetInputValue("종목코드"	,  "입력값 1");
            시간구분 = 0:시작일, 1:기간
            SetInputValue("시간구분"	,  "입력값 2");
            시작일자 = YYYYMMDD(20160101 연도4자리, 월 2자리, 일 2자리 형식)
            SetInputValue("시작일자"	,  "입력값 3");
            종료일자 = YYYYMMDD(20160101 연도4자리, 월 2자리, 일 2자리 형식)
            SetInputValue("종료일자"	,  "입력값 4");
            2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
            CommRqData( "RQName"	,  "opt10014"	,  "0"	,  "화면번호");
            */
            FileLog.PrintF("OPT10014:Run sRQNAME=> " + spell.sRQNAME);
            FileLog.PrintF("OPT10014:Run sTrCode=> " + spell.sTrCode);
            FileLog.PrintF("OPT10014:Run nPrevNext=> " + spell.nPrevNext);
            FileLog.PrintF("OPT10014:Run sScreenNo=> " + spell.sScreenNo);
            FileLog.PrintF("OPT10014:Run 종목코드=> " + spell.stockCode);
            FileLog.PrintF("OPT10014:Run 시간구분=> " + "0");
            FileLog.PrintF("OPT10014:Run 시작일자=> " + spell.startDate);
            FileLog.PrintF("OPT10014:Run 종료일자=> " + spell.endDate);

            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);
            axKHOpenAPI.SetInputValue("시간구분", "0");  /*시간구분 = 0:시작일, 1:기간   --무조건 0으로 하자 1로할경우 범위가 넘어도 nPreNext가 2로 안나온다. */
            axKHOpenAPI.SetInputValue("시작일자", spell.startDate);
            axKHOpenAPI.SetInputValue("종료일자", spell.endDate);
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
Beispiel #25
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e)
        {
            /*
            
                [20] = 체결시간            //(0)
            	[10] = 현재가              //(1)
	            [11] = 전일대비            //(2)
	            [12] = 등락율              //(3)
	            [27] = (최우선)매도호가    //(4)
	            [28] = (최우선)매수호가    //(5)
                [15] = 거래량              //(6)
	            [13] = 누적거래량          //(7)
	            [14] = 누적거래대금        //(8)    
	            [16] = 시가                //(9)
	            [17] = 고가                //(10)
	            [18] = 저가                //(11)
	            [25] = 전일대비기호        //(12)
	            [26] = 전일거래량대비(계약,주)   //(13)
	            [29] = 거래대금증감              //(14)
	            [30] = 전일거래량대비(비율)      //(15)
	            [31] = 거래회전율                //(16)
	            [32] = 거래비용                  //(17)
                [228] = 체결강도                 //(18)
	            [311] = 시가총액(억)             //(19)
                [290] = 장구분                   //(20)
                [691] = KO접근도                 //(21)
	            [567] = 상한가발생시간           //(22) 
	            [568] = 하한가발생시간           //(23)
                
            */
            /*
            FileLog.PrintF(String.Format("체결시간=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 20).Trim()));   //[0]
            FileLog.PrintF(String.Format("현재가=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 10).Trim()));     //[1]
            FileLog.PrintF(String.Format("전일대비=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 11).Trim()));   //[2]
            FileLog.PrintF(String.Format("등락율=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 12).Trim()));     //[3]
            FileLog.PrintF(String.Format("(최우선)매도호가=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 27).Trim()));   //[4]
            FileLog.PrintF(String.Format("(최우선)매수호가=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 28).Trim()));   //[5]
            FileLog.PrintF(String.Format("거래량=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 15).Trim()));      //[6]
            FileLog.PrintF(String.Format("누적거래량=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 13).Trim()));   //[7]
            FileLog.PrintF(String.Format("누적거래대금=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 14).Trim())); //[8]
            FileLog.PrintF(String.Format("시가=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 16).Trim()));          //[9]
            FileLog.PrintF(String.Format("고가=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 17).Trim()));          //[10]
            FileLog.PrintF(String.Format("저가=>{0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 18).Trim()));         //[11]
            FileLog.PrintF(String.Format("전일대비기호=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 25).Trim()));  //[12]
            FileLog.PrintF(String.Format("전일거래량대비_계약_주=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 26).Trim()));  //[13]
            FileLog.PrintF(String.Format("거래대금증감=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 29).Trim()));             //[14]
            FileLog.PrintF(String.Format("전일거래량대비_비율=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 30).Trim()));      //[15]
            FileLog.PrintF(String.Format("거래회전율=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 31).Trim()));               //[16]
            FileLog.PrintF(String.Format("거래비용=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 32).Trim()));               //[17]
            FileLog.PrintF(String.Format("체결강도=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 228).Trim()));               //[18]
            FileLog.PrintF(String.Format("시가총액_억=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 311).Trim()));               //[19]
            FileLog.PrintF(String.Format("장구분=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 290).Trim()));               //[20]
            FileLog.PrintF(String.Format("KO접근도=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 691).Trim()));               //[21]
            FileLog.PrintF(String.Format("상한가발생시간=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 567).Trim()));         //[22]
            FileLog.PrintF(String.Format("하한가발생시간=> {0} ", axKHOpenAPI.GetCommRealData(e.sRealType, 568).Trim()));         //[23]
            FileLog.PrintF(String.Format("종목코드=> {0} ", e.sRealKey.ToString().Trim()));
            FileLog.PrintF(String.Format("RealName=> {0} ", e.sRealType.ToString().Trim()));
            FileLog.PrintF(String.Format("sRealData=> {0} ", e.sRealData.ToString().Trim()));
            */
            String 현재일자 = DateTime.Now.ToString("yyyy-MM-dd");
            String 체결시간TMP = axKHOpenAPI.GetCommRealData(e.sRealType, 20).Trim();           //[0]
            //체결시간이 6자리이므로 HHMMSS ==> HH:MM:SS로 바꿔야한다.
            String 체결시간 =체결시간TMP.Substring(0, 2)+":"+체결시간TMP.Substring(2, 2)+":"+체결시간TMP.Substring(4, 2);

            체결시간 = 현재일자 + " " + 체결시간;

            REAL10002_Data real10002_data = new REAL10002_Data();
            //String 현재시간 = DateTime.Now.ToString("yyyyMMdd HH:mm:ss:fff");
            real10002_data.체결시간 = 체결시간;
            real10002_data.현재가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 10).Trim());         //[1]
            real10002_data.전일대비 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 11).Trim());         //[2]
            real10002_data.등락율 = float.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 12).Trim());         //[3]
            real10002_data.매도호가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 27).Trim());         //[4]
            real10002_data.매수호가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 28).Trim());         //[5]
            real10002_data.거래량 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 15).Trim());         //[6]
            real10002_data.누적거래량 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 13).Trim());  //[7]
            real10002_data.누적거래대금 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 14).Trim());  //[8]
            real10002_data.시가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 16).Trim());  //[9]
            real10002_data.고가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 17).Trim());  //[10]
            real10002_data.저가 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 18).Trim());  //[11]
            real10002_data.전일대비기호 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 25).Trim());  //[12]
            real10002_data.전일거래량대비_계약_주 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 26).Trim()); //[13]
            real10002_data.거래대금증감 = decimal.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 29).Trim());  //[14]
            real10002_data.전일거래량대비_비율 = float.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 30).Trim());  //[15]
            real10002_data.거래회전율 = float.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 31).Trim());   //[16]
            real10002_data.거래비용 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 32).Trim());   //[17]
            real10002_data.체결강도 = float.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 228).Trim());   //[18]
            real10002_data.시가총액_억 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 311).Trim()); //[19]
            real10002_data.장구분 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 290).Trim()); //[20]
            real10002_data.KO접근도 = Int32.Parse(axKHOpenAPI.GetCommRealData(e.sRealType, 691).Trim()); //[21]
            real10002_data.상한가발생시간 = axKHOpenAPI.GetCommRealData(e.sRealType, 567).Trim(); //[22]
            real10002_data.하한가발생시간 = axKHOpenAPI.GetCommRealData(e.sRealType, 568).Trim(); //[23]
            real10002_data.종목코드 = e.sRealKey.ToString().Trim(); //[24]
            real10002_data.RealName = e.sRealType.ToString().Trim();

            MyStock.getClass1Instance().UpdateStockList(real10002_data);

         //   SendDirectFile(real10002_data);
            SendDirectDb(real10002_data);

        }
Beispiel #26
0
        private void axKHOpenAPI_OnReceiveMsg(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveMsgEvent e)
        {
            FileLog.PrintF("====================axKHOpenAPI_OnReceiveMsg===============================");
            Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveMsg===============================");
            Logger(Log.조회, "화면번호:{0} | RQName:{1} | TRCode:{2} | 메세지:{3}", e.sScrNo, e.sRQName, e.sTrCode, e.sMsg);
            FileLog.PrintF(String.Format("화면번호:{0} | RQName:{1} | TRCode:{2} | 메세지:{3}", e.sScrNo, e.sRQName, e.sTrCode, e.sMsg));

        }
Beispiel #27
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {

            /*
       sScrNo – 화면번호
       sRQName – 사용자구분 명
       sTrCode – Tran 명
       sRecordName – Record 명
       sPreNext – 연속조회 유무
       */
            FileLog.PrintF("ReceivedData OPT10081");
            try
            {
                StringBuilder sbAll = new StringBuilder();
                StringBuilder sb = new StringBuilder();
                //sb.Append("일자:{0}|종목코드:{1}|현재가:{2}|거래량:{3}|거래대금:{4}|시가:{5}|고가:{6}|저가:{7}");
                //sb.Append("stock_date:{0}|stock_code:{1}|current_price:{2}|trade_quantity:{3}|trade_price:{4}|start_price:{5}|high_price:{6}|low_price:{7}");
                sb.Append("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}");
                String tmp = sb.ToString();
                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
                    , 종목코드
                );

                FileLog.PrintF("keyStockCode1  ==" + keyStockCode);
                FileLog.PrintF("key1  ==" + key);

                spell = AppLib.getClass1Instance().getSpell(key).ShallowCopy();
                String startDate = spell.startDate;
                FileLog.PrintF("startDate  ==" + startDate);

                String lastStockDate = "";
                int startDate일자 = 0;
                if (!int.TryParse(startDate, out startDate일자))
                {
                    startDate일자 = 0;
                }

                if (nCnt > 0)
                {
                    for (int i = 0; i < nCnt; i++)
                    {
                        /*
                        if (i == 0) {
                            종목코드1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim();
                        }
                        */

                    

                        String 종목코드1 = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목코드").Trim();
                    
                        if (종목코드1 == null || 종목코드1.Trim().Equals(""))
                        {
                            종목코드1 = 종목코드;
                        }
                        // FileLog.PrintF("거래대금  ==" + axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래대금").Trim());

                        int 현재가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "현재가").Trim());
                        int 거래량 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래량").Trim());
                        int 거래대금 = 0;  //이게 INF 로 나올때가 있다.. 주식코드는 013900 두원중공업
                        if(!Int32.TryParse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "거래대금").Trim(),out 거래대금) )
                        {
                            거래대금 = 0;
                        }
                        int 일자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());
                        int 시가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "시가").Trim());
                        int 고가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "고가").Trim());
                        int 저가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "저가").Trim());
                        //              int 수정주가구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가구분").Trim());
                        //              int 수정비율 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정비율").Trim());
                        //              int 대업종구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "대업종구분").Trim());
                        //              int 소업종구분 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "소업종구분").Trim());
                        //              int 종목정보 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "종목정보").Trim());
                        //              int 수정주가이벤트 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "수정주가이벤트").Trim());
                        //             int 전일종가 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "전일종가").Trim());

                        String tmp1 = String.Format(tmp
                            , 일자
                            , 종목코드
                            , 현재가
                            , 거래량
                            , 거래대금
                            , 시가
                            , 고가
                            , 저가
                        );
                        lastStockDate = 일자.ToString();

                        if (startDate != null)
                        {
                            if (startDate.Equals("ZERO") || startDate.Equals("TWO"))
                            {
                                sbAll.AppendLine(tmp1);
                            }
                            else
                            {
                                if (일자 >= startDate일자)
                                {
                                    sbAll.AppendLine(tmp1);
                                } else
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            sbAll.AppendLine(tmp1);
                        }
                    }
                } else
                {
                    종목코드 = "00000";
                }

                int prevNext = 0;
                if (!int.TryParse(e.sPrevNext, out prevNext))
                {
                    prevNext = 0;
                }
                ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                putReceivedQueueAndsetNextSpell(key,sbAll.ToString(), prevNext, lastStockDate);
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10081]Exception ex=" + ex.Message);
            }
        }  
Beispiel #28
0
 private void axKHOpenAPI_OnReceiveRealData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveRealDataEvent e)
 {
 //    FileLog.PrintF("====================axKHOpenAPI_OnReceiveRealData===============================");
 //    Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveRealData===============================");
 //    FileLog.PrintF(String.Format("종목코드 : {0} | RealType : {1} | RealData : {2}", e.sRealKey, e.sRealType, e.sRealData));
     ReceiveRealDataFactory rtf = ReceiveRealDataFactory.getClass1Instance();
     rtf.runReceiveRealData(axKHOpenAPI, e);
     
 }
Beispiel #29
0
        private void axKHOpenAPI_OnReceiveChejanData(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveChejanDataEvent e)
        {
            /*주문이 들어가면 체결데이터가 이리들어온다고 한다...*/
            FileLog.PrintF("====================axKHOpenAPI_OnReceiveChejanData===============================");
            Logger(Log.디버깅, "====================axKHOpenAPI_OnReceiveChejanData===============================");
            FileLog.PrintF("axKHOpenAPI_OnReceiveChejanData e.sGubun =>" + e.sGubun);

            ReceiveChejanDataFactory rtf = ReceiveChejanDataFactory.getClass1Instance();
            rtf.runReceiveChejanData(axKHOpenAPI, e);

            if (e.sGubun == "0") //0은 주문접수 주문체결
            {
                Logger(Log.실시간, "구분 : 주문체결통보");
                Logger(Log.실시간, "주문/체결시간 : " + axKHOpenAPI.GetChejanData(908));
                Logger(Log.실시간, "종목명 : " + axKHOpenAPI.GetChejanData(302));
                Logger(Log.실시간, "주문수량 : " + axKHOpenAPI.GetChejanData(900));
                Logger(Log.실시간, "주문가격 : " + axKHOpenAPI.GetChejanData(901));
                Logger(Log.실시간, "체결수량 : " + axKHOpenAPI.GetChejanData(911));
                Logger(Log.실시간, "체결가격 : " + axKHOpenAPI.GetChejanData(910));
                Logger(Log.실시간, "=======================================");
            }
            else if (e.sGubun == "1")  //1은 반영된잔고를 보여준다.
            {
                Logger(Log.실시간, "구분 : 잔고통보");

            }
            else if (e.sGubun == "3")
            {
                Logger(Log.실시간, "구분 : 특이신호");
            }

        }
 public void runReceiveChejanData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveChejanDataEvent e) { 
     ReceiveChejanData rt = getReceiveChejanData(e.sGubun.Trim(), axKHOpenAPI.GetChejanData(913).ToString().Trim());
     if(rt!=null) { 
         rt.ReceivedData(axKHOpenAPI, e);
     }
 }