[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);
}
}
------------------------------------------------------------------------------------------------------------------------------------
[OnReceiveRealData()이벤트]
OnReceiveRealData(
BSTR sCode, // 종목코드
BSTR sRealType, // 리얼타입
BSTR sRealData // 실시간 데이터 전문
)
실시간 데이터를 수신할때마다 호출되며 SetRealReg()함수로 등록한 실시간 데이터도 이 이벤트 함수에 전달됩니다.
GetCommRealData()함수를 이용해서 실시간 데이터를 얻을수 있습니다.
'주식' 카테고리의 다른 글
키움 OPEN API - 조건검색 - 관련함수 (0) | 2018.06.30 |
---|---|
키움 OPEN API - 조건검색 - 기본설명 (0) | 2018.06.30 |
키움 OPEN API - 주문과 잔고처리 - 관련함수 (0) | 2018.06.30 |
키움 OPEN API - 주문과 잔고처리 - 기본설명 (0) | 2018.06.30 |
키움 OPEN API - 조회와 실시간데이터처리 - 기본설명 (0) | 2018.06.30 |
키움 OPEN API - 로그인 버전처리 - 관련함수 (0) | 2018.06.30 |
키움 OPEN API - 로그인 버전처리 - 기본설명 (0) | 2018.06.30 |
키움 OPEN API - 통신처리 (0) | 2018.06.30 |