더북(TheBook)

하지만 이렇게 가져온 종목들의 이름을 바탕으로 종목 코드를 가져오는 작업을 거쳐 최종적으로는 종목명과 종목 코드가 universe 테이블에 저장되어야 합니다. 종목 코드가 필요한 이유는 API를 사용할 때 필요한 키(key)가 종목명이 아니라 종목 코드이기 때문입니다. 예를 들어 일봉 데이터를 얻어 올 때 ‘삼성전자’ 정보를 요청한 것이 아니라 ‘005930’ 정보를 요청하기 때문입니다.

따라서 종목 코드를 찾기 위해 Kiwoom.py 파일에 만들어 두었던 get_code_list_by_marketget_master_code_name 함수가 필요합니다(계속해서 RSIStrategy.py 파일의 check_and_get_universe 함수를 완성해 보겠습니다).

RSIStrategy.py

(...)
def check_and_get_universe(self):
    if not check_table_exist(self.strategy_name, 'universe'):
    universe_list = get_universe()
    print(universe_list)
    universe = {}
    now = datetime.now().strftime("%Y%m%d") ------ 오늘 날짜를 20210101 형태로 지정

    kospi_code_list = self.kiwoom.get_code_list_by_market("0") ------ KOSPI(0)에 상장된 모든 종목 코드를 가져와 kospi_code_list에 저장

    kosdaq_code_list = self.kiwoom.get_code_list_by_market("10") ------ KOSDAQ(10)에 상장된 모든 종목 코드를 가져와 kosdaq_code_list에 저장

    for code in kospi_code_list + kosdaq_code_list: ------ 모든 종목 코드를 바탕으로 반복문 수행
        code_name = self.kiwoom.get_master_code_name(code) ------ 종목 코드에서 종목명을 얻어 옴

        if code_name in universe_list: ------ 얻어 온 종목명이 유니버스에 포함되어 있다면 딕셔너리에 추가
           universe[code] = code_name

        universe_df = pd.DataFrame({ ------ 코드, 종목명, 생성 일자를 열로 가지는 DataFrame 생성
            'code': universe.keys(),
            'code_name': universe.values(),
            'created_at': [now] * len(universe.keys())
        })

        insert_df_to_db(self.strategy_name, 'universe', universe_df) ------ universe라는 테이블 이름으로 Dataframe을 DB에 저장
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.