한 응답에서 가져올 수 있는 데이터양이 제한되어 있으므로 한 번에 다 가져오지 못한 경우 다시 응답을 얻어 와야 하는지 확인해야 합니다. 이는 슬롯에 전달되는 매개변수인 next 값을 사용하여 연속 조회할 값의 유무를 알 수 있습니다. next가 2로 전달된다면 해당 TR에서 얻어 올 수 있는 응답이 더 남아 있음을 의미합니다. 이렇게 next 값은 다음에 받아 올 수 있는 응답이 더 남아 있는지를 의미하며, 이번 요청에서 받아 온 데이터 개수를 확인하려면 GetRepeatCnt 함수에 호출한 TR 이름(trcode)을 전달하면 됩니다.
tr_data_cnt = self.dynamicCall("GetRepeatCnt(QString, QString)", trcode, rqname)
그러면 next와 GetRepeatCnt를 사용하여 앞으로 받아 올 응답이 있는지와 현재 받아 온 응답 개수까지 확인하는 slot 함수 코드는 다음과 같습니다.
def _on_receive_tr_data(self, screen_no, rqname, trcode, record_name, next, unused1, unused2, unused3, unused4):
print("[Kiwoom] _on_receive_tr_data is called {} / {} / {}".format(screen_no, rqname, trcode))
tr_data_cnt = self.dynamicCall("GetRepeatCnt(QString, QString)", trcode, rqname)
if next == '2':
self.has_next_tr_data = True
else:
self.has_next_tr_data = False