키움 OpenAPI+ 개발가이드 키움증권주식회사
1. 설치및개발환경 1.1 설치하기 1.2 개발환경 2. 접속하기 2.1 로그인및버전처리 2.2 모의투자접속 3. KOA Studio 활용법 3.1 KOA Studio 개념및특징 3.2 KOA Studio 설치 3.3 KOA Studio 구성및사용법 4. 프로그램구성파일 4.1 라이브러리구성파일 4.2 프로그램데이터파일 4.3 시스템데이터파일 5. OpenAPI 명세서 5.1 OpenAPI 컨트롤 5.2 OpenAPI식별자 5.3 OpenAPI 메소드 5.4 OpenAPI 컨트롤이벤트 5.5 Event 발생흐름 6. 제어함수상세명세서 6.1 메소드 (Method) 6.2 이벤트 (Event) 7. 에러코드표 8. 실시간 FID 8.1 주식시세 8.2 주식체결 8.3 주식우선호가 8.4 주식호가잔량
8.5 선물시세 8.6 선물호가잔량 8.7 선물이론가 8.8 옵션시세 8.9 옵션호가잔량 8.10 옵션이론가 8.11 주식옵션시세 8.12 주식옵션호가잔량 8.13 주식옵션이론가 8.14 선물옵션우선호가 8.15 업종지수 8.16 업종등락 8.17 장시작시간 8.18 투자자ticker 8.19 주문체결 8.20 잔고 8.21 신용잔고 8.22 주식시간외호가 8.23 주식당일거래원 9. 키움 Open API+ 추가기능가이드 9.1 조건검색실시간가이드 9.2 실시간등록 / 해지기능가이드 9.3 대량 DATA( 차트조회 ) 수신 10. 기타 10.1 신용주문가이드
1. 설치및개발환경 1.1 설치하기 모듈설치키움증권홈페이지 > 트레이딩채널 >Open API> 키움 Open API+> 서비스소개 > 키움 Open API+ 모듈다운로드 버튼을통해다운로드후설치 디렉토리 모듈을설치하면그림과같은디렉토리가생성됩니다. OpenAPI 의인터페이스는 OCX컨트롤방식으로지원하며, 프로그램이설치될때 OCX가레지스트리에등록됩니다. ( 개발을하실때다시등록하지않으셔도됩니다.) OpenAPI 사용자들께서자신의프로그램을개발시에필요한 OCX컨트롤을포함하여실행시에필요한기타모듈파일들을프로그램로그인시에다운로드를통해서자동으로업데이트됩니다. 4
1.2 개발환경 - 키움 Open API 는프로그램개발확장성을고려하여 OCX 컨트롤로제작지원합니다. - 사용자편의에따라 VB, 엑셀, 웹기반, MFC 등으로프로그램제작이가능합니다. - 데이터요청및수신은 TR 서비스명을검색한후 OCX 를통해 API 함수를호출하는방식으로진행합니다. 2. 접속하기 2.1 로그인및버젼처리키움 Open API+ 는로그인창을제공합니다.( 공통 ) 제작한프로그램을통해로그인시아래절차를참고하시면됩니다. - 로그인시로그인창을실행한프로그램 (Open API OCX를탑재한프로그램 ) 이열려있는경우버젼처리및로그인이진행되지않습니다. 5
- 아래절차에따라로그인및버전처리를진행하여주시기바랍니다. - 프로그램및 KOA스튜디오접속 >ID/PW/ 인증PW 입력후로그인및버젼처리진행 > 버전처리안내팝업생성 > 팝업은그대로둔상태에서프로그램및 KOA스튜디오등 API와관련된모든프로그램종료 > 버전처리종료후다시프로그램실행 - 실서버접속의경우 모의투자접속 칸을해제한후접속하시면됩니다. 2.2 모의투자접속 - 모의투자접속을위해서는로그인창우측하단에모의투자접속에체크한후모의투자 ID 및 PW 를 이용하여접속하시면됩니다. - 모의투자신청은키움증권홈페이지 > 모의 / 실전투자 > 상시모의투자메뉴에서신청가능합니다. 6
3. KOA Studio 활용하기 3.1 KOA Studio 개념및특징 KOA Studio는개발편의를위해제공하는 TR의목록과정보를간편하게확인할수있으며, 입력값및출력값을확인할수있는화면을제공하는프로그램입니다. 특징 - 모의투자서버로만접속가능 - 개발중인자신의프로그램상의수신데이터와 KOA Studio 상의수신데이터비교가능 - 서비스 TR의 input 값참고가능 - 실시간타입과 FID값참고가능 3.2 KOA Studio 설치및로그인 설치키움증권홈페이지 > 트레이딩채널 >Open API> 키움 Open API+> 서비스소개 > 키움 Open API+ 모듈다운로드 버튼을통해다운로드후설치 7
로그인 - KOA Studio > 파일 (F)>Open API 접속을클릭하시면로그인창이생성됩니다. - KOA Studio 는모의투자접속만가능합니다.( 디폴트처리 ) 3.3 KOA Studio 구성및사용법 작업창 / 정보창 / 입력창 / 결과창으로구성됩니다. 8
TR 조회방법 - TR 목록을클릭하시면제공 TR 리스트와샘플코드예제 (C++ 기준 ) 이보여집니다. - INPUT 값을입력하면출력값이창에표시됩니다. 9
- 조회한 TR 목록에서는기조회내역을확인할수있습니다. - 실시간목록조회에서는실시간제공목록과샘플코드예제를볼수있습니다. 10
4. 프로그램구성파일 4.1 라이브러리구성파일 - 파일경로 : [SYSTEM DRIVE:]/Program Root/ 구분 파일명 설명 KHOpenAPI.ocx OpenApi 실행모듈 OPCommApi.dll 통신모듈 OPComms.dll 서버와의 TCP/IP 연결모듈 DLL OPSecurity.dll 통신암호화모듈 librsadlx.dll nsldap32v11.dll ZIPDLL.DLL 압축모듈 4.2 프로그램데이터파일 - 파일경로 : [SYSTEM DRIVE:]/Program Root/Data 구분파일명설명 OPTxxxxx.enc 통신용데이터파일 ( 약 100여개 ) 데이터파일 OPWxxxxx.enc 상세내역은첨부자료확인 4.3 시스템데이터파일 - 파일경로 : [SYSTEM DRIVE:]/Program Root/System 구분파일명설명 jongacc.dat 계좌관련데이터파일시스템 OPComms.ini 통신속성관련데이터파일 11
5. OpenAPI 명세서 5.1 OpenAPI 컨트롤 - OpenApi는 ActiveX Control (OCX) 형태의 OLE 컨트롤을기반으로설계및구현되어있다. 일반적인 OCX와동일하게윈도우운영체제에컨트롤을등록해야사용할수있다. 내용 컨틀롤모듈 KHOpenApi.OCX 라이브러리형태 OCX OLE Control Extension, DLL 호환성 Microsoft Windows XP SP3 이상 개발환경 Mocrosoft Visual C++ 2010 버 전 5.2 OpenAPI 식별자 - OpenAPI 컨트롤의인터페이스식별자 (Interface ID : GUID) 는유일성 (Unique) 을지니며이중으로등록되어서는안된다. - OpenAPI 컨트롤의생성및데이터상호교환을위한컨트롤인터페이스식별자는다음과같다. 구분 식별자 내용 Control A1574A0D-6BFA-4BD7-9020-DED88711818D 컨트롤클래스 Dispatch CF20FBB6-EDD4-4BE5-A473-FEF91977DEB6 프로퍼티 / 메소드제어 Event 7335F12D-8973-4BD5-B7F0-12DF03D175B7 이벤트제어 Module 6D8C2B4D-EF41-4750-8AD4-C299033833FB 컨트롤모듈 5.3 OpenAPI 메소드 - OpenAPI 제어및편집을위한인터페이스메소드 (Interface Method) 목록은다름과같다. ID 타입 이름 설명 1 LONG CommConnect 로그인윈도우를실행한다. 2 void CommTerminate 더이상지원하지않는함수 3 LONG CommRqData 통신데이터를송신한다. 4 BSTR GetLoginInfo 로그인정보를반환한다. 5 LONG SendOrder 주식주문 Tran을송신한다. 6 LONG SendOrderCredit 주식신용주문 Tran을송신한다. 7 void SetInputValue 8 LONG SetOutputFID 12 / 53
9 BSTR CommGetData 이함수대신용도에맞는전용함수를사용할것조회정보요청 : GetCommData() 실시간정보요청 : GetCommRealData() 체결정보요청 : GetChejanData() 10 void DisconnectRealData 리얼시세를끊는다. 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 종목코드의종목상태를반환한다. 22 LONG GetDataCount 레코드의반복개수를반환한다. 23 BSTR GetOutputValue 수신데이터를반환한다. 24 BSTR GetCommData 수신데이터를반환한다. 25 BSTR GetCommRealData 실시간데이터를반환한다. 26 BSTR GetChejanData 체결잔고데이터를반환한다. 27 BSTR GetThemeGroupList 테마코드와그룹의리스트를반환한다. 28 BSTR GetThemeGroupCode 테마코드에해당하는종목코드를반환한다. 29 BSTR GetFutureList 지수선물코드리스트를반환한다. 30 BSTR GetFutureCodeByIndex 지수선물코드를반환한다. 31 BSTR GetActPriceList 지수옵션행사가리스트를반환한다. 32 BSTR GetMonthList 지수옵션월물리스트를반환한다. 33 BSTR GetOptionCode 지수옵션종목코드를반환한다. 34 BSTR GetOptionCodeByMonth 같은행사가다른월물의종목코드를반환한다. 35 BSTR GetOptionCodeByActPrice 같은월물다른행사가의종목코드를반환한다. 36 BSTR GetSFutureList 주식선물코드리스트를반환한다. 37 BSTR GetSFutureCodeByIndex 주식선물코드를반환한다. 38 BSTR GetSActPriceList 주식옵션행사가를반환한다. 39 BSTR GetSMonthList 주식옵션월물을반환한다. 40 BSTR GetSOptionCode 주식옵션코드를반환한다. 41 BSTR GetSOptionCodeByMonth 주식옵션월물만변경된코드를반환한다. 42 BSTR GetSOptionCodeByActPric e 주식옵션행사가만변경된코드를반환한다. 43 BSTR GetSFOBasisAssetList 주식선옵기초자산코드와이름을반환한다. 44 BSTR GetOptionATM 지수옵션 ATM을반환한다. 45 BSTR GetSOptionATM 주식옵션 ATM을반환한다. 13 / 53
46 BSTR GetBranchCodeName 회원사코드와이름을반환한다. 47 BSTR CommInvestRqData 지원하지않는함수. 48 LONG SetInfoData 아이디별자동로그인이접속이필요할때사용한다. 49 LONG SetRealReg 실시간등록을한다. 50 Void SetRealRemove 종목별실시간해제 (SetRealReg로등록한종목만해제가능 ) 51 long GetConditionLoad 서버에저장된사용자조건식을가져온다. 52 BSTR GetConditionNameList 조건검색에필요한조건명리스트를받아온다. 53 void SendCondition 조건검색조회TR을송신한다. 54 void SendConditionStop 실시간조건검색을중지한다. 55 Variant GetCommDataEx 차트조회한데이터전부를배열로받아온다. 5.4 OpenAPI컨트롤이벤트 - 차트컨트롤에서발생하는컨트롤이벤트목록은다음과같다. ID 타입 이름 설명 1 Void OnReceiveTrData Tran 수신시이벤트 2 Void OnReceiveRealData 실시간시세이벤트 3 Void OnReceiveMsg 수신메시지이벤트 4 Void OnReceiveChejanData 주문접수 / 확인수신시이벤트 5 Void OnEventConnect 통신연결상태변경시이벤트 6 void OnReceiveRealCondition 조건검색실시간편입, 이탈종목이벤트 7 void OnReceiveTrCondition 조건검색조회응답이벤트 8 Void OnReceiveConditionVer 로컬에사용자조건식저장성공여부응답이벤트 14 / 53
6. 제어함수상세명세서 - OpenAPI Active X 컨트롤은프로퍼티 (property) 및메소드 (method) 를통하여제어및조작을할수있다. 이러한차트를제어하는함수에대한상세명세는다름과같습니다. - 개별항목검색의편의를위하여 ID 순으로정렬하였습니다. 6.1 메소드 (Method) 1) CommConnect 원형 LONG CommConnect() 설명로그인윈도우를실행한다. 입력값 반환값 없음 0 - 성공, 음수값은실패 로그인이성공하거나실패하는경우 OnEventConnect 이벤트가발생하고이벤트의인자값으로 로그인성공여부를알수있다. 2) CommTerminate 원형 void CommTerminate() 설명 더이상지원하지않는함수 입력값 없음 반환값 없음 통신연결상태는 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자리의화면번호 Ex) openapi.commrqdata( RQ_1, OPT00001, 0, 0101 ); 4) GetLoginInfo 원형 BSTR GetLoginInfo(BSTR stag) 설명 로그인한사용자정보를반환한다. 입력값 BSTR stag : 사용자정보구분 TAG값 ( ) 15 / 53
반환값 TAG값에따른데이터반환 BSTR stag에들어갈수있는값은아래와같음 ACCOUNT_CNT 전체계좌개수를반환한다. "ACCNO" 전체계좌를반환한다. 계좌별구분은 ; 이다. USER_ID - 사용자 ID를반환한다. USER_NAME 사용자명을반환한다. KEY_BSECGB 키보드보안해지여부. 0: 정상, 1: 해지 FIREW_SECGB 방화벽설정여부. 0: 미설정, 1: 설정, 2: 해지 Ex) openapi.getlogininfo( ACCOUNT_CNT ); 5) SendOrder LONG SendOrder( BSTR srqname, BSTR sscreenno, BSTR saccno, LONG nordertype, 원형 BSTR scode, LONG nqty, LONG nprice, BSTR shogagb, BSTR sorgorderno) 설명주식주문을서버로전송한다. srqname - 사용자구분요청명 sscreenno - 화면번호 [4] saccno - 계좌번호 [10] nordertype - 주문유형 (1: 신규매수, 2: 신규매도, 3: 매수취소, 4: 매도취소, 5: 매수정정, 6: 매도정정 ) 입력값 scode, - 주식종목코드 nqty 주문수량 nprice 주문단가 shogagb - 거래구분 sorgorderno 원주문번호 반환값에러코드 <4. 에러코드표참고 > shogagb 00: 지정가, 03: 시장가, 05: 조건부지정가, 06: 최유리지정가, 07: 최우선지정가, 10: 지정가IOC, 13: 시장가IOC, 16: 최유리IOC, 20: 지정가FOK, 23: 시장가FOK, 26: 최유리FOK, 61: 장전시간외종가, 62: 시간외단일가, 81: 장후시간외종가 시장가, 최유리지정가, 최우선지정가, 시장가IOC, 최유리IOC, 시장가FOK, 최유리FOK, 장전시간외, 장후시간외주문시주문가격을입력하지않습니다. ex) 지정가매수 - openapi.sendorder( RQ_1, 0101, 5015123410, 1, 000660, 10, 48500, 00, ); 시장가매수 - openapi.sendorder( RQ_1, 0101, 5015123410, 1, 000660, 10, 0, 03, ); 매수정정 - openapi.sendorder( RQ_1, 0101, 5015123410, 5, 000660, 10, 49500, 00, 1 ); 매수취소 - openapi.sendorder( RQ_1, 0101, 5015123410, 3, 000660, 10, 0, 00, 2 ); 16 / 53
6) SendOrderCredit LONG SendOrderCredit( LPCTSTR srqname, LPCTSTR sscreenno, LPCTSTR saccno, LONG nordertype, LPCTSTR scode 원형, LONG nqty, LONG nprice, LPCTSTR shogagb, LPCTSTR screditgb, LPCTSTR sloandate, LPCTSTR sorgorderno ) 설명신용주식주문을서버로전송한다. srqname - 사용자구분요청명 sscreenno - 화면번호 [4] saccno - 계좌번호 [10] nordertype - 주문유형 (1: 신규매수, 2: 신규매도, 3: 매수취소, 4: 매도취소, 5: 매수정정, 6: 매도정정 ) scode, - 주식종목코드입력값 nqty 주문수량 nprice 주문단가 shogagb 거래구분 screditgb 신용구분 sloandate 대출일 sorgorderno 원주문번호반환값에러코드 <4. 에러코드표참고 > screditgb 신용구분 ( 신용매수 :03, 신용매도융자상환 :33, 신용매도융자합 :99) 신용매수주문 - 신용구분값 03, 대출일은 공백 신용매도융자상환주문 - 신용구분값 33, 대출일은종목별대출일입력 - OPW00005/OPW00004 TR조회로대출일조회신용매도융자합주문시 - 신용구분값 99, 대출일은 99991231 - 단신용잔고 5개까지만융자합주문가능 나머지입력값은 SendOrder() 함수설명참고 7) SetInputValue 원형 void SetInputValue(BSTR sid, BSTR svalue) 설명 Tran 입력값을서버통신전에입력한다. 입력값 sid 아이템명 svalue 입력값 반환값 없음 Ex) openapi.setinputvalue( 종목코드, 000660 ); openapi.setinputvalue( 계좌번호, 5015123401 ); 17 / 53
8) SetOutputFID 원형 LONG SetOutputFID(BSTR sid) 설명 1.0.0.1 버전이후사용하지않음. 입력값반환값 9) CommGetData 원형 BSTR CommGetData( ) 설명이함수는지원하지않을것이므로용도에맞는전용함수를사용할것 ( 참고 ) 입력값반환값조회정보요청 - openapi.getcommdata( OPT00001, RQName, 0, 현재가 ); 실시간정보요청 - openapi.getcommrealdata( 000660, 10); 체결정보요청 - openapi.getchejandata(9203); 10) DisconnectRealData 원형 void DisconnectRealData(LPCTSTR sscnno) 설명 화면내모든리얼데이터요청을제거한다. 입력값 sscnno 화면번호 [4] 반환값 없음 화면을종료할때반드시위함수를호출해야한다. Ex) openapi.disconnectrealdata( 0101 ); 11) GetRepeatCnt 원형 LONG GetRepeatCnt(LPCTSTR strcode, LPCTSTR srecordname) 설명 레코드반복횟수를반환한다. 입력값 strcode Tran 명 srecordname 레코드명 반환값 레코드의반복횟수 Ex) openapi.getrepeatcnt( OPT00001, 주식기본정보 ); 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 종목간구분은 ; 이다. 18 / 53
ntypeflag 0: 주식관심종목정보, 3: 선물옵션관심종목정보 ex) openapi.commkwrqdata( 000660;005930, 0, 2, 0, RQ_1, 0101 ); 13) GetAPIModulePath 원형 BSTR GetAPIModulePath() 설명 OpenAPI모듈의경로를반환한다. 입력값 없음 반환값 경로 14) GetCodeListByMarket 원형 BSTR GetCodeListByMarket(LPCTSTR smarket) 설명 시장구분에따른종목코드를반환한다. 입력값 smarket 시장구분 반환값 종목코드리스트, 종목간구분은 ; 이다. smarket 0: 장내, 3:ELW, 4: 뮤추얼펀드, 5: 신주인수권, 6: 리츠, 8:ETF, 9: 하이일드펀드, 10: 코스닥, 30:K-OTC, 50: 코넥스 (KONEX) 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) 19 / 53
설명 종목코드의감리구분을반환한다. 입력값 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%, 거래정지, 관리종목, 감리종목, 투자유의종목, 담보대출, 액면분할, 신용가능 22) GetDataCount 원형 LONG GetDataCount(LPCTSTR strrecordname) 설명 레코드의반복개수를반환한다. 입력값 strrecordname 레코드명 반환값 레코드반복개수 Ex) openapi.getdatacount( 주식기본정보 ); 23) GetOutputValue 원형 BSTR GetOutputValue(LPCTSTR strrecordname, long nrepeatidx, long nitemidx) 설명 레코드의반복순서와아이템의출력순서에따라수신데이터를반환한다. 입력값 nrepeatidx 반복순서 nitemidx 아이템순서 반환값 수신데이터 Ex) 현재가출력 - openapi.getoutputvalue( 주식기본정보, 0, 36); 20 / 53
24) GetCommData 원형 BSTR GetCommData(LPCTSTR strtrcode, LPCTSTR strrecordname, long nindex, LPCTSTR stritemname) 설명 수신데이터를반환한다. strtrcode Tran 코드 입력값 strrecordname 레코드명 nindex 복수데이터인덱스 stritemname 아이템명 반환값 수신데이터 Ex) 현재가출력 - openapi.getcommdata( OPT00001, 주식기본정보, 0, 현재가 ); 25) GetCommRealData 원형 BSTR GetCommRealData(LPCTSTR strcode, long nfid) 설명 실시간시세데이터를반환한다. 입력값 strcode 종목코드 nfid 실시간아이템 반환값 수신데이터 Ex) 현재가출력 - openapi.getcommrealdata( 039490, 10); 참고 ) strcode는 OnReceiveRealData 첫번째매개변수를사용 26) GetChejanData 원형 BSTR GetChjanData(long nfid) 설명 체결잔고데이터를반환한다. 입력값 nfid 체결잔고아이템 반환값 수신데이터 Ex) 현재가출력 openapi.getchejandata(10); 27) GetThemeGroupList 원형 BSTR GetThemeGroupList(long ntype) 설명 테마코드와테마명을반환한다. 입력값 ntype 정렬순서 (0: 코드순, 1: 테마순 ) 반환값 코드와코드명리스트 반환값의코드와코드명구분은 코드의구분은 ; Ex) 100 태양광 _ 폴리실리콘 ;152 합성섬유 28) GetThemeGroupCode 원형 BSTR GetThemeGroupCode(LPCTSTR strthemecode) 설명 테마코드에소속된종목코드를반환한다. 입력값 strthemecode 테마코드 반환값 종목코드리스트 반환값의종목코드간구분은 ; Ex) A000660;A005930 21 / 53
29) GetFutureList 원형 BSTR GetFutrueList() 설명 지수선물리스트를반환한다. 입력값 반환값 종목코드리스트 반환값의종목코드간구분은 ; Ex) 101J9000;101JC000 30) GetFutureCodeByIndex 원형 BSTR GetFutreCodeByIndex(int nindex) 설명 지수선물코드를반환한다. 입력값 nindex 0~3 지수선물코드, 4~7 지수스프레드 반환값 종목코드 Ex) 최근월선물 - openapi.getfuturecodebyinex(0); 최근월스프레드 - openapi.getfuturecodebyinex(4); 31) GetActPriceList 원형 BSTR GetActPriceList() 설명 지수옵션행사가리스트를반환한다. 입력값 반환값 행사가 반환값의행사가간구분은 ; Ex) 265.00;262.50;260.00 32) GetMonthList 원형 BSTR GetMonthList() 설명 지수옵션월물리스트를반환한다. 입력값 반환값 월물 반환값의월물간구분은 ; Ex) 201412;201409;201408;201407;201407;201408;201409;201412 33) GetOptionCode 원형 BSTR GetOptionCode(LPCTSTR stractprice, int ncp, LPCTSTR strmonth) 설명 행사가와월물콜풋으로종목코드를구한다. stractprice 행사가 ( 소수점포함 ) 입력값 ncp 콜풋구분 2: 콜, 3: 풋 strmonth 월물 (6자리) 반환값 종목코드 Ex) openapi.getoptioncode( 260.00, 2, 201407 ); 22 / 53
34) GetOptionCodeByMonth 원형 BSTR GetOptionCodeByMonth(LPCTSTR strcode, int ncp, LPCTSTR strmonth) 설명 입력된종목코드와동일한행사가의코드중입력한월물의코드를구한다. strcode 종목코드 입력값 ncp 콜풋구분 2: 콜, 3: 풋 strmonth 월물 (6자리) 반환값 종목코드 Ex) openapi.getoptioncodebymonth( 201J7260, 2, 201412 ); 결과값 = 201JC260 35) GetOptionCodeByActPrice 원형 BSTR GetOptionCodeByActPrice(LPCTSTR strcode, int ncp, int Tick) 설명 입력된종목코드와동일한월물의코드중입력한틱만큼벌어진코드를구한다. strcode 종목코드 입력값 ncp 콜풋구분 2: 콜, 3: 풋 ntick 행사가틱 반환값 종목코드 Ex) openapi.getoptioncodebyactprice( 201J7260, 2, -1); 결과값 = 201J7262 36) GetSFutureList 원형 BSTR GetSFutureList(LPCTSTR strbaseassetcode) 설명 주식선물코드리스트를반환한다. 입력값 strbaseassetcode 기초자산코드 반환값 종목코드리스트 출력값의코드간구분은 ; 이다. 37) GetSFutureCodeByIndex 원형 BSTR GetSFutureCodeByIndex(LPCTSTR strbaseassetcode, int nindex) 설명 주식선물코드를반환한다. 입력값 strbaseassetcode 기초자산코드 nindex 0~3 지수선물코드, 4~7 지수스프레드, 8~11 스타선물, 12~ 스타스프레드 반환값 종목코드 Ex) openapi.getsfuturecodebyindex( 11, 0); 38) GetSActPriceList 원형 BSTR GetSActPriceList(LPCTSTR strbaseassetgb) 설명 주식옵션행사가리스트를반환한다. 입력값 strbaseassetgb 기초자산코드구분 반환값 행사가리스트, 행사가간구분은 ; Ex) openapi.getsactpricelist( 11 ); 23 / 53
39) GetSMonthList 원형 BSTR GetSMonthList(LPCTSTR strbaseassetgb) 설명 주식옵션월물리스트를반환한다. 입력값 strbaseassetgb 기초자산코드구분 반환값 월물리스트, 월물간구분은 ; Ex) openapi.getsactpricelist( 11 ); 40) GetSOptionCode 원형 BSTR GetSOptionCode(LPCTSTR strbaseassetgb, LPCTSTR stractprice, int ncp, LPCTSTR strmonth) 설명 주식옵션코드를반환한다. strbaseassetgb 기초자산코드구분 입력값 stractprice 행사가 ncp 콜풋구분 strmonth 월물 반환값 주식옵션코드 Ex) openapi.getsoptioncode( 11, 1300000, 2, 1412 ); 41) GetSOptionCodeByMonth 원형 BSTR GetSOptionCodeByMonth(LPCTSTR strbaseassetgb, LPCTSTR strcode, int ncp, LPCTSTR strmonth) 설명 입력한주식옵션코드에서월물만변경하여반환한다. strbaseassetgb 기초자산코드구분 입력값 strcode 종목코드 ncp 콜풋구분 strmonth 월물 반환값 주식옵션코드 Ex) openapi.getsoptioncodebymonth( 11, 211J8045, 2, 1412 ); 42) GetSOptionCodeByActPrice 원형 BSTR GetSOptionCodeByActPrice(LPCTSTR strbaseassetgb, LPCTSTR strcode, int ncp, int ntick) 설명 입력한주식옵션코드에서행사가만변경하여반환한다. strbaseassetgb 기초자산코드구분 입력값 strcode 종목코드 ncp 콜풋구분 ntick 월물 반환값 주식옵션코드 Ex) openapi.getsoptioncodebyactprice( 11, 211J8045, 2, 4); 43) GetSFOBasisAssetList 원형 BSTR GetSFOBasisAssetList() 설명 주식선옵기초자산코드 / 종목명을반환한다. 24 / 53
입력값 반환값 기초자산코드 / 종목명, 코드와종목명구분은 코드간구분은 ; Ex) 211J8045 삼성전자 C 201408;212J8009 SK 텔레콤 C 201408 Ex) openapi.getsfobasisassetlist(); 44) GetOptionATM 원형 BSTR GetOptionATM() 설명 지수옵션 ATM을반환한다. 입력값 반환값 ATM Ex) openapi.getoptionatm(); 45) GetSOptionATM 원형 BSTR GetSOptionATM(LPCTSTR strbaseassetgb) 설명 주식옵션 ATM을반환한다. 입력값 반환값 ATM Ex) openapi.getsoptionatm( 11 ); 46) GetBranchCodeName 원형 BSTR GetBranchCodeName() 설명 회원사코드와이름을반환합니다. 입력값 반환값 회원사코드 회원사명 ; 회원사코드 회원사명 ; Ex) openapi.getbranchcodename(); 47) CommInvestRqData 원형 BSTR CommINvestRqData(LPCTSTR smarketgb, LPCTSTR srqname, LPCTSTR sscreenno) 설명 지원하지않는함수 smarketgb 시장구분 001: 코스피, 002: 코스닥, 003: 선물, 004: 콜옵션, 005: 풋옵션, 006: 스타선물 입력값 007: 주식선물, 008:3년국채, 009:5년국채, 010:10년국채, 011: 달러선물, 012: 엔선물 013: 유로선물, 014: 미니금선물, 015: 금선물, 016: 돈육선물, 017: 달러콜옵션, 018: 달러풋옵션 srqname 사용자구분값 sscreenno 화면번호 반환값 통신결과 Ex) openapi.comminvestrqdata( T00108;T00109, 0, 2, RQ_1, 0101 ); 48) SetInfoData 원형 LONG SetInfoData(LPCTSTR sinfodata) 설명 다수의아이디로자동로그인이필요할때사용한다. 25 / 53
입력값 반환값 sinfodata 아이디 통신결과 Ex) openapi.setinfodata( UserID ); 49) SetRealReg SetRealReg(LPCTSTR strscreenno, LPCTSTR strcodelist, LPCTSTR strfidlist, LPCTSTR 원형 strrealtype) 설명실시간등록을한다. strscreenno 실시간등록할화면번호 strcodelist 실시간등록할종목코드 ( 복수종목가능 종목1; 종목2; 종목3;. ) 입력값 strfidlist 실시간등록할 FID( FID1;FID2;FID3;.. ) strrealtype 0, 1 타입반환값통신결과 strrealtype이 0 으로하면같은화면에서다른종목코드로실시간등록을하게되면마지막에사용한종목코드만실시간등록이되고기존에있던종목은실시간이자동해지됨. 1 로하면같은화면에서다른종목들을추가하게되면기존에등록한종목도함께실시간시세를받을수있음. 꼭같은화면이여야하고최초실시간등록은 0 으로하고이후부터 1 로등록해야함. 50) SetRealRemove 원형 Void SetRealRemove(LPCTSTR strscrno, LPCTSTR strdelcode) 설명 종목별실시간해제. 입력값 strscrno 실시간해제할화면번호 strdelcode 실시간해제할종목. 반환값 통신결과 SetRealReg() 함수로실시간등록한종목만실시간해제할수있다. 51) GetConditionLoad 원형 long GetConditionLoad() 설명서버에저장된사용자조건식을조회해서임시로파일에저장. 입력값반환값사용자조건식을파일로임시저장. System 폴더에아이디 _NewSaveIndex.dat파일로저장된다. Ocx가종료되면삭제시킨다. 조건검색사용시이함수를최소한번은호출해야조건검색을할수있다. 영웅문에서사용자조건을수정및추가하였을경우에도최신의사용자조건을받고싶으면다시조회해야한다. 52) GetConditionNameList 원형 BSTR GetConditionNameList() 설명 조건검색조건명리스트를받아온다. 입력값 반환값 조건명리스트 ( 인덱스^조건명 ) 조건명리스트를구분 ( ; ) 하여받아온다. Ex) 인덱스1^조건명1; 인덱스2^조건명2; 인덱스3^조건명3; 26 / 53
53) SendCondition 원형 BOOL SendCondition(LPCTSTR strscrno, LPCTSTR strconditionname, int nindex, int nsearch) 설명 조건검색종목조회TR송신한다. LPCTSTR strscrno : 화면번호 입력값 LPCTSTR strconditionname : 조건명 int nindex : 조건명인덱스 int nsearch : 조회구분 (0: 일반조회, 1: 실시간조회, 2: 연속조회 ) 반환값 성공 1, 실패 0 단순조건식에맞는종목을조회하기위해서는조회구분을 0으로하고, 실시간조건검색을하기위해서는조회구분을 1로한다. OnReceiveTrCondition으로결과값이온다. 연속조회가필요한경우에는응답받는곳에서연속조회여부에따라연속조회를송신하면된다. 54) SendConditionStop 원형 Void SendConditionStop(LPCTSTR strscrno, LPCTSTR strconditionname, int nindex) 설명조건검색실시간중지TR을송신한다. LPCTSTR strscrno : 화면번호입력값 LPCTSTR strconditionname : 조건명 int nindex : 조건명인덱스반환값해당조건명의실시간조건검색을중지하거나, 다른조건명으로바꿀때이전조건명으로실시간조건검색을반드시중지해야한다. 화면종료시에도실시간조건검색을한조건명으로전부중지해줘야한다. 55) GetCommDataEx 원형 VARIANT GetCommDataEx(LPCTSTR strtrcode, LPCTSTR strrecordname) 설명 차트조회데이터를배열로받아온다. 입력값 LPCTSTR strtrcode : 조회한TR코드 LPCTSTR strrecordname: 조회한 TR명 반환값 조회데이터가많은차트경우 GetCommData() 로항목당하나씩받아오는것보다한번에데이터전부를받아서사용자가처리할수있도록배열로받는다. 6.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 명 27 / 53
반환값 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 void OnReceiveRealData(LPCTSTR sjongmokcode, LPCTSTR srealtype, LPCTSTR 원형 srealdata) 설명실시간데이터를받은시점을알려준다. sjongmokcode 종목코드입력값 srealtype 리얼타입 srealdata 실시간데이터전문반환값없음 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: 특이신호 sfidlist 데이터구분은 ; 이다. 28 / 53
5) OnEventConnect 원형 void OnEventConnect(LONG nerrcode); 설명 서버접속관련이벤트 입력값 LONG nerrcode : 에러코드 반환값 없음 nerrcode가 0이면로그인성공, 음수면실패음수인경우는에러코드참조 6) OnReceiveCondition 원형 void OnReceiveRealCondition(LPCTSTR strcode, LPCTSTR strtype, LPCTSTR strconditionname, LPCTSTR strconditionindex) 설명 조건검색실시간편입, 이탈종목을받을시점을알려준다. LPCTSTR strcode : 종목코드 입력값 LPCTSTR strtype : 편입 ( I ), 이탈 ( D ) LPCTSTR strconditionname : 조건명 LPCTSTR strconditionindex : 조건명인덱스 반환값 없음 strconditionname에해당하는종목이실시간으로들어옴. strtype으로편입된종목인지이탈된종목인지구분한다. 7) OnReceiveTrCondition 원형 void OnReceiveTrCondition(LPCTSTR sscrno, LPCTSTR strcodelist, LPCTSTR strconditionname, int nindex, int nnext) 설명 조건검색조회응답으로종목리스트를구분자 ( ; ) 로붙어서받는시점. LPCTSTR sscrno : 종목코드 LPCTSTR strcodelist : 종목리스트 ( ; 로구분 ) 입력값 LPCTSTR strconditionname : 조건명 int nindex : 조건명인덱스 int nnext : 연속조회 (2: 연속조회, 0: 연속조회없음 ) 반환값 없음 8) OnReceiveConditionVer 원형 void OnReceiveConditionVer(long lret, LPCTSTR smsg) 설명 로컬에사용자조건식저장성공여부를확인하는시점 입력값 long lret : 사용자조건식저장성공여부 (1: 성공, 나머지실패 ) 반환값 없음 29 / 53
7. 에러코드표 리턴코드 설명 0 OP_ERR_NONE 정상처리 -10 OP_ERR_FAIL 실패 -100 OP_ERR_LOGIN 사용자정보교환실패 -101 OP_ERR_CONNECT 서버접속실패 -102 OP_ERR_VERSION 버전처리실패 -103 OP_ERR_FIREWALL 개인방화벽실패 -104 OP_ERR_MEMORY 메모리보호실패 -105 OP_ERR_INPUT 함수입력값오류 -106 OP_ERR_SOCKET_CLOSED 통신연결종료 -200 OP_ERR_SISE_OVERFLOW 시세조회과부하 -201 OP_ERR_RQ_STRUCT_FAIL 전문작성초기화실패 -202 OP_ERR_RQ_STRING_FAIL 전문작성입력값오류 -203 OP_ERR_NO_DATA 데이터없음. -204 OP_ERR_OVER_MAX_DATA 조회가능한종목수초과 -205 OP_ERR_DATA_RCV_FAIL 데이터수신실패 -206 OP_ERR_OVER_MAX_FID 조회가능한FID수초과 -207 OP_ERR_REAL_CANCEL 실시간해제오류 -300 OP_ERR_ORD_WRONG_INPUT 입력값오류 -301 OP_ERR_ORD_WRONG_ACCTNO 계좌비밀번호없음 -302 OP_ERR_OTHER_ACC_USE 타인계좌사용오류 -303 OP_ERR_MIS_2BILL_EXC 주문가격이20억원을초과 -304 OP_ERR_MIS_5BILL_EXC 주문가격이50억원을초과 -305 OP_ERR_MIS_1PER_EXC 주문수량이총발행주수의1% 초과오류 -306 OP_ERR_MIS_3PER_EXC 주문수량은총발행주수의3% 초과오류 -307 OP_ERR_SEND_FAIL 주문전송실패 -308 OP_ERR_ORD_OVERFLOW 주문전송과부하 -309 OP_ERR_MIS_300CNT_EXC 주문수량300계약초과 -310 OP_ERR_MIS_500CNT_EXC 주문수량500계약초과 -340 OP_ERR_ORD_WRONG_ACCTINFO 계좌정보없음 -500 OP_ERR_ORD_SYMCODE_EMPTY 종목코드없음 30 / 53
8. 실시간 FID 8.1 주식시세 FID 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 13 누적거래량, 누적첵ㄹ량 14 누적거래대금 16 시가 17 고가 18 저가 25 전일대비기호 26 전일거래량대비 ( 계약, 주 ) 29 거래대금증감 30 전일거래량대비 ( 비율 ) 31 거래회전율 32 거래비용 311 시가총액 ( 억 ) 설명 8.2 주식체결 FID 설명 20 체결시간 (HHMMSS) 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 15 거래량, 체결량 13 누적거래량, 누적체결량 14 누적거래대금 16 시가 17 고가 18 저가 25 전일대비기호 26 전일거래량대비 ( 계약, 주 ) 29 거래대금증감 30 전일거래량대비 ( 비율 ) 31 거래회전율 32 거래비용 228 체결강도 311 시가총액 ( 억 ) 290 장구분 691 K,O 접근도 (ELW조기종료발생기준가격, 지수 ) 31 / 53
8.3 주식우선호가 8.4 주식호가잔량 FID 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 FID 21 호가시간 41 매도호가1 61 매도호가수량1 81 매도호가직전대비1 51 매수호가1 71 매수호가수량1 91 매수호가직전대비1 42 매도호가1 62 매도호가수량2 82 매도호가직전대비2 52 매수호가2 72 매수호가수량2 92 매수호가직전대비2 43 매도호가3 63 매도호가수량3 83 매도호가직전대비3 53 매수호가3 73 매수호가수량3 93 매수호가직전대비3 44 매도호가4 64 매도호가수량4 84 매도호가직전대비4 54 매수호가4 74 매수호가수량4 94 매수호가직전대비4 45 매도호가5 65 매도호가수량5 85 매도호가직전대비5 55 매수호가5 75 매수호가수량5 95 매수호가직전대비5 46 매도호가6 66 매도호가수량6 86 매도호가직전대비6 56 매수호가6 76 매수호가수량6 96 매수호가직전대비6 47 매도호가7 설명 설명 32 / 53
67 매도호가수량7 87 매도호가직전대비7 57 매수호가7 77 매수호가수량7 97 매수호가직전대비7 48 매도호가8 68 매도호가수량8 88 매도호가직전대비8 58 매수호가8 78 매수호가수량8 98 매수호가직전대비8 49 매도호가9 69 매도호가수량9 89 매도호가직전대비9 59 매수호가9 79 매수호가수량9 99 매수호가직전대비9 50 매도호가10 70 매도호가수량10 90 매도호가직전대비10 60 매수호가10 80 매수호가수량10 100 매수호가직전대비10 121 매도호가총잔량 122 매도호가총잔량직전대비 125 매수호가총잔량 126 매수호가총잔량직전대비 23 예상체결가 24 예상체결수량 128 순매수잔량 ( 총매수잔량-총매도잔량 ) 129 매수비율 138 순매도잔량 ( 총매도잔량-총매수잔량 ) 139 매도비율 200 예상체결가전일종가대비 201 예상체결가전일종가대비등락율 238 예상체결가전일종가대비기호 291 예상체결가 292 예상체결량 293 예상체결가전일대비기호 294 예상체결가전일대비 295 예상체결가전일대비등락율 621 LP매도호가수량1 631 LP매수호가수량1 622 LP매도호가수량2 632 LP매수호가수량2 623 LP매도호가수량3 633 LP매수호가수량3 33 / 53
624 LP매도호가수량4 634 LP매수호가수량4 625 LP매도호가수량5 635 LP매수호가수량5 626 LP매도호가수량6 636 LP매수호가수량6 627 LP매도호가수량7 637 LP매수호가수량7 628 LP매도호가수량8 638 LP매수호가수량8 629 LP매도호가수량9 639 LP매수호가수량9 630 LP매도호가수량10 640 LP매수호가수량10 13 누적거래량, 누적체결량 299 전일거래량대비예상체결률 215 장운영구분 216 투자자별 ticker 8.5 선물시세 FID 20 체결시간 (HHMMSS) 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 15 거래량, 체결량 13 누적거래량, 누적체결량 14 누적거래대금 16 시가 17 고가 18 저가 195 미결제약정 182 이론가 184 이론베이시스 183 시장베이시스 186 괴리율 181 미결제약정전일대비 185 괴리도 25 전일대비기호 197 KOSPI200 26 전일거래량대비 ( 계약, 주 ) 246 시초미결제약정수량 247 최고미결제약정수량 248 최저미결제약정수량 설명 34 / 53
30 전일거래량대비 ( 비율 ) 196 미결제증감 8.6 선물호가잔량 FID 21 호가시간 (HHMMSS) 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 41 매도호가1 61 매도호가수량1 81 매도호가직전대비1 101 매도호가건수1 51 매수호가1 71 매수호가수량1 91 매수호가직전대비1 111 매수호가건수1 42 매도호가2 62 매도호가수량1 82 매도호가직전대비2 102 매도호가건수2 52 매수호가2 72 매수호가수량2 92 매수호가직전대비2 112 매수호가건수2 43 매도호가3 63 매도호가수량3 83 매도호가직전대비3 103 매도호가건수3 53 매수호가3 73 매수호가수량3 93 매수호가직전대비3 113 매수호가건수3 44 매도호가4 64 매도호가수량4 84 매도호가직전대비4 104 매도호가건수4 54 매수호가4 74 매수호가수량4 94 매수호가직전대비4 114 매수호가건수4 45 매도호가5 65 매도호가수량5 85 매도호가직전대비5 105 매도호가건수5 55 매수호가5 75 매수호가수량5 설명 35 / 53
95 매수호가직전대비5 115 매수호가건수5 121 매도호가총잔량 122 매도호가총잔량직전대비 123 매도호가총건수 125 매수호가총잔량 126 매수호가총잔량직전대비 127 매수호가총건수 137 호가순잔량 128 순매수잔량 ( 총매수잔량-총매도잔량 ) 13 누적거래량, 누적체결량 23 예상체결가 238 예상체결가전일종가대비기호 200 예상체결가전일종가대비 201 예상체결가전일종가대비등락율 291 예상체결가 293 예상체결가전일대비기호 294 예상체결가전일대비 295 예상체결가전일대비등락율 8.7 선물이론가 FID 195 미결제약정 182 이론가 184 이론베이시스 183 시장베이시스 186 괴리율 181 미결제약정전일대비 185 괴리도 246 시초미결제약정수량 247 최고미결제약정수량 248 최저미결제약정수량 설명 8.8 옵션시세 FID 20 체결시간 (HHMMSS) 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 15 거래량, 체결량 13 누적거래량, 누적체결량 14 누적거래대금 16 시가 17 고가 설명 36 / 53
18 저가 195 미결제약정 182 이론가 186 괴리율 190 델타 191 감마 193 세타 192 베가 194 로 181 미결제약정전일대비 25 전일대비기호 26 전일거래량대비 ( 계약, 주 ) 137 호가순잔량 187 내재가치 197 KOSPI200 246 시초미결제약정수량 247 최고미결제약정수량 248 최저미결제약정수량 219 선물최근월물지수 196 미결제증감 188 시간가치 189 내재변동성 (I.V.) 30 전일거래량대비 ( 비율 ) 391 기준가대비시고등락율 392 기준가대가등락율 393 기준가대비저가등락율 8.9 옵션호가잔량 FID 21 호가시간 (HHMMSS) 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 41 매도호가1 61 매도호가수량1 81 매도호가직전대비1 101 매도호가건수1 51 매수호가1 71 매수호가수량1 91 매수호가직전대비1 111 매수호가건수1 42 매도호가2 62 매도호가수량1 82 매도호가직전대비2 102 매도호가건수2 52 매수호가2 72 매수호가수량2 설명 37 / 53
92 매수호가직전대비2 112 매수호가건수2 43 매도호가3 63 매도호가수량3 83 매도호가직전대비3 103 매도호가건수3 53 매수호가3 73 매수호가수량3 93 매수호가직전대비3 113 매수호가건수3 44 매도호가4 64 매도호가수량4 84 매도호가직전대비4 104 매도호가건수4 54 매수호가4 74 매수호가수량4 94 매수호가직전대비4 114 매수호가건수4 45 매도호가5 65 매도호가수량5 85 매도호가직전대비5 105 매도호가건수5 55 매수호가5 75 매수호가수량5 95 매수호가직전대비5 115 매수호가건수5 121 매도호가총잔량 122 매도호가총잔량직전대비 123 매도호가총건수 125 매수호가총잔량 126 매수호가총잔량직전대비 127 매수호가총건수 137 호가순잔량 128 순매수잔량 ( 총매수잔량-총매도잔량 ) 13 누적거래량, 누적체결량 23 예상체결가 238 예상체결가전일종가대비기호 200 예상체결가전일종가대비 201 예상체결가전일종가대비등락율 291 예상체결가 293 예상체결가전일대비기호 294 예상체결가전일대비 295 예상체결가전일대비등락율 38 / 53
8.10 옵션이론가 FID 195 미결제약정 182 이론가 186 괴리율 190 델타 191 감마 193 세타 192 베가 194 로 181 미결제약정전일대비 246 시초미결제약정수량 247 초고미결제약정수량 248 최저미결제약정수량 187 내재가치 188 시간가치 189 내재변동성 (I.V.) 설명 8.11 주식옵션시세 FID 20 체결시간 (HHMMS) 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 15 거래량, 체결량 13 누적거래량, 누적체결량 14 누적거래대금 16 시가 17 고가 18 저가 195 미결제약정 182 이론가 186 괴리율 190 델타 191 감마 193 세타 192 베가 194 로 181 미결제약정전일대비 25 전일대비기호 26 전일거래량대비 ( 계약, 주 ) 설명 39 / 53
8.12 주식옵션호가잔량 FID 21 호가시간 (YYYYMMDD) 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 41 매도호가1 42 매도호가2 43 매도호가3 44 매도호가4 45 매도호가5 61 매도호가수량1 62 매도호가수량2 63 매도호가수량3 64 매도호가수량4 65 매도호가수량5 101 매도호가건수1 102 매도호가건수2 103 매도호가건수3 104 매도호가건수4 105 매도호가건수5 51 매수호가1 52 매수호가2 53 매수호가3 54 매수호가4 55 매수호가5 71 매수호가수량1 72 매수호가수량2 73 매수호가수량3 74 매수호가수량4 75 매수호가수량5 111 매수호가건수1 112 매수호가건수2 113 매수호가건수3 114 매수호가건수4 115 매수호가건수5 121 매도호가총잔량 123 매도호가총건수 125 매수호가총잔량 127 매수호가총건수 23 예상체결가 238 예상체결가전일종가대비기호 200 예상체결가전일종가대비 201 예상체결가전일종가대비등락율 291 예상체결가 293 예상체결가전일대비기호 294 예상체결가전일대비 설명 40 / 53
295 예상체결가전일대비등락율 8.13 주식옵션이론가 FID 195 미결제약정 182 이론가 186 괴리율 190 델타 191 감마 193 세타 192 베가 194 로 181 미결제약정전일대비 8.14 주식옵션우선호가 8.15 업종지수 FID 10 현재가, 체결가, 실시간종가 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 FID 20 체결시간 (HHMMSS) 10 현재가, 체결가, 실시간종가 11 전일대비 12 등락율 15 거래량, 체결량 13 누적거래량, 누적체결량 14 누적거래대금 16 시가 17 고가 18 저가 25 전일대비기호 26 전일거래량대비 ( 계약, 주 ) 설명 설명 설명 8.16 업종등락 FID 20 체결시간 (HHMMSS) 252 상승종목수 251 상한종목수 253 보합종목수 255 하락종목수 254 하한종목수 13 누적거래량, 누적체결량 14 누적거래대금 10 현재가, 체결가, 실시간종가 설명 41 / 53
11 전일대비 12 등락율 256 거래형성종목수 257 거래형성비율 25 전일대비기호 8.17 장시작시간 FID 설명 215 장운영구분 (0: 장시작전, 2: 장종료전, 3: 장시작, 4,8: 장종료, 9: 장마감 ) 20 체결시간 (HHMMSS) 214 장시작예상잔여시간 8.18 투자자 ticker FID 216 투자자별 ticker 설명 8.19 주문체결 FID 설명 9201 계좌번호 9203 주문번호 9205 관리자사번 9001 종목코드, 업종코드 912 주문업무분류 (JJ: 주식주문, FJ: 선물옵션, JG: 주식잔고, FG: 선물옵션잔고 ) 913 주문상태 ( 접수, 확인, 체결 ) 302 종목명 900 주문수량 901 주문가격 902 미체결수량 903 체결누계금액 904 원주문번호 905 주문구분 (+ 현금내수,-현금매도 ) 906 매매구분 ( 보통, 시장가 ) 907 매도수구분 (1: 매도,2: 매수 ) 908 주문 / 체결시간 (HHMMSSMS) 909 체결번호 910 체결가 911 체결량 10 현재가, 체결가, 실시간종가 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 914 단위체결가 915 단위체결량 938 당일매매수수료 939 당일매매세금 42 / 53
8.20 잔고 8.21 신용잔고 FID 9201 계좌번호 9001 종목코드, 업종코드 302 종목명 10 현재가, 체결가, 실시간종가 930 보유수량 931 매입단가 932 총매입가 933 주문가능수량 945 당일순매수량 946 매도 / 매수구분 950 당일총매도손익 951 예수금 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 307 기준가 8019 손익율 397 주식옵션거래단위 FID 9201 계좌번호 9001 종목코드, 업종코드 917 신용구분 916 대출일 302 종목명 10 현재가, 체결가, 실시간종가 930 보유수량 931 매입단가 932 총매입가 933 주문가능수량 945 당일순매수량 946 매도 / 매수구분 950 당일총매도손익 951 예수금 27 ( 최우선 ) 매도호가 28 ( 최우선 ) 매수호가 307 기준가 8019 손익율 957 신용금액 958 신용이자 918 만기일 990 당일실현손익 ( 유가 ) 991 당일실현손익률 ( 유가 ) 설명 설명 43 / 53
992 당일실현손익 ( 신용 ) 993 당일실현손익률 ( 신용 ) 959 담보대출수량 8.22 주식시간외호가 FID 21 호가시간 (HHMMSS) 131 시간외매도호가총잔량 132 시간외매도호가총잔량직전대비 135 시간외매수호가총잔량 136 시간외매수호가총잔량직전대비 설명 8.23 주식당일거래원 FID 141 매도거래원1 161 매도거래원수량1 166 매도거래원별증감1 146 매도거래원코드1 271 매도거래원색깔1 151 매수거래원1 171 매수거래원수량1 176 매수거래원별증감1 156 매수거래원코드1 281 매수거래원색깔1 142 매도거래원2 162 매도거래원수량2 167 매도거래원별증감2 147 매도거래원코드2 272 매도거래원색깔2 152 매수거래원2 172 매수거래원수량2 177 매수거래원별증감2 157 매수거래원코드2 282 매수거래원색깔2 143 매도거래원3 163 매도거래원수량3 168 매도거래원별증감3 148 매도거래원코드3 273 매도거래원색깔3 153 매수거래원 173 매수거래원수량3 178 매수거래원별증감3 158 매수거래원코드3 183 매수거래원색깔3 144 매도거래원4 164 매도거래원수량4 설명 44 / 53
169 매도거래원별증감4 149 매도거래원코드4 274 매도거래원색깔4 154 매수거래원4 174 매수거래원수량4 179 매수거래원별증감4 159 매수거래원코드4 284 매수거래원색깔4 145 매도거래원5 165 매도거래원수량5 170 매도거래원별증감5 150 매도거래원코드5 275 매도거래원색깔5 155 매수거래원5 175 매수거래원수량5 180 매수거래원별증감5 160 매수거래원코드5 285 매수거래원색깔5 261 외국계매도추정합 262 외국계매도추정합변동 263 외국계매수추정합 264 외국계매수추정합변동 267 외국계순매수추정합 268 외국계순매수변동 337 거래소구분 (1, KOSPI, 2:KOSDAQ, 3:OTCCBB, 4:KOSPI200선물, 5:KOSPI200옵션, 6: 개별주식옵션, 7: 채권 ) 45 / 53
9. 키움 Open API+ 추가기능가이드 9.1 조건검색 ( 실시간 ) 가이드 1) 영웅문 (HTS) 조건검색 [0150] 통해사용자저장조건을설정합니다. - 모든조건설정은 HTS를통해이루워지며, 실시간조건검색종목이 API를통해송신되는구조입니다. 2) 서버로부터사용자조건식을불러와서파일로로컬에임시저장합니다. -함수 : long GetConditionLoad(); -반환값 : 0( 실패 ), 1( 성공 ) OpenAPI가종료되면임시저장된파일을삭제합니다. OnReceiveConditionVer 이벤트함수로로컬에조건식저장의성공 (TRUE), 실패 (FALSE) 여부와메시지를확인하실수있습니다. 이벤트에서성공여부를확인하신다음에아래의내용으로진행하시면됩니다. OnReceiveConditionVer(BOOL bret, LPCTSTR smsg) 파라메터설명 bret smsg : 조건식저장의성공여부 (TRUE, FALSE) : 메시지 46 / 53
3) 임시로저장한사용자조건식파일에서조건명리스트를전부불러옵니다. -함수 : CString GetConditionNameList(); -반환값 : ex: 조건인덱스1^조건명1; 조건인덱스2^조건명2; ; - ^ 으로조건인덱스과조건명를함께넘겨줍니다. - ; ( 세미콜론 ) 으로구분하여사용하시면됩니다. 4) 조건명 ( 식 ) 에해당하는종목리스트를불러옵니다. -함수 :BOOL SendCondition(LPCTSTR strscrno, LPCTSTR strconditionname, int nindex, int nsearch); -반환값 : FALSE( 실패 ), TRUE( 성공 ) -파라메터설명 strscrno : 화면번호 strconditionname :GetConditionNameList() 로불러온조건명중하나의조건명. nindex : GetCondionNameList() 로불러온조건인덱스. nsearch : 일반조회 (0), 실시간조회 (1), 연속조회 (2) nsearch 를 0으로조회하면단순해당조건명 ( 식 ) 에맞는종목리스트를받아올수있습니다. 1로조회하면해당조건명 ( 식 ) 에맞는종목리스트를받아오면서실시간으로편입, 이탈하는종목을받을수있는조건이됩니다. -1번으로조회할수있는화면개수는최대 10개까지입니다. -2은 OnReceiveTrCondition 이벤트함수에서마지막파라메터인 nnext가 2 로들어오면종목이더있기때문에다음조회를원할때 OnReceiveTrCondition 이벤트함수에서사용하시면됩니다. -결과값 OnReceiveTrCondition(LPCTSTR sscrno, LPCTSTR strcodelist, LPCTSTR strconditionname, int nindex, int nnext) 이벤트함수로종목리스트가들어옵니다. -파라메터설명 sscrno : 화면번호 47 / 53
strcodelist : 조회된종목리스트 (ex:039490;005930;036570; ;) strconditionname : 조회된조건명 nindex : 조회된조건명인덱스 nnext : 연속조회여부 (0: 연속조회없음, 2: 연속조회있음 ) -실시간검색조회시 OnReceiveRealCondition(LPCTSTR strcode, LPCTSTR strtype, LPCTSTR strconditionname, LPCTSTR strconditionindex) 이벤트함수로편입, 이탈종목이실시간으로들어옵니다. -파라메터설명 strcode : 종목코드 strtype : 편입 ( I ), 이탈 ( D ) strconditionname : 조건명 strconditionindex : 조건명인덱스 5) 실시간조건검색을중지합니다. 화면당실시간조건검색은최대 10개로제한되어있어서더이상실시간조건검색을원하지않는조건은중지해야만카운트되지않습니다. -함수 Void SendConditionStop(LPCTSTR strscrno, LPCTSTR strconditionname, int nindex); -파라메터설명 strscrno : 화면번호 strconditionname : 조건명 nindex : 조건명인덱스 48 / 53
9.2 실시간등록 / 해제기능가이드 실시간 DATA 수신시화면별등록, 화면별실시간해제, 전체해제등기능을제공합니다. 1) 실시간등록함수 LONG SetRealReg(LPCTSTR strscreenno, LPCTSTR strcodelist, LPCTSTR strfidlist, LPCTSTR stropttype) - 파라메터설명 strscreenno strcodelist : 화면번호 : 종목코드리스트 (ex: 039490;005930; ) strfidlist : FID번호 (ex:9001;10;13; ) 9001 종목코드 10 - 현재가 13 - 누적거래량 FID번호는 KOA Studio에서실시간목록을참고하시기바랍니다. stropttype : 타입 ( 0, 1 ) 타입 0 은항상마지막에등록한종목들만실시간등록이됩니다. 타입 1 은이전에실시간등록한종목들과함께실시간을받고싶은종목을추가로등록할때사용합니다. 종목, FID는각각한번에실시간등록할수있는개수는 100개입니다. Ex) strscreenno = 0001 ( 화면번호 ) strcodelist = 039490;005930; ( 종목코드리스트 ) strfidlist = 9001;10;13; (FID 번호리스트 ) stropttype = 0 ( 타입 ) SetRealReg(strScreenNo, strcodelist, strfidlist, stropttype); 2) 실시간해제함수 화면별실시간해제와화면의종목당실시간해제를하실수있습니다. 49 / 53
Void SetRealRemove(LPCTSTR strscrno, LPCTSTR strdelcode) SetRealReg() 함수로실시간등록한종목만해제할수있습니다. - 파라메터설명 strscrno : 화면번호 strdelcode : 실시간해제할종목코드 ex) -화면별실시간해제여러화면번호로걸린실시간을해제하려면파라메터의화면번호와종목코드에 ALL 로입력하여호출하시면됩니다. SetRealRemove( ALL, ALL ); 개별화면별로실시간해제하시려면파라메터에서화면번호는실시간해제할화면번호와종목코드에는 ALL 로해주시면됩니다. SetRealRemove( 0001, ALL ); -화면의종목별실시간해제화면의종목별로실시간해제하려면파라메터에해당화면번호와해제할종목코드를입력하시면됩니다. SetRealRemove( 0001, 039490 ); 9.3 대량 DATA( 차트조회 ) 수신 기존 GetCommData() 함수로항목당한개의데이터를받아오는처리에서배열로조회된전항목의데이터를한꺼번에받을수있게함수입니다. 차트조회처럼반복데이터가많은데이터를한꺼번에받아서처리하고싶을때사용하시면됩니다. 1) 추가함수 - 함수 : VARIANT GetCommDataEx(LPCTSTR strtrcode, LPCTSTR strrecordname); - 파라메터설명 strtrcode : 조회한 TR코드 (ex: OPT10080 ) strrecordname : 출력항목중에서얻어오려는부분이름 50 / 53
OPT10080 : 주식분봉차트조회요청의출력부분을보면 주식분차트, 주식분봉차트조회 로 2개부분으로나뉘어있는데 GetCommDataEx() 함수 strrecordname에 주식분봉차트조회 로설정하면현재가부터전일종가까지차트데이터를한번에얻을수있습니다. 2) 사용예 조회한데이터전체를가져와서처리하고싶을때 // 주식일봉조회 (OPT10081) 결과값을가져오는코드 // 최대반복수를가져옵니다. int nmaxrow = theapp.m_khopenapi.getrepeatcnt(strtrcode, strrqname); 항목의위치는 KOA Studio의 TR목록순서로데이터를가져옵니다. 예로 OPT10080을살펴보면 OUTPUT의멀티데이터의항목처럼현재가, 거래량, 체결시간, 시가, 고가, 저가, 수정주가구분등순으로항목의위치가 0부터 1씩증가합니다. // OPT10080 출력항목수는현재가, 거래량, 체결시간에서전일종가까지 13개 Int nmaxcol = 13; // 사용하는 TR별로출력항목갯수를지정, TR출력에명시된항목갯수가큰값을넣으면안됨. int nindex[2]; VARIANT vreturn = theapp.m_khopenapi.getcommdataex(strtrcode, 주식분봉차트조회 ); COleSafeArray samatrix(vreturn); VARIANT vtemp; VariantInit(&vTemp); CString stronedata; for(int nrow = 0; nrow < nmaxrow; nrow ++) { for(int ncol = 0; ncol < nmaxcol; ncol ++) { nindex[0] = nrow; nindex[1] = ncol; samatrix.getelement(nindex, &vtemp); 51 / 53
stronedata = (CString)vTemp.bstrVal; ::SysFreeString(vTemp.bstrVal); } } samatrix.clear(); VariantClear(&vReturn); 10. 기타 10.1 신용주문가이드 1. 대상 - 신용주문대상은 자기융자 만제공, 대주 등나머지는지원안함. - 영웅문 (HTS) [4989] 키움주문 신용설정과동일한방식. 2. 신용함수 - 신용주문전용 SendOrderCredit() 함수추가 - KOA현금주문함수를이용하는고객이기존에작성한코드변경을없애고현금주문과명확한구별을위해새로함수를만듦 - 신용매수주문, 신용매도주문, 취소 / 정정주문은현금주문과동일한함수사용 3. 신용주문설정 - 신용주문의경우융자를받아서주문내는것이므로 대출일 설정이매우중요. - 대출일은상환일기준으로지정. - 2월 12일주문한신용주문종목대출일은 2월 16일이됨. - 신용구분 (9번째함수입력값 ) 과대출일 (10번째함수입력값 ) 설정이중요 ( 아래표참고 ) 4. KOA 신용매수주문 - 신용구분값 03 로설정하여주문, 대출일은공백처리 52 / 53
5. KOA 신용매도주문 - 융자상환주문은신용구분 33 로설정 - OPW00005( 체결잔고요청 )TR이나 OPW00004( 계좌평가현황요청 )TR을이용해서대출일조회해야함. OPW00005( 체결잔고요청 )TR은신용잔고조회용으로사용. - 융자합주문은신용구분 99 로설정대출일을 99991231 로입력. - 융자합주문은신용잔고가 5개이하인경우만가능. - 신용잔고가 7개라면 2종목을융자상환으로주문해야나머지를융자합으로주문가능. < 신용주문주요설정값정리 > 주문구분구분코드대출일 신용매수신용매수 03 공백입력 신용매도 융자상환 33 종목별대출일 융자합 99 99991231 5 종목이하잔고만주문가능 유의사항 : 신용주문은실거래만가능하며모의투자불가 53 / 53