반응형
- 자동매매 프로그램 GitHub URL - https://github.com/mujomboy/xingProject.git
- 주식챠트(N분) 데이터조회 [t8412] 전체 코드
더보기
import pythoncom
import win32com.client
from event.query import QueryEvents
from event.session import SessionEvents
# 세션 객체 요청 및 객체 생성
session = win32com.client.DispatchWithEvents("XA_Session.XASession", SessionEvents)
url = 'demo.ebestsec.co.kr' # 모의 투자
# url = 'hts.ebestsec.co.kr' # 실제 투자
session.ConnectServer(url, 200001)
session.Login("아이디", "비번", "", 0, 0)
while SessionEvents.state == "":
# 로그인 상태 변경 메시지 채크
pythoncom.PumpWaitingMessages()
# 쿼리 이벤트 객체 가져오기
query = win32com.client.DispatchWithEvents("XA_DataSet.XAQuery", QueryEvents)
# 주식챠트(N분)데이터 조회에 해당되는 t8412.res 파일이 있는 경로 가져오기
resfile_path = "C:\\Users\\bysik\\PycharmProjects\\xingProject\\res\\t8412.res"
# 조회 시 입력 파라미터 타입 명 t8412InBlock
inblock = "%sInBlock" % "t8412"
# 조회 시 리턴 파라미터 타입 명 t8412InBlock
outblock1 = "%sOutBlock1" % "t8412"
# 경로를 통해 res 파일를 로드.
query.LoadFromResFile(resfile_path)
# 입력 파리미터를 초기화 합니다.
query.SetFieldData(inblock, "shcode", 0, '009150') # 종목코드 삼성전기
query.SetFieldData(inblock, "ncnt", 0, '5') # (N)분 5분 챠트 데이터
query.SetFieldData(inblock, "sdate", 0, '20220707') # 시작날짜 2022년 7월 7일
query.SetFieldData(inblock, "edate", 0, '20220708') # 종료날짜 2022년 7월 8일
query.SetFieldData(inblock, "comp_yn", 0, "N") # 압축여부
# 조회 요청
query.Request(0)
while not QueryEvents.state:
# 응답 대기
pythoncom.PumpWaitingMessages()
# 응답이 왔으므로 응답 대기 관련 state 값 초기화
QueryEvents.state = not QueryEvents.state
for i in range(query.GetBlockCount(outblock1)):
# 리턴 데이터 추출
date = query.GetFieldData(outblock1, "date", i).strip() # 날짜
time = query.GetFieldData(outblock1, "time", i).strip() # 시간
open = query.GetFieldData(outblock1, "open", i).strip() # 시가
high = query.GetFieldData(outblock1, "high", i).strip() # 고가
low = query.GetFieldData(outblock1, "low", i).strip() # 저가
close = query.GetFieldData(outblock1, "close", i).strip() # 종가
jdiff_vol = query.GetFieldData(outblock1, "jdiff_vol", i).strip() # 거래량
value = query.GetFieldData(outblock1, "value", i).strip() # 거래대금
print(date, time, open, high, low, close, jdiff_vol, value)
# 세션 클래스
class SessionEvents:
state = ""
msg = ""
def OnLogin(self, code, msg):
SessionEvents.state = code
SessionEvents.msg = msg
def OnLogout(self):
print("OnLogout")
def OnDisconnect(self):
print("OnDisconnect")
# 쿼리 클래스
class QueryEvents:
state = False
code = ""
error = ""
msgCode = ""
msg = ""
def OnReceiveData(self, code):
QueryEvents.code = code
QueryEvents.state = True
def OnReceiveMessage(self, error, msgCode, msg):
QueryEvents.error = error
QueryEvents.msgCode = msgCode
QueryEvents.msg = msg
반응형
'xingAPI > 자동 매매 프로그램 만들기 (PYQT5)' 카테고리의 다른 글
[xingAPI, 파이썬, PYQT5 - QtChart] 주식 이동평균선 만들기 (6) | 2022.08.20 |
---|---|
[xingAPI, 파이썬, PYQT5 - QtChart] 주식 봉차트(캔들차트) 만들기 (0) | 2022.07.29 |
[xingApi, 파이썬] 로그인 기능 만들기 (0) | 2022.06.30 |