반응형


          [CommRqData() 함수]

          

          CommRqData(

          BSTR sRQName,    // 사용자 구분명

          BSTR sTrCode,    // 조회하려는 TR이름

          long nPrevNext,  // 연속조회여부

          BSTR sScreenNo  // 화면번호

          )

          

          조회요청함수이며 빈번하게 조회요청하면 시세과부하 에러값으로 -200이 전달됩니다.

          리턴값

          0이면 조회요청 정상 나머지는 에러

          -200 시세과부하

          -201 조회전문작성 에러

          

          

          



          [SetInputValue() 함수]

          

          SetInputValue(

          BSTR sID,     // TR에 명시된 Input이름

          BSTR sValue   // Input이름으로 지정한 값

          )

          

          조회요청시 TR의 Input값을 지정하는 함수이며 조회 TR 입력값이 많은 경우 이 함수를 반복적으로 호출합니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [OPT10081 : 주식일봉차트조회요청예시]

          

          SetInputValue("종목코드" ,  "039490"); // 첫번째 입력값 설정

          SetInputValue("기준일자" ,  "20160101");// 두번째 입력값 설정

          SetInputValue("수정주가구분" ,  "1"); // 세번째 입력값 설정

          LONG lRet = CommRqData( "RQName","OPT10081", "0","0600");// 조회요청

          

          ------------------------------------------------------------------------------------------------------------------------------------

          



          [CommGetData() 함수]

          

          일부 TR에서 사용상 제약이 있음므로 이 함수 대신 GetCommData()함수를 사용하시기 바랍니다.

          



          [DisconnectRealData() 함수]

          

          DisconnectRealData(

          BSTR sScnNo // 화면번호 

          )

          

          화면번호 설정한 실시간 데이터를 해지합니다.

          



          [GetRepeatCnt() 함수]

          

          GetRepeatCnt(

          BSTR sTrCode, // TR 이름

          BSTR sRecordName // 레코드 이름

          )

          

          조회수신한 멀티데이터의 갯수(반복)수를 얻을수 있습니다. 예를들어 차트조회는 한번에 최대 900개 데이터를 수신할 수 있는데 

          이렇게 수신한 데이터갯수를 얻을때 사용합니다.

          이 함수는 반드시 OnReceiveTRData()이벤트 함수가 호출될때 그 안에서 사용해야 합니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [OPT10081 : 주식일봉차트조회요청예시]

          

          OnReceiveTrDataKhopenapictrl(...)

          {

            if(strRQName == _T("주식일봉차트"))

            {

              int nCnt = OpenAPI.GetRepeatCnt(sTrcode, strRQName);

              for (int nIdx = 0; nIdx < nCnt; nIdx++)

              {

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("종목코드"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("거래량"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("시가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("고가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("저가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("현재가"));   strData.Trim();

              }

            }

          }

          

          ------------------------------------------------------------------------------------------------------------------------------------

          



          [CommKwRqData() 함수]

          

          CommKwRqData(

          BSTR sArrCode,    // 조회하려는 종목코드 리스트

          BOOL bNext,   // 연속조회 여부 0:기본값, 1:연속조회

          int nCodeCount,   // 종목코드 갯수

          int nTypeFlag,    // 0:주식 관심종목, 3:선물옵션 관심종목

          BSTR sRQName,   // 사용자 구분명

          BSTR sScreenNo    // 화면번호

          )

          

          한번에 100종목을 조회할 수 있는 관심종목 조회함수인데 영웅문HTS [0130] 관심종목 화면과는 이름만 같은뿐 전혀관련이 없습니다.

          함수인자로 사용하는 종목코드 리스트는 조회하려는 종목코드 사이에 구분자';'를 추가해서 만들면 됩니다.          

          

          



          [GetCommData() 함수]

          

          GetCommData(

          BSTR strTrCode,   // TR 이름

          BSTR strRecordName,   // 레코드이름

          long nIndex,      // TR반복부

          BSTR strItemName) // TR에서 얻어오려는 출력항목이름

          

          OnReceiveTRData()이벤트 함수가 호출될때 조회데이터를 얻어오는 함수입니다.

          이 함수는 반드시 OnReceiveTRData()이벤트 함수가 호출될때 그 안에서 사용해야 합니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [OPT10081 : 주식일봉차트조회요청예시]

          

          OnReceiveTrDataKhopenapictrl(...)

          {

            if(strRQName == _T("주식일봉차트"))

            {

              int nCnt = OpenAPI.GetRepeatCnt(sTrcode, strRQName);

              for (int nIdx = 0; nIdx < nCnt; nIdx++)

              {

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("종목코드"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("거래량"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("시가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("고가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("저가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("현재가"));   strData.Trim();

              }

            }

          }

          

          ------------------------------------------------------------------------------------------------------------------------------------

          



          [GetCommData() 함수]

          

          GetCommData(

          BSTR strTrCode,   // TR 이름

          BSTR strRecordName,   // 레코드이름

          long nIndex,      // TR반복부

          BSTR strItemName) // TR에서 얻어오려는 출력항목이름

          

          OnReceiveTRData()이벤트 함수가 호출될때 조회데이터를 얻어오는 함수입니다.

          이 함수는 반드시 OnReceiveTRData()이벤트 함수가 호출될때 그 안에서 사용해야 합니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [OPT10081 : 주식일봉차트조회요청예시]

          

          OnReceiveTrDataKhopenapictrl(...)

          {

            if(strRQName == _T("주식일봉차트"))

            {

              int nCnt = OpenAPI.GetRepeatCnt(sTrcode, strRQName);

              for (int nIdx = 0; nIdx < nCnt; nIdx++)

              {

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("종목코드"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("거래량"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("시가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("고가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("저가"));   strData.Trim();

                strData = OpenAPI.GetCommData(sTrcode, strRQName, nIdx, _T("현재가"));   strData.Trim();

              }

            }

          }

          

          ------------------------------------------------------------------------------------------------------------------------------------

          



          [GetCommDataEx() 함수]

          

          GetCommDataEx(

          BSTR strTrCode,   // TR 이름

          BSTR strRecordName  // 레코드이름

          )

          

          조회 수신데이터 크기가 큰 차트데이터를 한번에 가져올 목적으로 만든 전용함수입니다.

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          [차트일봉데이터 예시]

          

          OnReceiveTrDataKhopenapictrl(...)

          {

            if(strRQName == _T("주식일봉차트"))

            {

              VARIANT   vTemp = OpenAPI.GetCommDataEx(strTrCode, strRQName);

              long lURows, lUCols;

              long nIndex[2]

              COleSafeArray saMatrix(vTemp);

              VARIANT vDummy;

              VariantInit(&vDummy);

              saMatrix.GetUBound(1, &lURows); // 데이터 전체갯수(데이터 반복횟수)

              saMatrix.GetUBound(2, &lUCols); // 출력항목갯수


              for(int nRow = 0; nRow <= lURows; nRow ++)

              {

                for(int nCol = 0; nCol <= lUCols; nCol ++)

                {

                  nIndex[0] = lURows;

                  nIndex[1] = lUCols;

                  saMatrix.GetElement(nIndex, &vDummy);

                  ::SysFreeString(vDummy.bstrVal);

                }

              }

              saMatrix.Clear();

              VariantClear(&vTemp);

            }

          }

          

          ------------------------------------------------------------------------------------------------------------------------------------

          

          


          [OnReceiveTrData() 이벤트]
          
          void OnReceiveTrData(
          BSTR sScrNo,       // 화면번호
          BSTR sRQName,      // 사용자 구분명
          BSTR sTrCode,      // TR이름
          BSTR sRecordName,  // 레코드 이름
          BSTR sPrevNext,    // 연속조회 유무를 판단하는 값 0: 연속(추가조회)데이터 없음, 1:연속(추가조회) 데이터 있음
          LONG nDataLength,  // 사용안함.
          BSTR sErrorCode,   // 사용안함.
          BSTR sMessage,     // 사용안함.
          BSTR sSplmMsg     // 사용안함.
          )
          
          조회요청 응답을 받거나 조회데이터를 수신했을때 호출됩니다.
          조회데이터는 이 이벤트 함수내부에서 GetCommData()함수를 이용해서 얻어올 수 있습니다.
          
          


          [OnReceiveRealData()이벤트]

          

          OnReceiveRealData(

          BSTR sCode,        // 종목코드

          BSTR sRealType,    // 리얼타입

          BSTR sRealData    // 실시간 데이터 전문

          )

          

          실시간 데이터를 수신할때마다 호출되며 SetRealReg()함수로 등록한 실시간 데이터도 이 이벤트 함수에 전달됩니다.

          GetCommRealData()함수를 이용해서 실시간 데이터를 얻을수 있습니다.

          

          


          [OnReceiveMsg()이벤트 함수]
          
          OnReceiveMsg(
          BSTR sScrNo,   // 화면번호
          BSTR sRQName,  // 사용자 구분명
          BSTR sTrCode,  // TR이름
          BSTR sMsg     // 서버에서 전달하는 메시지
          )
          
          서버통신 후 수신한 메시지를 알려줍니다.
          메시지에는 6자리 코드번호가 포함되는데 이 코드번호는 통보없이 수시로 변경될 수 있습니다. 따라서 주문이나 오류관련처리를
          이 코드번호로 분류하시면 안됩니다.
          


반응형

+ Recent posts