이 함수로 전달하는 매개변수는 가격 정보를 얻고자 하는 종목 코드입니다. 물론 KOA에서 설명하는 TR 호출에 필요한 입력 값은 종목 코드, 기준 일자, 수정 주가 구분으로 세 개이기 때문에 get_price_data 함수도 매개변수가 세 개 필요할 것이라고 생각할 수 있습니다. 하지만 수정 주가 구분은 항상 1로 사용할 예정이고 기준 일자는 전달하지 않으면 가장 최근 일자까지 조회해 오기 때문에 사실상 종목 코드만 있으면 가격 정보를 얻어 올 수 있습니다. 함수 원형은 다음과 같습니다.
Kiwoom.py
def get_price_data(self, code):
다음은 이 함수의 전체 코드를 살펴보면서 설명하겠습니다.
def get_price_data(self, code): ------ 종목의 상장일부터 가장 최근 일자까지 일봉 정보를 가져오는 함수
self.dynamicCall("SetInputValue(QString, QString)", "종목코드", code)
self.dynamicCall("SetInputValue(QString, QString)", "수정주가구분", "1")
self.dynamicCall("CommRqData(QString, QString, int, QString)", "opt10081_req", "opt10081", 0, "0001")
self.tr_event_loop.exec_()
ohlcv = self.tr_data
while self.has_next_tr_data:
self.dynamicCall("SetInputValue(QString, QString)", "종목코드", code)
self.dynamicCall("SetInputValue(QString, QString)", "수정주가구분", "1")
self.dynamicCall("CommRqData(QString, QString, int, QString)", "opt10081_req", "opt10081", 2, "0001")
self.tr_event_loop.exec_()
for key, val in self.tr_data.items():
ohlcv[key][-1:] = val
df = pd.DataFrame(ohlcv, columns=['open', 'high', 'low', 'close', 'volume'], index=ohlcv['date'])
return df[::-1]