키움 KOA Studio 이해하기

 

 

이전 글 보기

 

01_시작

02_기본설정

03_pykiwoom vs. 직접코딩

04_키움 open api 로그인 하기

05_키움 OPEN API에 TR 요청하기(feat. 예수금과 계좌잔고 받아오기)

06_키움 KOA 설치하기

 

 

 

코드만 주구장창 치다 보니 뭔가 정리가 되지 않는 기분이 들었다. OPEN API 설명서 격인 키움 KOA에 대해 이해하는 시간이 필요했다.

 

대부분의 내용은 키움 홈페이지 OPEN API에 등재된 개발가이드와 KOA 설명 페이지에서 확인할 수 있다.

 

우선 키움 OPEN API는 프로그램 확장성을 고려하여 OCX 컨트롤러로 제작을 지원한다. OCX는 OLE Control Extensions을 의미하며, OLE는 Object Linking and Embedding(객체 연결 삽입)를 의미한다.

 

무슨 말인지 모르겠다. 네이버 지식백과는 OCX를 다음과 같이 정의한다.

OLE(object linking and embedding)에 의해 작성된 사용자 정의 컨트롤 기능으로 프로그램 확장자를 OCX에 대응한 애플리케이션에서 호출할 수 있다. OLE의 명칭이 ActiveX로 변경되면서 ActiveX 컨트롤이 정식 명칭이 되었다. 사용자 정의 컨트롤은 제3자 벤더와 사용자가 독자적으로 만든 윈도용 프로그램 부품의 총칭이다. 스크롤 바와 같은 단순한 것에서부터 스프레드시트와 철자 검사 프로그램, 웹 서버의 브라우저 등의 복잡한 기능을 갖춘 것까지 그 범위가 다양하다.
[네이버 지식백과] OCX (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 전산용어사전편찬위원회)

 

 

 

키움 KOA

 

키움 KOA는 위와 같은 화면을 구성하고 있다.

 

1번 작업창은 다음의 기능을 수행한다.

   - 영웅문 HTS의 화면에 해당되는 서비스

   - 전체 TR 서비스 목록

   - TR의 IO

   - 실시간 타입과 FID

 

2번 정보창은 다음의 기능을 수행한다.

   - 선택된 TR에 대한 정보

   - TR의 input값 설명

   - 코딩 샘플(C++)

   - 실시간 필드 정보

 

3번 입력창은 다음의 기능을 수행한다.

   - 선택된 TR에 대한 input값 입력

   - input값 설명

 

4. 결과창은 다음의 기능을 수행한다.

   - TR 요청에 대한 결과

   - 실시간 수신 데이터

   - 조회 TR 히스토리

 

그리고 화면 하단에 "실시간 목록", "TR목록", "종목정보", "개발가이드", "화면목록"의 탭이 있다.

 

 

 

키움 KOA

 

함수를 선택하고자 할 때 함수 앞에 LONG, void, BSTR과 같은 구분자가 있다. 이들의 의미는 다음과 같다.

 

LONG : C 등의 언어에서 64비트 숫자를 데이터 타입을 말한다. 2**63개의 숫자를 표현할 수 있다.  [1]

void : C 등의 언어에서 호출자에게 결과값을 제공하지 않는 함수의 결과를 위한 타입이다. [2]

BSTR : Basic string or binary string을 의미하며, 문자열을 타입이다. [3]

 

즉, LONG는 숫자, BSTR은 문자 타입을 의미하며, void는 반환하는 값이 없다는 구분이다.

C언어 능숙자에겐 별거 아니겠지만, 나에겐 오랜 검색이 필요했다.

 

 

OPEN API 제어 및 편집을 위한 인터페이스 매소드는 다음과 같다. [4]

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  
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 GetSOptionCodeByActPrice 주식옵션 행사가만 변 경된 코드를 반환한다
43 BSTR GetSFOBasisAssetList 주식선옵 기초자산코드와 이름을 반환한다
44 BSTR GetOptionATM 지수옵션 ATM 을 반환한다
45 BSTR GetSOptionATM 주식옵션 ATM 을 반환한다
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 차트 조회한 데이터 전부를 배열로 받아온다

 

 

OPEN API 컨트롤 이벤트를 목록은 다음과 같다. 이벤트 목록은 이름이 "On"으로 시작한다. [4]

 

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 로컬에 사용자조건식 저장 성공여부 응답 이벤트

 

 

 

인터페이스 메소드와 이벤트 목록은 자주 보면서 눈에 익어야 코딩이 원활하겠다.

지금까지 별생각 없이 입력을 했는데, KOA에 대해 공부를 조금 하니 왜 그렇게 코딩을 해야 하는지, 하드 조각모음 하듯 조금씩 이해되고 있다. 

 

 

 

도움받은 고마운 글들

[1] techterms.com/definition/long

[2] ko.wikipedia.org/wiki/Void_%ED%83%80%EC%9E%85

[3] docs.microsoft.com/en-us/previous-versions/windows/desktop/automat/bstr

[4] 키움 OPEN API+ 개발 가이드(첨부 참고)

kiwoom_openapi_plus_devguide_ver_1.5.pdf
2.16MB

 

 

 

2021.01.06. 코리.

 

 

파이썬을 학습하며 남기는 블로그입니다.
질문, 지적, 조언은 항상 환영합니다.

 

 

+ Recent posts