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_()









댓글

이 블로그의 인기 게시물

SSH 연결 Delay 해결

[ELK] search guard를 이용한 보안 설정 (사용자 권한)

공공데이터(openapi) 사용법 (특정 정류소, 버스의 남은 좌석 확인 하기)