示例#1
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;
        }
示例#2
0
 protected void putReceivedQueueAndsetNextSpell(String key, int prevNext, String lastStockDate)
 {
     OpenApi.Spell.SpellOpt tmp = spell.ShallowCopy();
     tmp.nPrevNext     = prevNext;
     tmp.lastStockDate = lastStockDate;
     AppLib.getClass1Instance().removeSpellDictionary(key);
     AppLib.getClass1Instance().AddSpellDictionary(key, tmp);
 }
示例#3
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;
        }
示例#4
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10014");
            try
            {
                /*
                 * sScrNo – 화면번호
                 * sRQName – 사용자구분 명
                 * sTrCode – Tran 명
                 * sRecordName – Record 명
                 * sPreNext – 연속조회 유무
                 */
                List <TB_OPT10014> lst    = new List <TB_OPT10014>();
                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;
                int.TryParse(startDate, out startDate일자);

                if (nCnt > 0)
                {
                    for (int i = 0; i < nCnt; i++)
                    {
                        int 일자 = Int32.Parse(axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim());//[0]

                        if (startDate != null)
                        {
                            if (!(일자 >= startDate일자))
                            {
                                //입력받은 20200301 을 정수로 바꾼 strartDAte일자
                                //데이터로 받을 "일자" 가 이것보다 큰것만 가져온다.
                                //명령을 넣을때 실제로 시작일자는 ui상에서 종료일자가 들어간다.\
                                // api는 시작일자를 기준으로 내림차순으로 하기 때문이다.
                                //내림차순으로 받은거에서 끊는 역할을 해준다.
                                break;
                            }
                        }

                        /*OPT10015 일별 상세하고 중복
                         * 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]



                        TB_OPT10014 tmp = new TB_OPT10014();
                        tmp.stock_cd                  = 종목코드;
                        tmp.stock_dt                  = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim();
                        tmp.short_selling_qty         = 공매도량;
                        tmp.trade_rt                  = 매매비중;
                        tmp.short_selling_trade_amt   = 공매도거래대금;
                        tmp.short_selling_average_amt = 공매도평균가;
                        tmp.prev_next                 = e.sPrevNext;

                        lst.Add(tmp);
                    }
                }
                else
                {
                    종목코드 = "00000";
                }


                if (lst.Count() > 0)
                {
                    DailyData dd = new DailyData();
                    dd.insertOpt10014(lst);
                }

                int prevNext = 0;
                int.TryParse(e.sPrevNext, out prevNext);
                //ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                //ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                //래치를 호출해서 잠김을 제거한다.--래치 일단 제거 호출하는데도 제거 했다. 1초에 5번 호출 규칙만 적용해보자.
                AppLib.getClass1Instance().setOpt10081(spell.sTrCode);
                //2020년03월29일 확인 내용
                //nprevNext가 0이면 종료고 2이면 진행으로 알고 있었다.
                //그런데 어느시점이 지나가면 그게 아닌것 같다.
                //이걸 확인하려면 디비에 이걸 넣어야한다.
                //2012년까지 정상동작하고 이전데이터는 무조건 prev_next를 0을 리턴한다.
                //이건 수동으로 봐야겠다. 끝.

                if (startDate.Equals("ZERO") || (startDate.Length == 8 && startDate.CompareTo(lastStockDate) >= 0) || prevNext == 0)
                //ZERO면 한번만 호출이다. 또는 시작일과 마지막 리턴일이 같다면 종료되어야한다.
                {
                    AppLib.getClass1Instance().removeSpellDictionary(spell.key);
                    int    position = spell.key.LastIndexOf("|");
                    String key1     = spell.key.Substring(0, position);
                    //래치를 호출해서 잠김을 제거한다.--래치 일단 제거 호출하는데도 제거 했다. 1초에 5번 호출 규칙만 적용해보자.
                }
                else if (prevNext > 0)
                {
                    //putReceivedQueueAndsetNextSpell(key, prevNext, lastStockDate);
                    OpenApi.Spell.SpellOpt tmp = spell.ShallowCopy();
                    tmp.nPrevNext     = prevNext;
                    tmp.lastStockDate = lastStockDate;
                    AppLib.getClass1Instance().removeSpellDictionary(key);
                    AppLib.getClass1Instance().AddSpellDictionary(key, tmp);
                    AppLib.getClass1Instance().EnqueueByOrderQueue(tmp);  //주문을 다시 넣는다.
                }
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10014]Exception ex=" + ex.Message);
            }
        }
示例#5
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;
        }
示例#6
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;
        }
示例#7
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;
        }
示例#8
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;
        }
示例#9
0
        public override void ReceivedData(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e)
        {
            FileLog.PrintF("ReceivedData OPT10059");
            try
            {
                /*
                 * sScrNo – 화면번호
                 * sRQName – 사용자구분 명
                 * sTrCode – Tran 명
                 * sRecordName – Record 명
                 * sPreNext – 연속조회 유무
                 */
                List <TB_OPT10059> lst  = new List <TB_OPT10059>();
                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]
                        lastStockDate = 일자.ToString();
                        if (startDate != null)
                        {
                            if (!(일자 >= startDate일자))
                            {
                                //입력받은 20200301 을 정수로 바꾼 strartDAte일자
                                //데이터로 받을 "일자" 가 이것보다 큰것만 가져온다.
                                //명령을 넣을때 실제로 시작일자는 ui상에서 종료일자가 들어간다.\
                                // api는 시작일자를 기준으로 내림차순으로 하기 때문이다.
                                //내림차순으로 받은거에서 끊는 역할을 해준다.
                                break;
                            }
                        }

                        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]


                        TB_OPT10059 tmp = new TB_OPT10059();
                        tmp.stock_cd             = 종목코드;
                        tmp.stock_dt             = axKHOpenAPI.CommGetData(e.sTrCode, "", e.sRQName, i, "일자").Trim();
                        tmp.buy_sell             = spell.buyOrSell;
                        tmp.amt_amount           = spell.priceOrAmount;
                        tmp.domestic_investor    = 개인투자자;
                        tmp.foreign_investor     = 외국인투자자;
                        tmp.institution          = 기관계;
                        tmp.financial_investment = 금융투자;
                        tmp.insurance            = 보험;
                        tmp.investment_trust     = 투신;
                        tmp.etc_financial        = 기타금융;
                        tmp.bank                        = 은행;
                        tmp.pension_fund                = 연기금등;
                        tmp.private_equity_fund         = 사모펀드;
                        tmp.nation                      = 국가;
                        tmp.etc_corporation             = 기타법인;
                        tmp.foregin_investment_in_korea = 내외국인;
                        tmp.prev_next                   = e.sPrevNext;
                        lst.Add(tmp);
                    }
                }
                else
                {
                    종목코드 = "00000";
                }

                if (lst.Count() > 0)
                {
                    DailyData dd = new DailyData();
                    dd.insertOpt10059(lst);
                }

                int prevNext = 0;
                int.TryParse(e.sPrevNext, out prevNext);
                //ScreenNumber.getClass1Instance().DisconnectRealData(e.sScrNo);
                //ScreenNumber.getClass1Instance().SetRealRemove("ALL", "ALL");
                //래치를 호출해서 잠김을 제거한다.--래치 일단 제거 호출하는데도 제거 했다. 1초에 5번 호출 규칙만 적용해보자.
                AppLib.getClass1Instance().setOpt10081(spell.sTrCode);
                //2020년03월29일 확인 내용
                //nprevNext가 0이면 종료고 2이면 진행으로 알고 있었다.
                //그런데 어느시점이 지나가면 그게 아닌것 같다.
                //이걸 확인하려면 디비에 이걸 넣어야한다.
                //2012년까지 정상동작하고 이전데이터는 무조건 prev_next를 0을 리턴한다.
                //이건 수동으로 봐야겠다. 끝.

                if (startDate.Equals("ZERO") || (startDate.Length == 8 && startDate.CompareTo(lastStockDate) >= 0) || prevNext == 0)
                //ZERO면 한번만 호출이다. 또는 시작일과 마지막 리턴일이 같다면 종료되어야한다.
                {
                    AppLib.getClass1Instance().removeSpellDictionary(spell.key);
                    int    position = spell.key.LastIndexOf("|");
                    String key1     = spell.key.Substring(0, position);
                    //래치를 호출해서 잠김을 제거한다.--래치 일단 제거 호출하는데도 제거 했다. 1초에 5번 호출 규칙만 적용해보자.
                }
                else if (prevNext > 0)
                {
                    //putReceivedQueueAndsetNextSpell(key, prevNext, lastStockDate);
                    OpenApi.Spell.SpellOpt tmp = spell.ShallowCopy();
                    tmp.nPrevNext     = prevNext;
                    tmp.lastStockDate = lastStockDate;
                    AppLib.getClass1Instance().removeSpellDictionary(key);
                    AppLib.getClass1Instance().AddSpellDictionary(key, tmp);
                    AppLib.getClass1Instance().EnqueueByOrderQueue(tmp);  //주문을 다시 넣는다.
                }
            }
            catch (Exception ex)
            {
                FileLog.PrintF("[ALERT-ReceivedData-OPT10059]Exception ex=" + ex.Message);
            }
        }
