파이썬 API 이용한 키움증권 정보 가져 오는 소스 인데요

파이썬 API 이용한 키움증권 정보 가져 오는 소스 인데요

작성일 2023.11.19댓글 0건
    게시물 수정 , 삭제는 로그인 필요

from PyQt5.QAxContainer import *
from PyQt5.QtCore import *
from config.errorCode import *

class Kiwoom(QAxWidget):
    def __init__(self):
        super().__init__()

        print("Kiwoom 클래스 입니다.")

        #### 이벤트 루프 모음
        self.login_event_loop = None        
        self.detail_account_info_event_loop = None
        self.detail_account_info_event_loop_2 = None
        #####################

        #### 변수 모음
        self.account_num = None
        예수금 = 0 # 예수금 변수
        #####################


        self.get_ocx_instance()
        self.event_slots()

        self.signal_login_commConnect()
        self.get_account_info()
        self.detail_account_info() #예수금 가져오는 것
        self.detail_account_mystock() #계좌평가 잔고내역 요청

    def get_ocx_instance(self):
        self.setControl("KHOPENAPI.KHOpenAPICtrl.1")

    def event_slots(self):
        self.OnEventConnect.connect(self.login_slot)
        self.OnReceiveTrData.connect(self.trdata_slot)

    def signal_login_commConnect(self):
        self.dynamicCall("CommConnect()")

        self.login_event_loop = QEventLoop()
        self.login_event_loop.exec_()

    def login_slot(self, errCode):
        print(errors(errCode))

        self.login_event_loop.exit()

    def get_account_info(self):
        account_list = self.dynamicCall("GetLoginInfo(String)", "ACCNO")

        self.account_num = account_list.split(';')[0]

        print("\n나의 보유 계좌번호 %s" % self.account_num)

    def detail_account_info(self):
        # 예수금 가져오는 부분
        self.dynamicCall("SetInputValue(String, String)", "계좌번호", self.account_num)
        self.dynamicCall("SetInputValue(String, String)", "비밀번호", "0000")
        self.dynamicCall("SetInputValue(String, String)", "비밀번호입력매체구분", "00")
        self.dynamicCall("SetInputValue(String, String)", "조회구분", "2")
        self.dynamicCall("CommRqData(String, String, int, String)", "예수금상세현황요청", "opw00001", "0", "2000")

        self.detail_account_info_event_loop = QEventLoop()
        self.detail_account_info_event_loop.exec_()

    def detail_account_mystock(self, sPrevNext="0"):
        # 계좌평가 잔고 내역 요청
        self.dynamicCall("SetInputValue(String, String)", "계좌번호", self.account_num)
        self.dynamicCall("SetInputValue(String, String)", "비밀번호", "0000")
        self.dynamicCall("SetInputValue(String, String)", "비밀번호입력매체구분", "00")
        self.dynamicCall("SetInputValue(String, String)", "조회구분", "2")
        self.dynamicCall("CommRqData(String, String, int, String)", "계좌평가잔고내역요청", "opw00018", sPrevNext, "2000")
        
        self.detail_account_info_event_loop_2 = QEventLoop()
        self.detail_account_info_event_loop_2.exec_()

    def trdata_slot(self, sScrNo, sRQName, sTrCode, sRecordName, sPrevNext):
        # sScrno : 스크린번호
        # sRQName : 내가 요청 했을 때 지은 이름
        # sTrCode : 요청 id, tr코드
        # sRecordName : 사용 안함
        # sPrevNext : 다음 페이지가 있는지

        if sRQName == "예수금상세현황요청":
            예수금 = self.dynamicCall("GetCommData(String, String, int, String)", sTrCode, sRQName, 0, "예수금")
            print("예수금 : {0:,} 원".format(int(예수금)))

            예수금 = int(예수금)

            출금가능금액 = self.dynamicCall("GetCommData(String, String, int, String)", sTrCode, sRQName, 0, "출금가능금액")
            print("출금가능금액 : {0:,} 원".format(int(출금가능금액)))

            self.detail_account_info_event_loop.exit()

        elif sRQName == "계좌평가잔고내역요청":
            총매입금액 = self.dynamicCall("GetCommData(String, String, int, String)", sTrCode, sRQName, 0, "총매입금액")
            print("\n총매입금액 : {0:,} 원".format(int(총매입금액)))
            
            총수익률 = self.dynamicCall("GetCommData(String, String, int, String)", sTrCode, sRQName, 0, "총수익률(%)")
            print("총수익률(%) : {0:+.2f} %".format((float(총수익률))))

            self.detail_account_info_event_loop_2.exit()

--------------------------------

D+2 에 있는 예수금을 가져 오고 싶거든요
어디 부분을 어떻게 수정 해야 할지 모르겠어요
좀 알려 주세요


#파이썬 api #파이썬 api 호출 #파이썬 api 만들기 #파이썬 api 서버 구축 #파이썬 api 데이터 가져오기 #파이썬 api 호출 예제 #파이썬 api 사용법 #파이썬 api json 파싱 #파이썬 api란 #파이썬 api 서버

키움증권 관련 질문

... (상해/심천) 키움증권(1544-9400) 홍콩,중국(상해,심천)... 고객센터가 잘 되어 있는 증권사가 추후 이용하실때 많은... 신분증만 가져 가시면 됩니다. 거래 방법이나 자세한...

정보에서 open api파이썬으로...

http://www.wamis.go.kr:8080/wamisweb/rf/w5.do 이 링크에서 open api를 사용하여 월별 평균 강수량을 얻어오는 소스코드 좀 원합니다ㅜㅜㅜ 전문가님 제발 부탁...

키움증권 미국주식 인버스,곱버스

... (상해/심천) 키움증권(1544-9400) 홍콩,중국(상해,심천)... 고객센터가 잘 되어 있는 증권사가 추후 이용하실때 많은... 신분증만 가져 가시면 됩니다. 거래 방법이나 자세한...

원하는 정보 가져 올 수 있나요? api 없는...

... 로그인 정보를 받아오거나 가로 챌 수 있는 기능이... 제공하는 API등을 이용하지 않고 클라이언트단 또는... 통하여 가져오면 될듯 합니다. 대략적인 설계구조는 아래와...

자바 api 이용한 설명 부탁드립니다.

... 소스상으로 보니 이해가 잘 안되는 부분들이... API이용을 안해서 그런지 이제 부터 열심히 하려는데... 키보드로 부터 데이터를 받아오는 스트림을 담고...

키움증권 계좌

키움증권에서 계좌개설해서 국내주식하고 있었는데요... 고객센터가 잘 되어 있는 증권사가 추후 이용하실때 많은... 신분증만 가져 가시면 됩니다. 거래 방법이나 자세한...

파이썬 beautifulsoup을 활용한 크롤링

... 마우스커서를 가져다 대면 해당 날짜에 거래된... 정보가 뜨는데 beautifulsoup으로 파이썬에서 소스를... 처럼 API 주소에서 받아오는걸로 보입니다. 해당 API...

투자방법 질문

... (상해/심천) 키움증권(1544-9400) 홍콩,중국(상해,심천)... 고객센터가 잘 되어 있는 증권사가 추후 이용하실때 많은... 신분증만 가져 가시면 됩니다. 거래 방법이나 자세한...