목 차
1. 들어가며
2. 사전 설명
3. dynamicCall 함수 활용 예시
4. 마치며
1. 들어가며
지난 글에서는 OpenAPI-W를 활용하기 위한 TR 요청을 알아보았다.
TR 요청은 키움서버에 "데이터 입력 → 요청 → 연결 → 데이터 수신"의 4단계로 구성된다.
이번 글에서는 dynamicCall 함수를 통해
데이터 입력/요청하는 방법을 알아볼 것이다.
2. 사전 설명
아래는 dynamicCall 함수에 대한 설명이다.
- 함수 정의 : 서버에 데이터를 송수신하는 기능
- 관련 모듈 : PyQt5의 QAxContainer 모듈에서 제공한다.
- 활용 방법 : 파이썬에서 from PyQt5 import QAxContainer 을 불러온다.
- 관련 함수 : OpenAPI-W를 통해 키움서버에 접근하기 위해 SetInputValue 및 CommRqData, GetCommData에서 활용
위에서 설명하였듯이,
dynamicCall은 키움증권에서 제공하는 함수인
SetInputValue 및 CommRqData, GetCommData 등에서 활용되고,
또한, dynamicCall은 로그인할 때도 이용되는 등 여러가지에서 활용된다.
3. dynamicCall 함수 활용 예시
from PyQt5.QAxContainer import *
self.kiwoom = QAxWidget("KFOPENAPI.KFOpenAPICtrl.1")
self.kiwoom.dynamicCall("CommConnect(1)")
self.kiwoom.dynamicCall("GetCommonFunc(QString, QString)", "ShowAccountWindow", "")
self.kiwoom.dynamicCall("SetInputValue(QString, QString)", sid, svalue)
self.kiwoom.dynamicCall("CommRqData(QString, QString, QString, QString)", rqname, trcode, prenext, scr)
self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", trcode, recordname, index, itemname)
① from PyQt5.QAxContainer import *
→ dynamicCall 함수를 활용하기 위해 QAxContainer 모듈을 임포트 한다.
② self.kiwoom = QAxWidget("KFOPENAPI.KFOpenAPICtrl.1")
: QAxWidget 모듈을 활용하여 OpenAPI-W의
레지스트리인 "KFOPENAPI.KFOpenAPICtrl.1"에 접근하는 내용을
→ self.kiwoom에 인스턴스 한다.
(즉, OpenAPI-W에 접속한다는 내용이다)
③ self.kiwoom.dynamicCall("CommConnect(1)")
: self.kiwoom : OpenAPI-W에 접속(②)한다.
dynamicCall : OpenAPI-W에 데이터를 보낸다.
"CommConnect(1)" : OpenAPI-W에 로그인하라.
→ 즉 self.kiwoom.dynamicCall("CommConnect(1)") 는
"OpenAPI-W에 접속하여 로그인 데이터를 보낸다."는 의미이다.
④ self.kiwoom.dynamicCall("GetCommonFunc(QString, QString)", "ShowAccountWindow", "")
→ "OpenAPI-W에 접속하여 '비밀번호 등록' 창을 띄운다" 의미이다.
⑤ self.kiwoom.dynamicCall("SetInputValue(QString, QString)", sid, svalue)
→ "OpenAPI-W에 접속하여 문자형 2개의 데이터를 키움서버에 입력(SetInputValue)한다.
⑥ self.kiwoom.dynamicCall("CommRqData(QString, QString, QString, QString)", rqname, trcode, prenext, scr)
→ "OpenAPI-W에 접속하여 문자형 4개의 데이터를 키움서버에 요청(CommRqData)한다.
⑦ self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", trcode, recordname, index, itemname)
→ "OpenAPI-W에 접속하여 문자형 3개, 정수형1개의 데이터를 키움서버에서 수신(GetCommData)받는다.
4. 마치며
PyQt5의 QAxContainer 모듈에서 제공하는 dynamicCall 함수를 이용하여
OpenAPI-W를 통해 키움서버로부터
데이터 입력-요청-수신받는 방법을 알아보았다.
관건은 ②의 self.kiwoom = QAxWidget("KFOPENAPI.KFOpenAPICtrl.1") 이다.
이유는 QAxWidget 모듈을 활용하여 키움서버의 레지스트리에 접속하기 때문이다.
즉, 키움서버에 접속(②)한 후, dynamicCall 함수를 이용하여 데이터의 송/수신을 받는다.
dynamicCall 함수는 시스템 구축시 자주 사용된다.
그 활용 형태를 제대로 숙지하도록 하자.
'2. 해외선물 > 2-4. 해외선물 API (사용)' 카테고리의 다른 글
(키움증권 해외선물 OpenAPI-W) 로그인 설정하기 (3) with ~ as 구문 (0) | 2023.01.05 |
---|---|
(키움증권 해외선물 OpenAPI-W) 로그인 설정하기 (2) pyautogui 모듈 (16) | 2023.01.04 |
(키움증권 해외선물 OpenAPI-W) 로그인 설정하기 (1) CommConnect 함수 (0) | 2023.01.03 |
(키움증권 해외선물 OpenAPI-W) 해외선물 시세조회 이용료 결재 및 미결재시 출력 메시지 (0) | 2023.01.02 |
(키움증권 해외선물 OpenAPI-W) 자동매매를 위한 TR요청 방법 (0) | 2022.12.31 |
(키움증권 해외선물 OpenAPI-W) 자동매매를 위한 파이썬 모듈 설명 (0) | 2022.12.30 |
(키움증권 해외선물 OpenAPI-W) 자동매매를 위한 시세요청 이용료 결재하기 (0) | 2022.12.29 |
(키움증권 해외선물 OpenAPI-W) 자동매매를 위한 WKOA Studio 사용방법 (0) | 2022.12.27 |