PyKRX 를 이용해 주가 이력 정보를 가져오는 방법입니다.
이전 글에서는 PyKRX로 종목 마스터 정보를 가져왔습니다.(아래 링크 참고)
https://sweetquant.tistory.com/368
아래와 같이 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
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를 구축해서 관리할 필요가 있습니다. 관련해서는 다음에 글을 올려볼까 합니다.
'데이터분석 > TradeOptimizer' 카테고리의 다른 글
트레이드 전략 - 위꼬리가 긴 하루 #3 (0) | 2022.12.02 |
---|---|
트레이드 전략 - 위꼬리가 긴 하루 #2 (0) | 2022.12.02 |
트레이드 전략 - 위꼬리가 긴 하루 #1 (0) | 2022.12.02 |
PyKRX - 주가 이력 정보 DB화하기 (0) | 2022.11.29 |
Python 기초 - 날짜 다루기(문자에서 날짜로, 날짜에서 문자로, 날짜 계산) (0) | 2022.11.24 |
Trade Optimizer (0) | 2022.11.23 |
PyKRX - 주식 마스터 정보 가져오기 (0) | 2022.11.16 |
네이버 클라우드에 MySQL 설치와 외부 접속 허용해주기 (0) | 2022.11.15 |