示例#10
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;
        }
示例#11
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;
        }
示例#12
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell) {
            /*
 [ opt10075 : 실시간미체결요청 ]
  1. Open API 조회 함수 입력값을 설정합니다.
	계좌번호 = 전문 조회할 보유계좌번호
	SetInputValue("계좌번호"	,  "입력값 1");
    체결구분 = 0:전체, 1:미체결
	SetInputValue("체결구분"	,  "입력값 2");
    매매구분 = 0:전체, 1:매도, 2:매수
	SetInputValue("매매구분"	,  "입력값 3");
 2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	CommRqData( "RQName"	,  "opt10075"	,  "0"	,  "화면번호"); 
*/
            FileLog.PrintF("OPT10075:Run sRQNAME=>" + spell.sRQNAME);
            FileLog.PrintF("OPT10075:Run sTrCode=>" + spell.sTrCode);
            FileLog.PrintF("OPT10075:Run nPrevNext=>" + spell.nPrevNext);
            FileLog.PrintF("OPT10075:Run sScreenNo=>" + spell.sScreenNo);
            FileLog.PrintF("OPT10075:Run 계좌번호=>" + spell.accountNum);

            axKHOpenAPI.SetInputValue("계좌번호", spell.accountNum);
            axKHOpenAPI.SetInputValue("체결구분", spell.orderStatus);
            axKHOpenAPI.SetInputValue("매매구분", spell.orderGubun);
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }
示例#13
0
 public abstract int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell);
