https://www3.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000
1.프로그램 구성 파일1.1 라이브러리 구성 파일- 파일경로 : [SYSTEM DRIVE:]/Program Root/
프로그램 구성 파일구 분 | 파일명 | 설 명 | 비 고 |
---|
DLL | KHOpenAPI.ocx | OpenApi 실행 모듈 | | OPCommApi.dll | 통신 모듈 | | OPComms.dll | 서버와의 TCP/IP 연결 모듈 | | OPSecurity.dll | 통신 암호화 모듈 | | librsadlx.dll | | | nsldap32v11.dll | | | ZIPDLL.DLL | 압축 모듈 | | 1.2 프로그램 데이터 파일- 파일경로 : [SYSTEM DRIVE:]/Program Root/Data
프로그램 데이터 파일구분 | 파일명 | 설명 | 비고 |
---|
데이터파일 | OPTxxxxx.enc OPWxxxxx.enc | 통신용 데이터 파일 (약 100여개) 상세 내역은 첨부 자료 확인 | | 1.3 시스템 데이터 파일- 파일경로 : [SYSTEM DRIVE:]/Program Root/System
시스템 데이터 파일구분 | 파일명 | 설명 | 비고 |
---|
시스템 | jongacc.dat | 계좌 관련 데이터 파일 | | OPComms.ini | 통신 속성 관련 데이터 파일 | | 2.Open API 명세서2.1 Open API 컨트롤- OpenApi는 ActiveX Control (OCX) 형태의 OLE 컨트롤을 기반으로 설계 및 구현되어있다. 일반적인 OCX와 동일하게 윈도우 운영체제에 컨트롤을 등록 해야 사용 할 수 있다.
Open API 컨트롤 | 내용 | 비고 |
---|
컨틀롤 모듈 | KHOpenApi.OCX | | 라이브러리 형태 | OCX – OLE Control Extension, DLL | | 호 환 성 | Microsoft Windows XP SP3 이상 | | 개발 환경 | Mocrosoft Visual C++ 2010 | | 버 전 | 1.0.0.1 | | 2.2 Open API 식별자- OpenAPI 컨트롤의 인터페이스 식별자(Interface ID : GUID)는 유일성(Unique)을 지니며 이중으로 등록 되어서는 안된다.
- OpenAPI 컨트롤의 생성 및 데이터 상호 교환을 위한 컨트롤 인터페이스 식별자는 다음과 같다.
Open API 메소드구분 | 식별자 | 내용 |
---|
Control | A1574A0D-6BFA-4BD7-9020-DED88711818D | 컨트롤 클래스 | Dispatch | CF20FBB6-EDD4-4BE5-A473-FEF91977DEB6 | 프로퍼티/메소드 제어 | Event | 7335F12D-8973-4BD5-B7F0-12DF03D175B7 | 이벤트 제어 | Module | 6D8C2B4D-EF41-4750-8AD4-C299033833FB | 컨트롤 모듈 | 2.3 Open API 메소드- OpenAPI 제어 및 편집을 위한 인터페이스 메소드(Interface Method) 목록은 다름과 같다.
Open API 메소드ID | 타입 | 이름 | 설명 |
---|
1 | LONG | CommConnect | 로그인 윈도우를 실행한다. | 2 | void | CommTerminate | 통신 접속을 해제한다. | 3 | LONG | CommRqData | 통신 데이터를 송신한다. | 4 | BSTR | GetLoginInfo | 로그인 정보를 반환한다. | 5 | LONG | SendOrder | 주식주문 Tran을 송신한다. | 6 | | 여분용 | | 7 | void | SetInputValue | | 8 | LONG | SetOutputFID | | 9 | BSTR | CommGetData | 수신 받은 데이터에서 해당 항목을 반환한다. | 10 | void | DisconnectRealdata last | 리얼 시세를 끊는다. | 11 | LONG | GetRepeatCnt | 수신 받은 데이터의 반복 개수를 반환한다. | 12 | LONG | CommKwRqData | 관심종목을 조회 한다. | 13 | BSTR | GetAPIModulePath | OpenApi 모듈이 설치되어 있는 디렉토리를 반환한다. | 14 | BSTR | GetCodeListByMarket | 장구분별 종목코드 리스트를 반환한다. | 15 | LONG | GetConnectState | 통신 접속 상태를 반환한다. | 16 | BSTR | GetMasterCodeName | 종목코드의 종목명을 반환한다. | 17 | LONG | GetMasterListedStockCnt | 종목코드의 상장주식수를 반환한다. | 18 | BSTR | GetMasterConstruction | 종목코드의 감리구분을 반환한다. | 19 | BSTR | GetMasterListedStockDate | 종목코드의 상장일을 반환한다. | 20 | BSTR | GetMasterLastPrice | 종목코드의 전일가를 반환한다. | 21 | BSTR | GetMasterStockState | 종목코드의 종목상태를 반환한다. | 2.4 Open API컨트롤 이벤트- 차트 컨트롤에서 발생하는 컨트롤 이벤트 목록은 다음과 같다.
Open API컨트롤 이벤트ID | 타입 | 이름 | 설명 |
---|
1 | Void | OnReceiveTrData | Tran 수신시 이벤트 | 2 | Void | OnReceiveRealdata last | 실시간 시세 이벤트 | 3 | Void | OnReceiveMsg | 수신 메시지 이벤트 | 4 | Void | OnReceiveChejanData | 주문 접수/확인 수신시 이벤트 | 5 | Void | OnEventConnect | 통신 연결 상태 변경시 이벤트 | 3.제어 함수 상세 명세서- OpenAPI Active X 컨트롤은 프로퍼티(property) 및 메소드(method)를 통하여 제어 및 조작을 할 수 있다. 이러한 차트를 제어 하는 함수에 대한 상세 명세는 다름과 같습니다. - 개별 항목 검색의 편의를 위하여 ID 순으로 정렬하였습니다.
3.1 메소드(Method)1) CommConnect
원형 | LONG CommConnect() | 설명 | 로그인 윈도우를 실행한다. | 입력값 | 없음 | 반환값 | 0 - 성공, 음수값은 실패 | 비고 | 로그인이 성공하거나 실패하는 경우 OnEventConnect 이벤트가 발생하고 이벤트의 인자 값으로 로그인 성공 여부를 알 수 있다. |
2) CommTerminate
원형 | void CommTerminate() | 설명 | OpenAPI의 서버 접속을 해제한다. | 입력값 | 없음 | 반환값 | 없음 | 비고 | 통신 연결 상태는 GetConnectState 메소드로 알 수 있다. |
3) CommRqData
원형 | LONG CommRqData(BSTR sRQName, BSTR sTrCode, long nPrevNext, BSTR sScreenNo) | 설명 | Tran을 서버로 송신한다. | 입력값 | BSTR sRQName BSTR sTrCode long nPrevNext BSTR sScreenNo | 반환값 | OP_ERR_SISE_OVERFLOW – 과도한 시세조회로 인한 통신불가 OP_ERR_RQ_STRUCT_FAIL – 입력 구조체 생성 실패 OP_ERR_RQ_STRING_FAIL – 요청전문 작성 실패 OP_ERR_NONE – 정상처리 | 비고 | sRQName – 사용자구분 명 sTrCode - Tran명 입력 nPrevNext - 0:조회, 2:연속 sScreenNo - 4자리의 화면번호 |
4) GetLoginInfo
원형 | BSTR GetLoginInfo(BSTR sTag) | 설명 | 로그인한 사용자 정보를 반환한다. | 입력값 | BSTR sTag : 사용자 정보 구분 TAG값 (비고) | 반환값 | TAG값에 따른 데이터 반환 | 비고 | BSTR sTag에 들어 갈 수 있는 값은 아래와 같음 “ACCOUNT_CNT” – 전체 계좌 개수를 반환한다. "ACCNO" – 전체 계좌를 반환한다. 계좌별 구분은 ‘;’이다. “USER_ID” - 사용자 ID를 반환한다. “USER_NAME” – 사용자명을 반환한다. “KEY_BSECGB” – 키보드보안 해지여부. 0:정상, 1:해지 “FIREW_SECGB” – 방화벽 설정 여부. 0:미설정, 1:설정, 2:해지 |
5) SendOrder
원형 | LONG SendOrder( BSTR sRQName, BSTR sScreenNo, BSTR sAccNo, BSTR sPw, LONG nOrderType, BSTR sCode, LONG nQty, LONG nPrice, LONG nJangTimeGb, BSTR sHogaGb, LONG nCondType, BSTR sOrgOrderNo, BOOL bCredit, BSTR sCreditType, LONG nCreditOrderCode, BSTR sLoanDate ) | 설명 | 주식 주문을 서버로 전송한다. | 입력값 | sRQName - 사용자 구분 요청 명 sScreenNo - 화면번호[4] sAccNo - 계좌번호[10] sPw – 1.0.0.1 버전 이후 사용하지 않음. nOrderType - 주문유형 (1:신규매수, 2:신규매도, 3:매수취소, 4:매도취소, 5:매수정정, 6:매도정정) sCode, - 주식종목코드 nQty – 주문수량 nPrice – 주문단가 nJangTimeGb – 1.0.0.1 버전 이후 사용하지 않음. sHogaGb - 거래구분 nCondType – 1.0.0.1 버전 이후 사용하지 않음. sOrgOrderNo – 원주문번호 bCredit – 1.0.0.1 버전 이후 사용하지 않음. sCreditType – 1.0.0.1 버전 이후 사용하지 않음. nCreditOrderCode – 1.0.0.1 버전 이후 사용하지 않음. sLoanDate – 1.0.0.1 버전 이후 사용하지 않음. | 반환값 | 에러코드 <4.에러코드표 참고> | 비고 | sHogaGb – 0:지정가, 3:시장가, 5:조건부지정가, 6:최유리지정가, 7:최우선지정가, 10:지정가IOC, 13:시장가IOC, 16:최유리IOC, 20:지정가FOK, 23:시장가FOK, 26:최유리FOK, 61:시간외단일가매매, 81:시간외종가 |
6) 없음
7) SetInputValue
원형 | void SetInputValue(BSTR sID, BSTR sValue) | 설명 | Tran 입력 값을 서버통신 전에 입력한다. | 입력값 | sID – 아이템명 sValue – 입력 값 | 반환값 | 없음 | 비고 | 통신 Tran 매뉴얼 참고 |
8) SetOutputFID
원형 | LONG SetOutputFID(BSTR sID) | 설명 | 1.0.0.1 버전 이후 사용하지 않음. | 입력값 | | 반환값 | | 비고 | |
9) CommGetData
원형 | BSTR CommGetData(LPCTSTR sJongmokCode, LPCTSTR sRealType, LPCTSTR sFieldName, long nIndex, LPCTSTR sInnerFieldName) | 설명 | Tran 데이터, 실시간 데이터, 체결잔고 데이터를 반환한다. | 입력값 | <비고> | 반환값 | 요청 데이터 | 비고 | ○1 Tran 데이터 sJongmokCode : Tran명 sRealType : 사용안함 sFieldName : 레코드명 nIndex : 반복인덱스 sInnerFieldName: 아이템명 | ○1 실시간 데이터 sJongmokCode : Key Code sRealType : Real Type sFieldName : Item Index nIndex : 사용안함 sInnerFieldName:사용안함 | ○1 체결 데이터 sJongmokCode : 체결구분 sRealType : “-1” sFieldName : FID nIndex : 사용안함 sInnerFieldName:사용안함 |
10) DisconnectRealdata last
원형 | void DisconnectRealdata last(LPCTSTR sScnNo) | 설명 | 화면 내 모든 리얼데이터 요청을 제거한다. | 입력값 | sScnNo – 화면번호[4] | 반환값 | 없음 | 비고 | 화면을 종료할 때 반드시 위 함수를 호출해야 한다. |
11) GetRepeatCnt
원형 | LONG GetRepeatCnt(LPCTSTR sTrCode, LPCTSTR sRecordName) | 설명 | 레코드 반복횟수를 반환한다. | 입력값 | sTrCode – Tran 명 sRecordName – 레코드 명 | 반환값 | 레코드의 반복횟수 | 비고 | |
12) CommKwRqData
원형 | LONG CommKwRqData(LPCTSTR sArrCode, BOOL bNext, int nCodeCount, int nTypeFlag, LPCTSTR sRQName, LPCTSTR sScreenNo) | 설명 | 복수종목조회 Tran을 서버로 송신한다. | 입력값 | sArrCode – 종목리스트 bNext – 연속조회요청 nCodeCount – 종목개수 nTypeFlag – 조회구분 sRQName – 사용자구분 명 sScreenNo – 화면번호[4] | 반환값 | OP_ERR_RQ_STRING – 요청 전문 작성 실패 OP_ERR_NONE - 정상처리 | 비고 | sArrCode – 종목간 구분은 ‘;’이다. nTypeFlag – 0:관심종목정보, 1:관심종목투자자정보, 2:관심종목프로그램정보 |
13) GetAPIModulePath
원형 | BSTR GetAPIModulePath() | 설명 | OpenAPI모듈의 경로를 반환한다. | 입력값 | 없음 | 반환값 | 경로 | 비고 | |
14) GetCodeListByMarket
원형 | BSTR GetCodeListByMarket(LPCTSTR sMarket) | 설명 | 시장구분에 따른 종목코드를 반환한다. | 입력값 | sMarket – 시장구분 | 반환값 | 종목코드 리스트, 종목간 구분은 ’;’이다. | 비고 | sMarket – 0:장내, 3:ELW, 4:뮤추얼펀드, 5:신주인수권, 6:리츠,8:ETF, 9:하이일드펀드, 10:코스닥, 30:제3시장 |
15) GetConnectState
원형 | LONG GetConnectState() | 설명 | 현재접속상태를 반환한다. | 입력값 | 없음 | 반환값 | 접속상태 | 비고 | 0:미연결, 1:연결완료 |
16) GetMasterCodeName
원형 | BSTR GetMarsterCodeName(LPCTSTR strCode) | 설명 | 종목코드의 한글명을 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 종목한글명 | 비고 | |
17) GetMasterListedStockCnt
원형 | LONG GetMasterListedStockCnt(LPCTSTR strCode) | 설명 | 종목코드의 상장주식수를 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 상장주식수 | 비고 | |
18) GetMasterConstruction
원형 | BSTR GetMasterConstruction(LPCTSTR strCode) | 설명 | 종목코드의 감리구분을 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 감리구분 | 비고 | 감리구분 – 정상, 투자주의, 투자경고, 투자위험, 투자주의환기종목 |
19) GetMasterListedStockDate
원형 | BSTR GetMasterListedStockDate(LPCTSTR strCode) | 설명 | 종목코드의 상장일을 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 상장일 | 비고 | 상장일 포멧 – xxxxxxxx[8] |
20) GetMasterLastPrice
원형 | BSTR GetMasterLastPrice(LPCTSTR strCode) | 설명 | 종목코드의 전일가를 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 전일가 | 비고 | |
21) GetMasterStockState
원형 | BSTR GetMasterStockState(LPCTSTR strCode) | 설명 | 종목코드의 종목상태를 반환한다. | 입력값 | strCode – 종목코드 | 반환값 | 종목상태 | 비고 | 종목상태 – 정상, 증거금100%, 거래정지, 관리종목, 감리종목, 투자유의종목,담보대출, 액면분할, 신용가능 |
3.2 이 벤 트1) OnReceiveTrData
원형 | void OnReceiveTrData( LPCTSTR sScrNo, LPCTSTR sRQName, LPCTSTR sTrCode, LPCTSTR sRecordName, LPCTSTR sPreNext, LONG nDataLength, LPCTSTR sErrorCode, LPCTSTR sMessage, LPCTSTR sSplmMsg) | 설명 | 서버통신 후 데이터를 받은 시점을 알려준다. | 입력값 | sScrNo – 화면번호 sRQName – 사용자구분 명 sTrCode – Tran 명 sRecordName – Record 명 sPreNext – 연속조회 유무 nDataLength – 1.0.0.1 버전 이후 사용하지 않음. sErrorCode – 1.0.0.1 버전 이후 사용하지 않음. sMessage – 1.0.0.1 버전 이후 사용하지 않음. sSplmMsg - 1.0.0.1 버전 이후 사용하지 않음. | 반환값 | 없음 | 비고 | sRQName – CommRqData의 sRQName과 매핑되는 이름이다. sTrCode – CommRqData의 sTrCode과 매핑되는 이름이다. |
2) OnReceiveRealdata last
원형 | void OnReceiveRealdata last(LPCTSTR sJongmokCode, LONG nRealType, LPCTSTR sRealdata last) | 설명 | 실시간데이터를 받은 시점을 알려준다. | 입력값 | sJongmokCode – 종목코드 nRealType – 리얼타입 sRealdata last – 실시간 데이터전문 | 반환값 | 없음 | 비고 | nRealType – realtime.dat 실시간데이터 정보 파일 참고 |
3) OnReceiveMsg
원형 | void OnReceiveMsg(LPCTSTR sScrNo, LPCTSTR sRQName, LPCTSTR sTrCode, LPCTSTR sMsg) | 설명 | 서버통신 후 메시지를 받은 시점을 알려준다. | 입력값 | sScrNo – 화면번호 sRQName – 사용자구분 명 sTrCode – Tran 명 sMsg – 서버메시지 | 반환값 | 없음 | 비고 | sScrNo – CommRqData의 sScrNo와 매핑된다. sRQName – CommRqData의 sRQName 와 매핑된다. sTrCode – CommRqData의 sTrCode 와 매핑된다. |
4) OnReceiveChejanData
원형 | void OnReceiveChejanData(LPCTSTR sGubun, LONG nItemCnt, LPCTSTR sFidList); | 설명 | 체결데이터를 받은 시점을 알려준다. | 입력값 | sGubun – 체결구분 nItemCnt - 아이템갯수 sFidList – 데이터리스트
| 반환값 | 없음 | 비고 | sGubun – 0:주문체결통보, 1:잔고통보, 3:특이신호 <realtime.dat 실시간데이터 정보 파일 참고> sFidList – 데이터 구분은 ‘;’ 이다. |
5) OnEventConnect
원형 | void OnEventConnect(LONG nErrCode); | 설명 | 서버 접속 관련 이벤트 | 입력값 | LONG nErrCode : 에러 코드 | 반환값 | 없음 | 비고 | nErrCode가 0이면 로그인 성공, 음수면 실패 음수인 경우는 에러 코드 참조 |
4.에러 코드표OP_ERR_NONE | 0 | //"정상처리" | OP_ERR_LOGIN | -100 | //"사용자정보교환에 실패하였습니다. 잠시후 다시 시작하여 주십시오." | OP_ERR_CONNECT | -101 | //"서버 접속 실패" | OP_ERR_VERSION | -102 | //"버전처리가 실패하였습니다. | OP_ERR_SISE_OVERFLOW | -200 | //”시세조회 과부하” | OP_ERR_RQ_STRUCT_FAIL | -201 | //”REQUEST_INPUT_st Failed” | OP_ERR_RQ_STRING_FAIL | -202 | //”요청 전문 작성 실패” | OP_ERR_ORD_WRONG_INPUT | -300 | //”주문 입력값 오류” | OP_ERR_ORD_WRONG_ACCNO | -301 | //”계좌비밀번호를 입력하십시오.” | OP_ERR_OTHER_ACC_USE | -302 | //”타인계좌는 사용할 수 없습니다. | OP_ERR_MIS_2BILL_EXC | -303 | //”주문가격이 20억원을 초과합니다.” | OP_ERR_MIS_5BILL_EXC | -304 | //”주문가격은 50억원을 초과할 수 없습니다.” | OP_ERR_MIS_1PER_EXC | -305 | //”주문수량이 총발행주수의 1%를 초과합니다.” | OP_ERR_MID_3PER_EXC | -306 | //”주문수량은 총발행주수의 3%를 초과할 수 없습니다.” |
|