opw00018 TR은 싱글 데이터를 통해 계좌에 대한 평가 잔고 데이터를 제공하며 멀티 데이터를 통해 보유 종목별 평가 잔고 데이터를 제공합니다.
싱글 데이터를 통해 계좌에 대한 평가 잔고 데이터
멀티 데이터를 통해 보유 종목별 평가 잔고 데이터
# multi data
rows = self._get_repeat_cnt(trcode, rqname)
for i in range(rows):
name = self._comm_get_data(trcode, "", rqname, i, "종목명")
quantity = self._comm_get_data(trcode, "", rqname, i, "보유수량")
purchase_price = self._comm_get_data(trcode, "", rqname, i, "매입가")
current_price = self._comm_get_data(trcode, "", rqname, i, "현재가")
eval_profit_loss_price = self._comm_get_data(trcode, "", rqname, i, "평가손익")
earning_rate = self._comm_get_data(trcode, "", rqname, i, "수익률(%)")
quantity = Kiwoom.change_format(quantity)
purchase_price = Kiwoom.change_format(purchase_price)
current_price = Kiwoom.change_format(current_price)
eval_profit_loss_price = Kiwoom.change_format(eval_profit_loss_price)
earning_rate = Kiwoom.change_format2(earning_rate)
print(name, quantity, purchase_price, current_price, eval_profit_loss_price, earning_rate)
멀티 데이터는 먼저 _get_repeat_cnt 메서드를 호출해 보유 종목의 개수를 얻어옵니다.
런 다음 해당 개수만큼 반복하면서 각 보유 종목에 대한 상세 데이터를 _comm_get_data를 통해 얻어옵니다.
참고로 opw00018 TR을 사용하는 경우 한 번의 TR 요청으로 최대 20개의 보유 종목에 대한 데이터를 얻을 수 있습니다.
opw00018 TR을 통해 얻어온 데이터를 인스턴스 변수에 저장
def reset_opw00018_output(self):
self.opw00018_output = {'single': [], 'multi': []}
def _opw00018(self, rqname, trcode):
# single data
total_purchase_price = self._comm_get_data(trcode, "", rqname, 0, "총매입금액")
total_eval_price = self._comm_get_data(trcode, "", rqname, 0, "총평가금액")
total_eval_profit_loss_price = self._comm_get_data(trcode, "", rqname, 0, "총평가손익금액")
total_earning_rate = self._comm_get_data(trcode, "", rqname, 0, "총수익률(%)")
estimated_deposit = self._comm_get_data(trcode, "", rqname, 0, "추정예탁자산")
self.opw00018_output['single'].append(Kiwoom.change_format(total_purchase_price))
self.opw00018_output['single'].append(Kiwoom.change_format(total_eval_price))
self.opw00018_output['single'].append(Kiwoom.change_format(total_eval_profit_loss_price))
self.opw00018_output['single'].append(Kiwoom.change_format(total_earning_rate))
self.opw00018_output['single'].append(Kiwoom.change_format(estimated_deposit))
# multi data
rows = self._get_repeat_cnt(trcode, rqname)
for i in range(rows):
name = self._comm_get_data(trcode, "", rqname, i, "종목명")
quantity = self._comm_get_data(trcode, "", rqname, i, "보유수량")
purchase_price = self._comm_get_data(trcode, "", rqname, i, "매입가")
current_price = self._comm_get_data(trcode, "", rqname, i, "현재가")
eval_profit_loss_price = self._comm_get_data(trcode, "", rqname, i, "평가손익")
earning_rate = self._comm_get_data(trcode, "", rqname, i, "수익률(%)")
quantity = Kiwoom.change_format(quantity)
purchase_price = Kiwoom.change_format(purchase_price)
current_price = Kiwoom.change_format(current_price)
eval_profit_loss_price = Kiwoom.change_format(eval_profit_loss_price)
earning_rate = Kiwoom.change_format2(earning_rate)
self.opw00018_output['multi'].append([name, quantity, purchase_price, current_price,
eval_profit_loss_price, earning_rate])
서버 구분
def get_server_gubun(self):
ret = self.dynamicCall("KOA_Functions(QString, QString)", "GetServerGubun", "")
return ret
opw00018 TR을 사용할 때 한 가지 주의 사항은 실 서버로 접속할 때와 모의투자 서버로 접속할 때 제공되는 데이터의 형식이 다르다는 점입니다. 예를 들어, 모두 서버에서 수익률은 소수점 표시 없이 전달되지만 실 서버에서는 소수점을 포함해서 데이터가 전달됩니다. 따라서 접속 서버를 구분해서 데이터를 다르게 처리할 필요가 있습니다.
_opw00018 메서드에서 모의투자일 때는 ‘총수익률(%)’의 값을 100으로 나눈 후 출력되도록 코드를 다음과 같이 수정합니다.
싱글 데이터를 통해 계좌에 대한 평가 잔고 데이터
멀티 데이터를 통해 보유 종목별 평가 잔고 데이터
opw00018 TR을 통해 얻어온 데이터를 인스턴스 변수에 저장
서버 구분
[답변] 모의투자 선물 계좌는 예수금상세현황요청이 않되네요.
OPW00001 예수금상세현황요청을 하면, 일반주식계좌는 조회가 되는데, 선물계좌는 조회가 않되네요. 선물계좌현황조회 TR번호가 따로 있나요?
말씀하신 서비스는 선물옵션 계좌조회가 불가 합니다. OPW20010, OPW20012 TR서비스를 참고해보시기 바랍니다.