목 차
1. 들어가며
2. 사전설명
3. 코드설명
4. 전체 코드 및 설명
5. 마치며
1. 들어가며
이번 글에서는 종목에 따른 체결강도를 수신받는
주식시분요청(opt10006)에 대해 알아보자
2. 사전설명
먼저 KOA Studio를 살펴보자.
종목코드를 입력하면, 데이터를 받을 수 있다.
① KOA Studio의 opt10006(주식시분요청)을 활용한다.
② 키움증권의 SetInputValue 함수와 CommRqData 함수를 활용한다.
③ 종목코드 아프리카TV(067160)를 입력한다.
④ 조회된 데이터이다.
3. 코드설명
- KOA Studio의 opt10006(주식시분요청)를 활용하여 데이터 입력/요청/수신받는다.
1줄~4줄 : 동시성 처리, 로그인을 위해 sys모듈, PyQt 모듈을 임포트한다.
6줄~23줄 : 로그인 관련 함수를 실행한다.
11줄 : 25줄(rq_data_opt10006)과 32줄(trdata_get)를 연결한다.
25줄~28줄 : 키움증권 OpenAPI에서 제공하는
27줄(SetInputValue 함수) 및 28줄(CommRqData)를 활용한다.
34줄~44줄 : 시간, OHLCV 및 체결강도(resulted_intensive)를 수신받는다.
46줄~56줄 : 시간, OHLCV 및 체결강도(resulted_intensive)를 출력받는다.
67줄 : 종목코드(067160)를 25줄(rq_data_opt10006)에 넣어서 함수를 실행한다.
4. 전체코드 및 결과
import sys
from PyQt5.QAxContainer import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class btl_system():
def __init__(self):
self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
self.kiwoom.OnEventConnect.connect(self.login_Connect)
self.kiwoom.OnReceiveTrData.connect(self.trdata_get)
print("로그인 요청!")
self.kiwoom.dynamicCall("CommConnect()")
self.login_event_loop = QEventLoop()
self.login_event_loop.exec_()
def login_Connect(self, nErrCode):
if nErrCode == 0:
print('로그인 성공하였습니다!')
else:
print('로그인 실패하였습니다!')
self.login_event_loop.exit()
def rq_data_opt10006(self, stock_code):
print("67줄에서 입력받은 종목코드를 키움서버에 요청합니다.""\n")
self.kiwoom.dynamicCall("SetInputValue(QString, QString)", "종목코드", stock_code)
self.kiwoom.dynamicCall("CommRqData(QString, QString, int, QString)", "opt_10006", "opt10006", 0, "1020")
self.tr_event_loop = QEventLoop()
self.tr_event_loop.exec_()
def trdata_get(self, sScrNo, rqname, strcode, sRecordName, sPreNext, nDataLength, sErrorCode, sMessage, sSplmMsg):
if rqname == "opt_10006":
data_time = self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "날짜").strip()
open_price = abs(int(self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "시가").strip()))
high_price = abs(int(self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "고가").strip()))
low_price = abs(int(self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "저가").strip()))
close_price = abs(int(self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "종가").strip()))
yesterday_price = self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "대비").strip()
up_down = self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "등락률").strip()
qty = self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "거래량").strip()
resulted_intensive = self.kiwoom.dynamicCall("GetCommData(QString, QString, int, QString)", "opt10006", "주식시분요청", 0, "체결강도").strip()
print(f"날짜는 {data_time}입니다.""\n")
print(f"시가는 {open_price}원 입니다.")
print(f"시가는 {high_price}원 입니다.")
print(f"시가는 {low_price}원 입니다.")
print(f"종가는 {close_price}원 입니다.""\n")
print(f"대비는 {yesterday_price}원 입니다.")
print(f"등락률는 {up_down}% 입니다.")
print(f"거래량은 {qty}주 입니다.")
print(f"체결강도는 {resulted_intensive}% 입니다.""\n")
try:
self.tr_event_loop.exit()
except AttributeError:
pass
if __name__ == "__main__":
app = QApplication(sys.argv)
btl = btl_system()
btl.rq_data_opt10006("067160")
app.exec_()
# (expected result)
# 77줄에서 입력받은 종목코드를 키움서버에 요청합니다.
# 날짜는 20221111입니다.
# 시가는 92000원 입니다.
# 시가는 97500원 입니다.
# 시가는 89500원 입니다.
# 종가는 93000원 입니다.
# 대비는 +5600원 입니다.
# 등락률는 +6.41% 입니다.
# 거래량은 2027116주 입니다.
# 체결강도는 100.94% 입니다.
5. 마치며
키움증권 OpenAPI를 통해 체결강도 등을 받아오는
주식시분요청의 opt10006 TR요청을 알아보았다.
주식 매매시, 체결강도가 필요하다면, opt10006 이 있다는 점을 기억하자.
'1. 국내주식 > 1-3. 키움 OpenAPI (기타)' 카테고리의 다른 글
(주식 자동 매매) 키움증권 OpenAPI - 신용매매동향요청(opt10013) (0) | 2022.12.24 |
---|---|
(주식 자동 매매) 키움증권 OpenAPI - 신주인수권 전체시세요청(opt10011) (0) | 2022.12.23 |
(주식 자동 매매) 키움증권 OpenAPI - 업종프로그램요청(opt10010) (0) | 2022.12.22 |
(주식 자동 매매) 키움증권 OpenAPI - 주식기관요청(opt10009) (0) | 2022.11.27 |
(주식 자동 매매) 키움증권 OpenAPI - 주식외국인요청(opt10008) (0) | 2022.11.26 |
(주식 자동 매매) 키움증권 OpenAPI - 시세표성정보요청(opt10007) (0) | 2022.11.25 |
(주식 자동 매매) 키움증권 OpenAPI - 체결정보요청(opt10003) (0) | 2022.11.16 |
(주식 자동 매매) 키움증권 OpenAPI - 거래명세원 받기(opt10002) (0) | 2022.10.17 |