추가된 코드가 많으니 조금씩 나누어서 설명해 보겠습니다. 앞서 TR을 요청하기 전에 전달할 입력 값들을 설정하고 CommRqData에 사용할 TR을 전달하면 TR 요청이 완료된 것이라고 설명했습니다. 이 부분에 해당하는 코드는 다음과 같습니다. 이 코드는 매개변수인 종목 코드 값과 수정 주가 구분 값을 설정하고 opt10081에 대한 요청을 보냅니다.
self.dynamicCall("SetInputValue(QString, QString)", "종목코드", code)
self.dynamicCall("SetInputValue(QString, QString)", "수정주가구분", "1")
self.dynamicCall("CommRqData(QString, QString, int, QString)", "opt10081_req", "opt10081", 0, "0001")
이렇게 CommRqData를 사용하여 TR 요청을 보낸 후 응답 대기 상태로 만드는 코드가 그 바로 다음 줄인 self.tr_event_loop.exec_()입니다. self.tr_event_loop.exec_() 이후 코드는 TR에 대한 응답이 도착한 후 실행될 수 있습니다. 따라서 다음 코드에서 self.tr_data는 응답 slot 함수, _on_receive_tr_data에서 수신한 일봉 데이터가 저장되어 있어 사용할 수 있습니다.
ohlcv = self.tr_data