PyKRX 를 이용해 주가 이력 정보를 가져오는 방법입니다.

 

이전 글에서는 PyKRX로 종목 마스터 정보를 가져왔습니다.(아래 링크 참고)

https://sweetquant.tistory.com/368

 

PyKRX - 주식 마스터 정보 가져오기

자신의 DB에 주식 마스터 테이블을 만들고, 파이썬에서 pykrx 모듈을 사용해 주식 마스터 정보를 가져오는 과정입니다. pykrx는 github에서 공개하고 있으며, 한국의 주식 정보를 쉽게 가져다 쓸수 있

sweetquant.tistory.com

 

 

아래와 같이 get_market_ohlcv(시작일, 종료일, 종목코드) 를 호출하면 Dataframe 형태로 주가 이력 정보를 가져옵니다.

조금더, 개발이 편하게 하기 위해서 별도의 get_stock_history라는 함수를 만들었습니다.

get_stock_history는 종목코드, 시작일, 종료일을 입력 받습니다. 만약에 시작일과 종료일이 비어 있으면, 이전 54주전부터 현재까지로 시작일과 종료일을 설정하도록 구성했습니다.

    def get_stock_history(_stk_cd, _fr_ymd, _to_ymd):
        if _to_ymd == '':
            _to_ymd = datetime.now().strftime('%Y%m%d')
        if _fr_ymd == '':
            _fr_ymd = (datetime.strptime(_to_ymd,'%Y%m%d') - timedelta(weeks=54)).strftime('%Y%m%d')

        df = stock.get_market_ohlcv(_fr_ymd, _to_ymd, _stk_cd)
        return df

 

날짜 관련 처리는 아래 글을 간단히 참고합니다.

https://sweetquant.tistory.com/371

 

Python 기초 - 날짜 다루기(문자에서 날짜로, 날짜에서 문자로, 날짜 계산)

Python 기초 - 날짜 다루기 간단한 날짜 다루는 방법입니다. datetime 라이브러리를 사용합니다. now: 현재 날짜, 시간을 가져옵니다. strftime: 날짜 데이터를 문자로 변형합니다. strpime: 문자 데이터를

sweetquant.tistory.com

 

get_stock_history 함수를 기존의 MyCollectKRX 클래스에 추가합니다. 아래와 같습니다.

from pykrx import stock
from datetime import datetime, timedelta

class MyCollectKRX:
    @staticmethod
    def get_stock_master(_market):
        stk_master = []
        for stk_cd in stock.get_market_ticker_list(market=_market):
            stk_nm = stock.get_market_ticker_name(stk_cd)
            stk_master.append((stk_cd, stk_nm, _market))
        return stk_master

    @staticmethod
    def get_stock_history(_stk_cd, _fr_ymd, _to_ymd):
        if _to_ymd == '':
            _to_ymd = datetime.now().strftime('%Y%m%d')
        if _fr_ymd == '':
            _fr_ymd = (datetime.strptime(_to_ymd,'%Y%m%d') - timedelta(weeks=54)).strftime('%Y%m%d')

        df = stock.get_market_ohlcv(_fr_ymd, _to_ymd, _stk_cd)
        return df


if __name__ == '__main__':
    myCollectKRX = MyCollectKRX()
    df = myCollectKRX.get_stock_history(_stk_cd='005930', _fr_ymd='', _to_ymd='')
	print(df)
    print('작업 완료')

 

위에서는 종목코드(_sstk_cd)에 005930을 넘겼습니다. 삼성전자입니다. 실행해보면, 아래와 같이 데이터프레임 형태의 결과를 얻을 수 있습니다.

 

날짜        시가    고가   저가    종가   거래량     거래대금    등락률                                              
2021-11-12  70200  70900  69900  70600  10087450  711487813500  1.00
2021-11-15  71700  71900  70900  71400  12420710  888880719596  1.13
2021-11-16  71500  72000  71300  71300  10919239  782118934000 -0.14

 

실행해보면 알겠지만, PyKRX에서 주가 이력을 가져오는 속도가 빠르지는 않습니다.

그러므로 자주 실행하면, PyKRX를 사용하는 다른 사람들에게 피해가 될 수 있으니,, 알아서 적당히 적절히 실행할 필요가 있습니다. 또한 한번 조회한 데이터는 개인 DB를 구축해서 관리할 필요가 있습니다. 관련해서는 다음에 글을 올려볼까 합니다.

 

+ Recent posts