- 자동매매 프로그램 GitHub URL - https://github.com/mujomboy/xingProject.git
- 주식종목조회 [t8430] 전체 코드
더보기
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)
# 주식종목조회에 해당되는 t8430.res 파일이 있는 경로 가져오기
resfile_path = "C:\\Users\\bysik\\PycharmProjects\\xingProject\\res\\t8430.res"
# 조회 시 입력 파라미터 타입 명 t8430InBlock
inblock = "%sInBlock" % "t8430"
# 조회 시 리턴 파라미터 타입 명 t8430InBlock
outblock = "%sOutBlock" % "t8430"
# 경로를 통해 res 파일를 로드.
query.LoadFromResFile(resfile_path)
# 입력 파리미터를 초기화 합니다. 0 : 전체 조회, 1 : 코스피, 2 : 코스닥
query.SetFieldData(inblock, "gubun", 0, '0')
# 조회 요청
query.Request(0)
while not QueryEvents.state:
# 응답 대기
pythoncom.PumpWaitingMessages()
# 응답이 왔으므로 응답 대기 관련 state 값 초기화
QueryEvents.state = not QueryEvents.state
for i in range(query.GetBlockCount(outblock)):
# 리턴 데이터 추출
hname = query.GetFieldData(outblock, "hname", i).strip() # 종목명
shcode = query.GetFieldData(outblock, "shcode", i).strip() # 단축코드
expcode = query.GetFieldData(outblock, "expcode", i).strip() # 확장코드
etfgubun = query.GetFieldData(outblock, "etfgubun", i).strip() # ETF구분(1:ETF)
uplmtprice = query.GetFieldData(outblock, "uplmtprice", i).strip() # 상한가
dnlmtprice = query.GetFieldData(outblock, "dnlmtprice", i).strip() # 하한가
jnilclose = query.GetFieldData(outblock, "jnilclose", i).strip() # 전일가
memedan = query.GetFieldData(outblock, "memedan", i).strip() # 주문수량단위
recprice = query.GetFieldData(outblock, "recprice", i).strip() # 기준가
gubun = query.GetFieldData(outblock, "gubun", i).strip() # 구분(1:코스피, 2: 코스닥)
print(hname, shcode, expcode, etfgubun, uplmtprice, dnlmtprice, jnilclose, memedan, recprice, gubun)
# 세션 클래스
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' 카테고리의 다른 글
[xingApi, 파이썬] 업종전체조회 하기 (0) | 2022.07.04 |
---|---|
pywintypes.com_error 에러시 대처법 (0) | 2022.06.06 |