본문 바로가기

글/코딩

[키움 API] 총 자산 불러오기

반응형

 

 전략이 수정됨에 따라 총 자산을 불러올 필요가 생겼다.

기존에 예수금을 불러오던 code가 있으니 그대로 응용해보자.

 

#예수금 불러오기
def get_deposit(self):
	self.dynamicCall("SetInputValue(QString, QString)", "계좌번호", self.account_number)
	self.dynamicCall("SetInputValue(QString, QString)", "비밀번호입력매체구분", "00")
	self.dynamicCall("SetInputValue(QString, QString)", "조회구분", "2")
	self.dynamicCall("CommRqData(QString, QString, int, QString)", "opw00001_req", "opw00001", 0, "0002")

# 예수금 확인
	self.deposit = self.kiwoom.get_deposit()

 

 

이 코드를 그대로 추정 자산 항목으로 바꾸면 될 것 같다.

KOA studio에서 찾아보니 추정자산 관련된 호출은 이렇게 정리되어있다.

 

비교용으로 띄워두는 예수금과 추정자산의 호출

 

 

둘의 형태로 보아, 총자산을 불러올 함수는 아래와 같이 copy하면 되지 않을까 하는게 내 판단이었다.

 

    def get_totalasset(self):
        self.dynamicCall("SetInputValue(QString, QString)", "계좌번호", self.account_number)
        self.dynamicCall("SetInputValue(QString, QString)", "상장폐지조회구분", "1")
        self.dynamicCall("CommRqData(QString, QString, int, QString)", "OPW00003_req", "OPW00003", 0, "0002")

        self.tr_event_loop.exec_()
        return self.tr_data

 

이제 Main 모듈에서도 동작하는지 확인하기 위해 함수를 불러와보자.

# Kiwoom 총자산 조회
self.totalasset = 0
self.totalasset = self.kiwoom.get_totalasset()
print(self.totalasset)

 

한 번 이대로 코드를 돌려보기로 한다.

 

이상한 오류 발견

 

 

AttributeError: 'Kiwoom' object has no attribute 'tr_data'

 

돌리니까 위와 같은 이상한 경고문이 나오는데, 오랜만에 다뤄서 까먹었지만... request 이름은 미리 정의를 해줘야한다.

opw00001_req를 정의해줬던 함수에서 똑같이 opw0003_req를 정의해줄 수 있도록 하자.

 

    def _on_receive_tr_data(self, screen_no, rqname, trcode, record_name, next, unused1, unused2, unused3, unused4):
        "TR조회의 응답 결과를 얻어오는 함수"
        print("[Kiwoom] _on_receive_tr_data is called {} / {} / {}".format(screen_no, rqname, trcode))
        tr_data_cnt = self.dynamicCall("GetRepeatCnt(QString, QString)", trcode, rqname)
		elif rqname == "opw00003_req":
            deposit = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, 0, "추정예탁자산")
            self.tr_data = int(deposit)
            print(self.tr_data)

 

 

쉽지않네 정말

 

 

겨우 불러오기 성공!

정말 쉽지않다. tr 하나 다루는게 너무어렵구만.

 

이제 이 총액을 불러오는 함수를 매일 날짜와 함께 csv 형태로 저장할 수 있도록 해두는 작업이 필요하다.

나중에야 데이터가 추가될지도 모르겠지만 당장은 내 개인적인 기록보관이 가장 우선시되어야 하니까.

 

오늘 한 일의 의의라면, 참 오랜만의 코드 개선작업이었다는것? 정도가 되겠다.

반응형