[키움 OpenAPI] TR OPT10004 (주식호가요청) 코드 in Python




키움 OpenAPI의 TR OPT10004 (주식호가요청)을 요청하는 코드를 작성하고 테스트한 내용을 정리합니다.


TR 요청을 위해서는 키움 OpenAPI에 로그인이 되어야 하고 데이터 조회와 처리를 처리할 수 있는 코드가 사전에 작성이 되어야 합니다.


OPT10004 (주식호가요청)

‘KOA StudioSA’ 에서는 아래와 같이 설명하고 있습니다.

[ opt10004 : 주식호가요청 ]

1. Open API 조회 함수 입력값을 설정합니다.
	종목코드 = 전문 조회할 종목코드
	SetInputValue("종목코드"	,  "입력값 1");


2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
	CommRqData( "RQName"	,  "opt10004"	,  "0"	,  "화면번호"); 

Input 정보는 위 KOA 설명에 포함되어 있습니다.

Output 정보는 아래 Config.py의 정보/목록으로 대체하여 기록합니다.


파일 구조

ㄴ Config.py
ㄴ KiwoomAPI.py
ㄴ KiwoomMain.py

Config.py

TR 요청 시, 조회할 OUTPUT 데이터를 정의 합니다.

output_list = {
    'OPT10004': ['호가잔량기준시간',
                 '매도10차선잔량대비',
                 '매도10차선잔량',
                 '매도10차선호가',
                 '매도9차선잔량대비',
                 '매도9차선잔량',
                 '매도9차선호가',
                 '매도8차선잔량대비',
                 '매도8차선잔량',
                 '매도8차선호가',
                 '매도7차선잔량대비',
                 '매도7차선잔량',
                 '매도7차선호가',
                 '매도6차선잔량대비',
                 '매도6차선잔량',
                 '매도6차선호가',
                 '매도5차선잔량대비',
                 '매도5차선잔량',
                 '매도5차선호가',
                 '매도4차선잔량대비',
                 '매도4차선잔량',
                 '매도4차선호가',
                 '매도3차선잔량대비',
                 '매도3차선잔량',
                 '매도3차선호가',
                 '매도2차선잔량대비',
                 '매도2차선잔량',
                 '매도2차선호가',
                 '매도1차선잔량대비',
                 '매도최우선잔량',
                 '매도최우선호가',
                 '매수최우선호가',
                 '매수최우선잔량',
                 '매도1차선잔량대비',
                 '매도2차선호가',
                 '매도2차선잔량',
                 '매도2차선잔량대비',
                 '매도3차선호가',
                 '매도3차선잔량',
                 '매도3차선잔량대비',
                 '매도4차선호가',
                 '매도4차선잔량',
                 '매도4차선잔량대비',
                 '매도5차선호가',
                 '매도5차선잔량',
                 '매도5차선잔량대비',
                 '매도6차선호가',
                 '매도6차선잔량',
                 '매도6차선잔량대비',
                 '매도7차선호가',
                 '매도7차선잔량',
                 '매도7차선잔량대비',
                 '매도8차선호가',
                 '매도8차선잔량',
                 '매도8차선잔량대비',
                 '매도9차선호가',
                 '매도9차선잔량',
                 '매도9차선잔량대비',
                 '매도10차선호가',
                 '매도10차선잔량',
                 '매도10차선잔량대비',
                 '총매도잔량직전대비',
                 '총매도잔량',
                 '총매수잔량',
                 '총매수잔량직전대비',
                 '시간외매도잔량대비',
                 '시간외매도잔량',
                 '시간외매수잔량',
                 '시간외매수잔량대비',
                 ],
}

KiwoomMain.py

import sys
from PyQt5.QtWidgets import *
import KiwoomAPI
from Config import *

class KiwoonMain:
    def __init__(self):
        self.kiwoom = KiwoomAPI.KiwoomAPI()
        self.kiwoom.CommConnect()

    def OPT10004(self):
        self.kiwoom.output_list = output_list['OPT10004']

        self.kiwoom.SetInputValue("종목코드", "005930")
        self.kiwoom.CommRqData("OPT10004", "OPT10004", 0, "0101")

        return self.kiwoom.ret_data['OPT10004']

실행

app = QApplication(sys.argv)
api_con = KiwoonMain()

result = api_con.OPT10004()
print(result['Data'][0])

결과

[GetPCIdentity] VER 3.2.0.0  build 2015.8.12

[GetPCIdentity] VER 3.2.0.0  build 2015.8.12
0
0101 OPT10004 OPT10004  0 0
count :  1
{'호가잔량기준시간': '155957', '매도10차선잔량대비': '0', '매도10차선잔량': '288755', '매도10차선호가': '+85900', '매도9차선잔량대비': '0', '매도9차선잔량': '166599', '매도9차선호가': '+85800', '매도8차선 
잔량대비': '0', '매도8차선잔량': '84793', '매도8차선호가': '+85700', '매도7차선잔량대비': '0', '매도7차선잔량': '68290', '매도7차선호가': '+85600', '매도6차선잔량대비': '0', '매도6차선잔량': '', '매도6차선
호가': '+85500', '매도5차선잔량대비': '0', '매도5차선잔량': '134086', '매도5차선호가': '+85400', '매도4차선잔량대비': '0', '매도4차선잔량': '151262', '매도4차선호가': '+85300', '매도3차선잔량대비': '0', ' 
매도3차선잔량': '194020', '매도3차선호가': '+85200', '매도2차선잔량대비': '0', '매도2차선잔량': '144922', '매도2차선호가': '+85100', '매도1차선잔량대비': '0', '매도최우선잔량': '123753', '매도최우선호가': 
'+85000', '매수최우선호가': '+84900', '매수최우선잔량': '27279', '총매도잔량직전대비': '0', '총매도잔량': '1570428', '총매수잔량': '991083', '총매수잔량직전대비': '0', '시간외매도잔량대비': '0', '시간외매 
도잔량': '0', '시간외매수잔량': '30425', '시간외매수잔량대비': '--10'}

연관 포스트

[키움API] 기본 개발 가이드 내용 및 샘플 코드 (in Python) / OpenAPI 오류코드

[키움API] TR 목록 및 샘플 코드 (in Python)




1 thought on “[키움 OpenAPI] TR OPT10004 (주식호가요청) 코드 in Python”

Leave a Comment