2. [키움증권 오픈 API] PyQt 파이썬(키움증권 연결 commConnect)
2020. 7. 13. 09:03ㆍAI트레이딩/키움API
728x90
반응형
1. 설치를 안 했다면
다른언어로된 키움증권 소프트웨어를 파이썬(python) 으로 객체화 하여 사용.
open API : 제어 접근 할수 있게 해주는 라이브러리.
win32com : COM 파이썬을 번역해준다.
OCX(Object Linking and Embedding Control Extension) : ActiveX 컨트롤 이라고도 하며 윈도우에서 사용되는 특정 응용 프로그램의 객체를 다른 응용 프로그램에서 호출할 수 있도록 해주는 기술제공
*COM: 마이크로소프트에서 개발한 기술로 프로그래밍 언어와 상관없이 특정 기능을 위해 개발된 컴포넌트 객체(Component Object)를 이용해 프로그램을 더 쉽고 빠르게 개발 가능하다. COM을 이용하면 C++ 같은 프로그래밍 언어로 개발된 객체도 파이썬에서 사용 가능하다.
2. [PyQt] 키움증권 오픈 API 파이썬
- 컴포넌트 오브젝트 모델(Component Object Model, COM) 프로그래머는 COM 컴포넌트들을 사용하여 소프트웨어를 개발한다 한다.각각의 COM 컴포넌트들은 클래스 아이디(CLSIDs)로 식별 된다. 키움 증권 오픈 API는 OCX를 통해 API 함수를 호출하는 방식이다.
- 파이썬(python)에서 키움증권을 사용하려면 PyQt의 QAxWidget 클래스를 사용해 인스턴스를 생성해야 한다
- 레지스터리 편집기로 찾아 보면 클래스 아이디(CLSID) 와 프로그램 아이디를 찾을수 있다.
클래스 아이디(CLSID) : {A1574A0D-6BFA-4BD7-9020-DED88711818D}
ProgID : 'KHOPENAPI.KHOpenAPICtrl.1'
- PyQt는 Qt에 파이썬(Py)을 연결하여 GUI(graphical user interface) 프로그램을 만들 수 있도록 해주는 프레임워크이다.
- Qt는 GUI 프로그램 개발에 많이 쓰이는 크로스 플랫폼 프레임워크로 주로 C++을 사용해 프로그래밍한다.
1) CommConnect
[로그인 사용법]
- CommConnect()함수를 호출
- 키움OpenAPI가 제공하는 로그인창이 실행된다.
- ID/Pw 입력 후 로그인완료시 OnEventConnect 이벤트가 발생
- OnEventConnect 이벤트의 인자값으로 0이면 성공이고 나머지는 실패로 오류코드값을 수신
CommConnect(사용자 호출) -> 로그인창 출력 -> OnEventConnect(이벤트 발생)
OCX방식에서는 QAxBase class의 dynamicCall method로 원하는 method를 호출해 사용 할 수 있다.
사용예시
import sys
from PyQt5.QtWidgets import *
from PyQt5.QAxContainer import *
class KiwoomAPI(QAxWidget):
def __init__(self):
super().__init__()
self.setControl('KHOPENAPI.KHOpenAPICtrl.1')
self.dynamicCall('CommConnect()')
if __name__ == '__main__':
app = QApplication(sys.argv)
kiwoom = KiwoomAPI()
kiwoom.show()
print("event loop 전")
app.exec_()
print("event loop 후")
QAxWidget Class 5.15
반응형
'AI트레이딩 > 키움API' 카테고리의 다른 글
키움증권 openAPI 개발가이드 정리 - 1 (통신처리, 로그인, 조회) (0) | 2020.12.27 |
---|---|
[키움증권 openAPI] QAxWidget 상속 정보 (0) | 2020.12.24 |
4. [키움 openAPI] 종목코드, 기업명 받아오기 (0) | 2020.12.09 |
3. [키움증권 openAPI] OnEventConnect 로그인 성공 실패 (0) | 2020.12.09 |
1. 키움증권 open API 설치 및 접속 (0) | 2020.07.13 |