더북(TheBook)

이 함수로 전달하는 매개변수는 가격 정보를 얻고자 하는 종목 코드입니다. 물론 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]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.