키움증권의 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()

+ Recent posts