2. [키움증권 오픈 API] PyQt 파이썬(키움증권 연결 commConnect)

2020. 7. 13. 09:03AI트레이딩/키움API

728x90
반응형

1. 설치를 안 했다면 

 

1. 키움증권 open API 설치 및 접속

키움증권 오픈 api 사이트 키움증권-대한민국 주식시장 점유율 1위 www.kiwoom.com 1. 사용신청 2. OPEN API 설치 3. KoA 설치 바탕화면에 압축을 푼다 폴더 안으로 들어가 아래거 실행 업데이트시 KoA 창을.

uwgdqo.tistory.com


다른언어로된 키움증권 소프트웨어를 파이썬(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를 호출해 사용 할 수 있다.

QAxWidget에서 Qwidget 과 QAxBase class를 상속받아 사용할 수 있다

사용예시

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

 

 

QAxWidget Class | Active Qt 5.15.0

QAxWidget Class The QAxWidget class is a QWidget that wraps an ActiveX control. More... Header: #include qmake: QT += axcontainer Inherits: QWidget and QAxBase Public Functions QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::W

doc.qt.io

 

반응형