python으로 키움증권 Open API 를 이용해서 주식 정보 조회하기
1. 우리은행에 가서 키움증권계좌 개설
2. 키움증권 사이트 및 아래 사이트 참고하여 Open API 사용 신청 및 기본 사용 진행
- 윈도우즈 환경만 지원
- https://wikidocs.net/1815
3. python 설치
- python 3.4.x 버전 설치를 위해 아래 Anaconda3 2.3.0 버전 설치
- python 2.7은 아래 소스 미지원
- python 3.5는 아래 소스에서 에러 발생
- Anaconda3-2.3.0-Windows-x86.exe
4. python 개발 환경을 위해 PyCharm 무료 버전 설치
- pycharm-community-5.0.3.exe
5. TR를 이용한 주식정보요청 테스트
- 아래 사이트에서 가져왔습니다.
- https://wikidocs.net/3130
Appendix: 소스
#-*-coding: utf-8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QAxContainer import *
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyStock")
self.setGeometry(300, 300, 300, 400)
self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
self.kiwoom.connect(self.kiwoom, SIGNAL("OnReceiveTrData(QString, QString, QString, QString, QString, int, QString, QString, QString)"), self.OnReceiveTrData)
btn1 = QPushButton("Log In", self)
btn1.move(20, 20)
self.connect(btn1, SIGNAL("clicked()"), self.btn_clicked)
btn2 = QPushButton("Get Info", self)
btn2.move(20, 70)
self.connect(btn2, SIGNAL("clicked()"), self.btn_clicked2)
btn3 = QPushButton("접속 상태 확인", self)
btn3.move(20, 120)
self.connect(btn3, SIGNAL("clicked()"), self.btn_clicked3)
def OnReceiveTrData(self, sScrNo, sRQName, sTRCode, sRecordName, sPreNext, nDataLength, sErrorCode, sMessage, sSPlmMsg):
if sRQName == "주식기본정보":
cnt = self.kiwoom.dynamicCall('GetRepeatCnt(QString, QString)', sTRCode, sRQName)
name = self.kiwoom.dynamicCall('CommGetData(QString, QString, QString, int, QString)', sTRCode, "", sRQName, 0, "종목명")
cur_price = self.kiwoom.dynamicCall('CommGetData(QString, QString, QString, int, QString)', sTRCode, "", sRQName, 0, "현재가")
print(name.strip())
print(cur_price.strip())
def btn_clicked(self):
ret = self.kiwoom.dynamicCall("CommConnect()")
def btn_clicked2(self):
ret = self.kiwoom.dynamicCall('SetInputValue(QString, QString)', "종목코드", "000660")
ret = self.kiwoom.dynamicCall('CommRqData(QString, QString, int, QString)', "주식기본정보", "OPT10001", 0, "0101")
def btn_clicked3(self):
if self.kiwoom.dynamicCall('GetConnectState()') == 0:
print("Not connected")
else:
print("Connnected")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
댓글
댓글 쓰기