씽크알고 : 씽크풀 알고리즘 트레이딩 with xingAPI

> 질의 응답 게시판 > 상세보기

커뮤니티

질의 응답 게시판
자유게시판
질의 응답 게시판
무료강의는 누구나 질문이 가능하며, 유료강의는 결제하신 강의에 대해서 질문이 가능합니다. 답변은 머니봇 강사님이 직접 달아드립니다.
트위터로 보내기 싸이월드 공감
[t8413] 여러종목 조회  |  질의 응답 게시판 2018-09-12 15:30:59
작성자   undefined_1 cooper0519@naver.com 조회  383   |   추천  40

머니봇님 안녕하세요.

유용한 강의 잘 듣고 있습니다. 정말 감사합니다.

아래 코드를 실행시, 2개 종목을 조회하는 코딩을 하였으나, 결과는 아래와 같이 한 종목의 data만 조회가 됩니다.

quaery_state 변수를 1로 변경을 했는데도 조회가 안되는 이유를 모르겠습니다. for문으로 전체종목 date를 가져오려고 하는데 오류가 있어, 아래와 같이 단순하게

2종목만 test했는데 안되더라구요.........조언 부탁드리겠습니다.

감사합니다.



 

import win32com.client
import pythoncom

class XASessionEventHandler:
    login_state = 0

    def OnLogin(self, code, msg):
        if code == "0000":
            print("로그인 성공")
            XASessionEventHandler.login_state =1

        else:
            print("로그인 실패")

class XAQueryEventHandlerT8413:
    query_state = 0

    def OnReceiveData(self, code):
        XAQueryEventHandlerT8413.query_state = 1

#------login--------------
id = "id"
passwd = "passwd"
cert = "cert"

instXASession = win32com.client.DispatchWithEvents("XA_Session.XASession", XASessionEventHandler)
instXASession.ConnectServer("hts.ebestsec.co.kr", 20001)
instXASession.Login(id, passwd, cert, 0, 0)

while XASessionEventHandler.login_state == 0:
    pythoncom.PumpWaitingMessages()


#-------T8413 1번째 종목 조회---------------------

instXAQueryT8413 = win32com.client.DispatchWithEvents("XA_DataSet.XAQuery", XAQueryEventHandlerT8413)
instXAQueryT8413.ResFileName = "C:\\eBEST\\xingAPI\\Res\\t8413.res"

instXAQueryT8413.SetFieldData("t8413InBlock", "shcode", 0, "078020")
instXAQueryT8413.SetFieldData("t8413InBlock", "gubun", 0, "2")
instXAQueryT8413.SetFieldData("t8413InBlock", "sdate", 0, "20160111")
instXAQueryT8413.SetFieldData("t8413InBlock", "edate", 0, "20160112")
instXAQueryT8413.SetFieldData("t8413InBlock", "comp_yn", 0, "N")

instXAQueryT8413.Request(0)

while XAQueryEventHandlerT8413.query_state == 0:
    pythoncom.PumpWaitingMessages()

count = instXAQueryT8413.GetBlockCount("t8413OutBlock1")

for i in range(count):
    date = instXAQueryT8413.GetFieldData("t8413OutBlock1", "date", i)
    open = instXAQueryT8413.GetFieldData("t8413OutBlock1", "open", i)
    high = instXAQueryT8413.GetFieldData("t8413OutBlock1", "high", i)
    low = instXAQueryT8413.GetFieldData("t8413OutBlock1", "low", i)
    close = instXAQueryT8413.GetFieldData("t8413OutBlock1", "close", i)
    print(date, open, high, low, close)

XAQueryEventHandlerT8413.query_state = 0

#------------t8413 2번째 종목 조회-------------
instXAQueryT8413 = win32com.client.DispatchWithEvents("XA_DataSet.XAQuery", XAQueryEventHandlerT8413)
instXAQueryT8413.ResFileName = "C:\\eBEST\\xingAPI\\Res\\t8413.res"

instXAQueryT8413.SetFieldData("t8413InBlock", "shcode", 0, "000020")
instXAQueryT8413.SetFieldData("t8413InBlock", "gubun", 0, "2")
instXAQueryT8413.SetFieldData("t8413InBlock", "sdate", 0, "20160111")
instXAQueryT8413.SetFieldData("t8413InBlock", "edate", 0, "20160112")
instXAQueryT8413.SetFieldData("t8413InBlock", "comp_yn", 0, "N")

instXAQueryT8413.Request(0)

while XAQueryEventHandlerT8413.query_state == 0:
    pythoncom.PumpWaitingMessages()

count = instXAQueryT8413.GetBlockCount("t8413OutBlock1")

for i in range(count):
    date = instXAQueryT8413.GetFieldData("t8413OutBlock1", "date", i)
    open = instXAQueryT8413.GetFieldData("t8413OutBlock1", "open", i)
    high = instXAQueryT8413.GetFieldData("t8413OutBlock1", "high", i)
    low = instXAQueryT8413.GetFieldData("t8413OutBlock1", "low", i)
    close = instXAQueryT8413.GetFieldData("t8413OutBlock1", "close", i)
    print(date, open, high, low, close)
추천 소스보기
목록
(주) 씽크풀
서울시 영등포구 국제금융로 70. 15층 (여의도동, 미원빌딩)
고객센터 1666-6300 사업자등록번호 115-81-54775 대표 김동진
@ThinkPool Co.,Ltd. All Rights Reserved