반응형
xing api -- 로그인후 증권계좌 조회하기
환경 ; windows 10 64bit, python 3.6 32bit
-- xing api 도움말 참고
** 로그인시 결과는 OnLogin event handler 로 들어온다.
xing_login.py 라는 이름으로 저장하자.
--> 다음에 module 로 사용할 이름이다.
import win32com.client
import pythoncom
class XSession:
"""
classmethod get_instance() 를 사용하여, instance 를 만들어야함.
"""
def __init__(self):
self.login_state = 0
def OnLogin(self, code, msg): # event handler
"""
Login 이 성공적으로 이베스트 서버로 전송된후,
로그인 결과에 대한 Login 이벤트 발생시 실행되는 event handler
"""
if code == "0000":
print("로그인 ok\n")
self.login_state = 1
else:
self.login_state = 2
print("로그인 fail.. \n code={0}, message={1}\n".format(code, msg))
def api_login(self, id="myid", pwd="pass", cert_pwd="pass2"): # id, 암호, 공인인증서 암호
self.ConnectServer("hts.ebestsec.co.kr", 20001)
is_connected = self.Login(id, pwd, cert_pwd, 0, False) # 로그인 하기
if not is_connected: # 서버에 연결 안되거나, 전송 에러시
print("로그인 서버 접속 실패... ")
return
while self.login_state == 0:
pythoncom.PumpWaitingMessages()
def account_info(self):
"""
계좌 정보 조회
"""
if self.login_state != 1: # 로그인 성공 아니면, 종료
return
account_no = self.GetAccountListCount()
print("계좌 갯수 = {0}".format(account_no))
for i in range(account_no):
account = self.GetAccountList(i)
print("계좌번호 = {0}".format(account))
@classmethod
def get_instance(cls):
# DispatchWithEvents로 instance 생성하기
xsession = win32com.client.DispatchWithEvents("XA_Session.XASession", cls)
return xsession
if __name__ == "__main__":
xsession = XSession.get_instance()
xsession.api_login()
xsession.account_info()
print("------END--")
<< 실행 결과 >>
<< 소스 >>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import win32com.client | |
import pythoncom | |
class XSession: | |
""" | |
classmethod get_instance() 를 사용하여, instance 를 만들어야함. | |
""" | |
def __init__(self): | |
self.login_state = 0 | |
def OnLogin(self, code, msg): # event handler | |
""" | |
Login 이 성공적으로 이베스트 서버로 전송된후, | |
로그인 결과에 대한 Login 이벤트 발생시 실행되는 event handler | |
""" | |
if code == "0000": | |
print("로그인 ok\n") | |
self.login_state = 1 | |
else: | |
self.login_state = 2 | |
print("로그인 fail.. \n code={0}, message={1}\n".format(code, msg)) | |
def api_login(self, id="myid", pwd="pass", cert_pwd="pass2"): # id, 암호, 공인인증서 암호 | |
self.ConnectServer("hts.ebestsec.co.kr", 20001) | |
is_connected = self.Login(id, pwd, cert_pwd, 0, False) # 로그인 하기 | |
if not is_connected: # 서버에 연결 안되거나, 전송 에러시 | |
print("로그인 서버 접속 실패... ") | |
return | |
while self.login_state == 0: | |
pythoncom.PumpWaitingMessages() | |
def account_info(self): | |
""" | |
계좌 정보 조회 | |
""" | |
if self.login_state != 1: # 로그인 성공 아니면, 종료 | |
return | |
account_no = self.GetAccountListCount() | |
print("계좌 갯수 = {0}".format(account_no)) | |
for i in range(account_no): | |
account = self.GetAccountList(i) | |
print("계좌번호 = {0}".format(account)) | |
@classmethod | |
def get_instance(cls): | |
# DispatchWithEvents로 instance 생성하기 | |
xsession = win32com.client.DispatchWithEvents("XA_Session.XASession", cls) | |
return xsession | |
if __name__ == "__main__": | |
xsession = XSession.get_instance() | |
xsession.api_login() | |
xsession.account_info() | |
print("------END--") | |
반응형
'증권사 api' 카테고리의 다른 글
creon plus -- 당일 체결 data 받기 TR -- StockBid 사용 (0) | 2018.10.19 |
---|---|
xing api -- 실시간 데이터 조회 (6) | 2017.06.02 |
xing api -- 체결창 ; 반복 데이터(Occurs), 연속 데이터 조회 (2) | 2017.06.01 |
xing api -- 현재가 ; 단일 데이터 조회 (0) | 2017.06.01 |
error 해결 -- U-CYBOS가 서버에 접속되어 있지 않습니다. (0) | 2015.08.16 |