示例#14
0
        public override int Run(AxKHOpenAPILib.AxKHOpenAPI axKHOpenAPI, SpellOpt spell)
        {
            /*
                [OPT10015: 일별거래상세요청]
                1. Open API 조회 함수 입력값을 설정합니다.
                종목코드 = 전문 조회할 종목코드
                SetInputValue("종목코드"	,  "입력값 1");
                시작일자 = YYYYMMDD(20160101 연도4자리, 월 2자리, 일 2자리 형식)
                SetInputValue("시작일자"	,  "입력값 2");
                2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
                CommRqData( "RQName"	,  "OPT10015"	,  "0"	,  "화면번호");
            */
            FileLog.PrintF("OPT10015:Run sRQNAME=> " + spell.sRQNAME);
            FileLog.PrintF("OPT10015:Run sTrCode=> " + spell.sTrCode);
            FileLog.PrintF("OPT10015:Run nPrevNext=> " + spell.nPrevNext);
            FileLog.PrintF("OPT10015:Run sScreenNo=> " + spell.sScreenNo);
            FileLog.PrintF("OPT10015:Run 시작일자=> " + spell.endDate);
            FileLog.PrintF("OPT10015:Run 종목코드=> " + spell.stockCode);

            axKHOpenAPI.SetInputValue("종목코드", spell.stockCode);
            axKHOpenAPI.SetInputValue("시작일자", spell.endDate);
            int ret = axKHOpenAPI.CommRqData(spell.sRQNAME, spell.sTrCode, spell.nPrevNext, spell.sScreenNo);
            return ret;
        }