1) 키움 계좌 연결 코드 생성
ChatGPT 에 다음과 같이 질의하였습니다.
python 으로 키움증권 API 를 연결하고 연결 후 API를 초기화하고 실 서버 연결 시 "실 서버 연결 성공" 이라고 출력하고 모의 투자 서버 연결 시 "모의 투자 서버 연결 성공"이라고 출력하는 코드를 만들어주세요.
생성된 코드는 다음과 같습니다.
kiwoom_api.py 라고 저장합니다.
아래 코드는 다음 위치에서 다운 받는 것이 가능합니다.
git clone https://github.com/jbpark/JbTraderExample.git
cd JbTraderExample/jbtrader/ch5.4
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtCore import QEventLoop
class KiwoomAPI(QAxWidget):
def __init__(self):
super().__init__()
# 키움 OpenAPI Control 설정
self.setControl("KHOPENAPI.KHOpenAPICtrl.1")
# 로그인 이벤트 루프
self.loginLoop = QEventLoop()
# 로그인 이벤트 핸들러 등록
self.OnEventConnect.connect(self.event_connect)
def login(self):
""" 키움증권 API 로그인 """
self.dynamicCall("CommConnect()") # 로그인 실행
self.loginLoop.exec_() # 로그인 완료될 때까지 대기
def event_connect(self, return_code):
""" 로그인 이벤트 핸들러 """
if return_code == 0: # 로그인 성공
server_type = self.dynamicCall("GetLoginInfo(QString)", "GetServerGubun")
if server_type == "1":
print("모의 투자 서버 연결 성공")
else:
print("실 서버 연결 성공")
else:
print("로그인 실패, 코드:", return_code)
# 로그인 루프 종료
self.loginLoop.exit()
if __name__ == "__main__":
app = QApplication(sys.argv) # PyQt5 애플리케이션 실행
kiwoom = KiwoomAPI()
kiwoom.login()
sys.exit(app.exec_()) # 이벤트 루프 실행
2) 키움 계좌 연결 정보 출력 코드 실행
정상적으로 로그인 되면 아래와 같이 출력됩니다.
3) 로그 메시지 출력 Text Edit 추가
계좌 ComboBox 는 objectName 을 accountComboBox 라고 변경하고
로그 출력을 위한 Text Edit 는 objectName 을 logTextEdit 로 변경합니다.
ChatGPT 로 다음과 같이 질문하였습니다.
python pyqt5 designer 로 guruma_one.ui 를 만들었습니다.
guruma_one.ui 에는 accountComboBox 라는 이름을 가진 ComboBox 가 존재합니다.
또한 logTextEdit 라는 이름을 가진 QTextEdit 가 존재합니다.
키움증권 API 를 연결하고 연결 후 API를 초기화하고 실 서버 연결 시 "실 서버 연결 성공" 이라고 메시지를 logTextEdit 에 출력하고
모의 투자 서버 연결 시 "모의 투자 서버 연결 성공"이라고 메시지를 logTextEdit 에 출력하고
또한 Kiwoom 계좌 정보를 accountComboBox 에 출력하는 코드를 만들어주세요.
이를 guruma_one.py 라는 파일로 저장합니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
from PyQt5.QtCore import QEventLoop
from PyQt5.QAxContainer import QAxWidget
class Kiwoom(QMainWindow):
def __init__(self):
super().__init__()
loadUi("guruma_one.ui", self)
# 키움 API 연결
self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
self.kiwoom.OnEventConnect.connect(self.on_event_connect)
self.login()
def login(self):
self.kiwoom.dynamicCall("CommConnect()")
self.event_loop = QEventLoop()
self.event_loop.exec_()
def on_event_connect(self, err_code):
if err_code == 0:
server_type = self.kiwoom.dynamicCall("GetLoginInfo(QString)", ["GetServerGubun"])
if server_type == "1":
self.logTextEdit.append("모의 투자 서버 연결 성공")
else:
self.logTextEdit.append("실 서버 연결 성공")
self.get_account_info()
else:
self.logTextEdit.append("API 연결 실패")
self.event_loop.exit()
def get_account_info(self):
accounts = self.kiwoom.dynamicCall("GetLoginInfo(QString)", ["ACCNO"])
account_list = accounts.strip().split(';')
self.accountComboBox.addItems(account_list)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Kiwoom()
window.show()
sys.exit(app.exec_())
4) Qt UI 연동 코드 실행
'시스템 트레이딩 > JbTrader 1호' 카테고리의 다른 글
5.3편-키움 API 자동 버전 처리 (0) | 2025.03.14 |
---|---|
5.5편-키움 매수 Qt UI 와 연결 (0) | 2025.03.14 |
5.2편-키움 계좌 연결 테스트 (0) | 2025.03.13 |
5.1편-구루마1호 UI 제작 (0) | 2025.03.12 |
3.6편-git 설치 (0) | 2025.03.12 |