5.[키움증권 오픈 API] 계좌 정보 가져오기
2021. 7. 11. 15:57ㆍAI트레이딩/키움API
728x90
반응형
계좌 정보 가져오기
로그인 후 사용할 수 있으며 인자값에 대응하는 정보를 얻을 수 있다.
"ACCOUNT_CNT" : 보유계좌 갯수를 반환.
"ACCLIST" 또는 "ACCNO" : 구분자 ';'로 연결된 보유계좌 목록을 반환.
"USER_ID" : 사용자 ID를 반환.
"USER_NAME" : 사용자 이름을 반환.
"GetServerGubun" : 접속서버 구분을 반환.(1 : 모의투자, 나머지 : 실거래서버)
"KEY_BSECGB" : 키보드 보안 해지여부를 반환.(0 : 정상, 1 : 해지)
"FIREW_SECGB" : 방화벽 설정여부를 반환.(0 : 미설정, 1 : 설정, 2 : 해지)
[보유계좌 목록 예시]
';'로 보유계좌가 분리된다
예시) "3040525910;5678905510;3040526010"
import sys
from PyQt5.QtWidgets import *
from PyQt5.QAxContainer import *
from PyQt5.QtCore import *
import pandas as pd
from log import *
TR_REQ_TIME = 0.2
# ------------------------------------------------
class KiwoomAPI(QAxWidget):
""" 키움증권 OPENAPI+ 라이브러리 쓰기위해 PyQt5 상속
기본세팅
초당 5회 제한 -> 최소한 0.2초 대기
1시간에 1000회 제한 -> 3.6초 이상 대기 """
def __init__(self):
print(f'openapi __name__:{__name__}')
super().__init__()
# openapi 호출 횟수를 저장하는 변수
# 키움 openapi 연결
self._create_kiwoom_api_instance()
self._set_signal_slots()
# 요청 결과
self.event = None
self.result = {}
# ////////////////////////////////////////////////////////////////
# // login ////////////////////////////////
# //////////////////////////////////////////////////////////////
def _create_kiwoom_api_instance(self):
""" PyQt의 QAxWidget class를 사용해 API instance 생성
"""
self.setControl('KHOPENAPI.KHOpenAPICtrl.1')
def _set_signal_slots(self):
try:
self.OnEventConnect.connect(self._on_event_connect)
self.OnReceiveMsg.connect(self._on_receive_msg)
except Exception as e:
ana_64bit = sys.maxsize > 2 ** 32
if ana_64bit:
print('******[Anaconda 64bit]******* need to be 32bit')
else:
print(f'{e}')
def comm_connect(self, **kwargs):
""""로그인 요청 -> 키움증권 로그인창 띄워줌. 자동로그인 설정시 바로 로그인 진행
OnEventConnect() callback
:param kwargs:
:return: 0: 로그인 요청 성공
"""
lRet = self.dynamicCall('CommConnect()')
self.event = QEventLoop()
print("event loop 전")
self.event.exec_()
print("event loop 후")
print("lRet", lRet)
return lRet
def _on_event_connect(self, nErrCode, **kwargs):
"""로그인 처리 이벤트, 로그인 상태 전달
로그인 성공시 0, 음수면 실패
:param ErrCode: 0: 로그인 성공, 100: 사용자 정보교환 실패, 101: 서버접속 실패, 102: 버전처리 실패
:param kwargs:
:return:
"""
if nErrCode == 0:
print('[*----------[ 연결성공 ]----------*]')
elif nErrCode == -100:
print('********[사용자 정보교환 실패]********')
elif nErrCode == -101:
print('******** [서버접속 실패] ********')
elif nErrCode == -102:
print('******** [버전처리 실패] ********')
self.result['result'] = nErrCode
if self.event is not None:
self.event.exit()
def get_connect_state(self, **kwargs):
""" 로그인 상태 확인
OnEventConnect callback
:param kwargs:
:return: 0: 연결안됨, 1: 연결됨
"""
ret = self.dynamicCall("GetConnectState()")
# time.sleep(TR_REQ_TIME_INTERVAL)
return ret
# ////////////////////////////////////////////////////////////////
# // account info ////////////////////////////////
# //////////////////////////////////////////////////////////////
def account_info(self):
""" 계좌번호 받아서 ; 기준으로 잘라서 앞에 10자리 반환
접속서버 구분: 1 : 모의투자, 나머지 : 실거래서버
키보드 보안 해지여부: 0 : 정상, 1 : 해지
방화벽 설정여부: 0 : 미설정, 1 : 설정, 2 : 해지
:return: accout:list
"""
print('[*----------[ 연결성공 ]----------*]')
print('[*--------[ AccountInfo ]--------*]')
account_number = self.get_login_info('ACCNO')
account_cnt = self.get_login_info('ACCOUNT_CNT')
account_id = self.get_login_info('USER_ID')
account_server = self.get_login_info('GetServerGubun')
account_key = self.get_login_info('UKEY_BSECGB')
account_firew = self.get_login_info('FIREW_SECGB')
print(f"보유 계좌 개수 {account_cnt}")
print(f"ID {account_id}")
print(f"서버구분 {account_server}")
print(f"키보드보안 {account_key}")
print(f"방화벽 {account_firew}")
print(account_number)
res0 = account_number.split(';')[0]
print('===================================')
print(f'* [계좌번호 : {res0}] *')
print('===================================')
return res0
def get_login_info(self, sTag):
""" OpenAPI+에서 계좌 정보 및 로그인 사용자 정보를 가져오는 메서드 GetLoginInfo
"""
try:
raw = self.dynamicCall('GetLoginInfo(QString)', sTag)
# print(ret)
return raw
except Exception as e:
print(e)
if __name__ == '__main__':
app = QApplication(sys.argv)
kiwoom = KiwoomAPI()
kiwoom.comm_connect()
kiwoom.account_info()
반응형
'AI트레이딩 > 키움API' 카테고리의 다른 글
[키움 OpenAPI] 개발 가이드 종합 (0) | 2021.09.17 |
---|---|
키움증권 openAPI 개발가이드 오류코드 (0) | 2020.12.31 |
키움증권 openAPI 개발가이드 정리 - 1 (통신처리, 로그인, 조회) (0) | 2020.12.27 |
[키움증권 openAPI] QAxWidget 상속 정보 (0) | 2020.12.24 |
4. [키움 openAPI] 종목코드, 기업명 받아오기 (0) | 2020.12.09 |