키움증권의 OpenAPI+를 사용하려면 다음과 같은 진행 순서를 따라야 한다.
1. COM 오브젝트 생성
"KHOPENAPI.KHOpenAPICtrl.1"이라는 ProgID를 QAxWidget 클래스의 생성자로 전달 or setControl 메서드를 사용.
Ex 1>
self.setControl("KHOPENAPI.KHOpenAPICrl.1")
Ex 2>
self.kiwom = QAxWidget("KHOPENAPI.KHOpenAPICrl.1")
2. 로그인 실시
CommConnect API 함수를 dynamicCall 함수를 통해 호출
self.dynamicCall("CommConnect()")
3. 이벤트 루프 만들기
PyQt를 이용해 프로그램 한 경우 이미 내부에 이벤트 루프가 있어 따로 이벤트 루프를 만들 필요가 없다.
하지만, PyQt를 이용하지 않는 경우는 명시적으로 이벤트 루프를 만들어야 한다.
다음의 경우 PyQt의 QEventLoop 클래스의 인스턴스를 생성한 후 exec_ 메서드를 호출해 이벤트 루프를 생성하는
예제이다.
self.login_event_loop = QEventLoop()
self.login_event_loop.exec_()
4. 이벤트 처리를 위한 메서드 연결
키움증권 서버로부터 발생한 이벤트(OnEventConnect API)와 이를 처리할 메서드(_event_connect)을 연결하기 위해 OnEventConnect API에서 connect 매서드를 호출.
self.OnEventConnect.connect(self._event_connect)
5. 이벤트 처리 매서드 수행
키움증권 서버로 부터 발생한 이벤트에 대해 위의 4번에서 연결한 _event_connect 매서드가 실행이 된다.
실행이 될때 희망하는 동작을 수행 후 마지막에 comm_connect 메서드 호출 시 생성됐던 이벤트 루프를 종료한다.
def _event_connect(self):
중략....
self.login_event_loop.exit()
'코딩 > 파이썬' 카테고리의 다른 글
Selenium의 send_keys()로 보낼 수 있는 키값들 (0) | 2020.02.16 |
---|---|
Qt Designer 실행 (0) | 2019.09.18 |
matplotlib.finance module (0) | 2019.02.27 |
Zipline 모듈 설치 작업 - 추가 팁(PyCharm에서 Zipline 모듈 사용하기) (0) | 2019.02.19 |
Zipline 모듈 설치 작업 - 3. Zipline 모듈 설치 (0) | 2019.02.15 |