본문 바로가기
Study

OpenAPI+를 이용한 키움증권 로그인

by 해피바다 2021. 5. 19.

파이썬으로 배우는 알고리즘 트레이딩 따라하기. 304page 예제 12.4

https://wikidocs.net/4240

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

위 내용을 단순히 따라하면서 공부하는 내용

 

 

그림1. 예제를 실행하면 출력되는 프로그램

예제를 실행하면 그림1의 프로그램이 실행된다.

그림2. 키움증권 OpenAPI 로그인 창

 

그림1에서 Login 버튼을 누르면 키움증권 그림2의 키움증권 OpenAPI 로그인창이 실행된다.

 

그림3. 'Connected ' 메시지 출력

키움증권 OpenAPI 로그인 창에서 정상적으로 로그인 후 Check state 버튼을 누르면 우측 하단에서 Connected 메시지가 가 출력된다.

 

단순히 예제를 수행하고 갖어다 쓰는것에만 의미를 두지 않고 내부 동작에 대한 이해를 해보자.

 

 

아래 그림 4를 보면 키움증권 OpenAPI 개발자 매뉴얼을 보면 KHOpenApi라는 OpenApi 실행오듈이 있다.

내가 이해한 것은 키움증권에 제공하는 OpenApi를 사용하려면 우선 KHOpenApi.OCX라는 모듈을 기반으로 윈도우에 컨트롤을 등록해야 하나보다.

그림4. OpenApi 컨트롤

 

예제 코드와 설명을 보면 키움증권에서 제공하는 클래스는 고유의 CLSID or ProgID를 가지는데 해당 값을 QAxWidget 클래스의 생성자로 전달하고 인스턴스를 생성해야 파이썬에서 키움증권의 클래스를 사용할 수 있다고 한다. 실제로 윈도우 레스트리 편집기를 통해 검색하면 그림6을 확인할 수 있다. 키움증권 매뉴얼의 설명처럼 해당 OPenAPI 식별자를 통해 컨트롤의 생성 및 데이터 상호 교환이 가능한 것 같다. 

 

그림5. OpenAPI 식별자
그림6. 레지스트리 편집기 내 KHOPENAPI.KHOpenAPICtrl.1

 

 

간단히 정리해보면 그림7과 같은 내용이다. 

그림7

 

 

그리고 예제를 보면 CommConnect 메서드를 이용해 로그인 윈도우를 실행한다.

 

 

 

그리고 COM과 OCX 방식에 대해 간단히 나온다.

 

COM: 인스턴스를 이용해 메서드 호출

OCX: QAxBase 클래스의 dynamicCall 메서드를 사용해 원하는 메서드 호출 

(구글링 해보면 더 자세한 내용들이 나온다)

 

def btn1_clicked(self):
	ret = self.kiwoom.dynamicCall("CommConnect()")

위 코드처럼 키움증권의 OpenAPI+는 OCX 방식으로 개발됐기 때문에, dynamicCall 메서드를 호출하면서 "CommConnect" 메서드를 호출하는 것을 볼 수 있다.

 

 

마찬가지로 GetConnectState 메서드를 호출해서, 현재 로그인 접속 상태를 확인할 수 있다.

 

'Study' 카테고리의 다른 글

키움증권 Open API+ 로그인 이벤트 처리하기  (0) 2021.05.22