Appia의 IT세상

Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 주가시세(OHLCV) 출력(feat. OHLCV란?) 본문

Python/Python 주식

Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 주가시세(OHLCV) 출력(feat. OHLCV란?)

Appia 2020. 10. 29. 07:19
반응형

Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 주가시세(OHLCV) 출력(feat. OHLCV란?)

Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 주가시세(OHLCV) 출력(feat. OHLCV란?)

앞서 포스팅에서는 국내 증권 시장인 코스피, 코스닥에 상장되어 있는 회사의 리스트와 상장 번호를 출력하고, 이를 CSV파일로 출력하는 부분에 대해서 포스팅을 해봤습니다. 이번 포스팅은 앞선 포스팅에 이어서, 추가적으로 회사들의 주가 시세 데이터 흔히 이야기 하는 OHLCV데이터를 출력하고, CSV파일로 추출하는 방법에 대해서 이야기를 해보고자 합니다. 

Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 리스트 출력, CSV로 추출- pykrx

 

OHLCV란?

OHLCV (open, high, low, close, volume)로 당일 시가, 고가, 저가, 종가, 거래량에 대한 데이터를 이야기 합니다. 흔히 주식 시장에서의 차트에서 봉을 바탕으로 표현하는 것들을 이야기 합니다. 

 

OHLCV 값 출력

OHLCV값을 출력하기 위해서 앞서 포스팅에서 봤던 pykrx 모듈을 사용하도록 하겠습니다. 관련 부분에 대해서는 하단에 있는 부분을 참조하여 설치하여 주시길 바랍니다. 

Python[파이썬 주식] 국내 주식 정보 모으기(스크래핑) - pykrx 모듈 설치

 

그럼 관련해서 pykrx에서 OHLCV 값 출력에 대해서 크게 2가지 형태로 제공하고 있습니다. 

 

1. 전체 종목 시세 출력 

2. 단일 종목의 기간 단위로 출력 

 

위와 같이 2가지 형태에 대해서 각각 살펴보겠습니다. 

 

1. 전체 종목 시세 출력 

pykrx모듈에서는 해당하는 날짜에 대해서 상장번호를 입력으로 받아 관련된 부분의 출력할 수 있는 함수를 제공하고 있습니다. 

stock.get_market_ohlcv_by_ticker(날짜)

위의 함수를 이용하면 해당 날짜의 모든 종목의 시세를 출력할 수 있습니다. 그럼 다음 예시를 살펴보겠습니다. 

 

1
2
3
4
from pykrx import stock
 
df = stock.get_market_ohlcv_by_ticker("20201021")
print(df.head(10))
cs

 

위의 부분을 실행하면 다음과 같은 결과를 볼 수 있습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
             종목명     시가     고가  ...           시가총액      시총비중      상장주식수
종목코드                            ...                                    
000020      동화약품  20200  20500  ...   561422547000  0.029999   27931470
000040     KR모터스   1065   1170  ...    92577628180  0.000000   91661018
000050        경방  10550  10800  ...   290601862000  0.010002   27415270
000060     메리츠화재  14400  14650  ...  1659728000000  0.080017  113680000
000070     삼양홀딩스  60600  62500  ...   535266937500  0.029999    8564271
000075    삼양홀딩스우  48100  48450  ...    14731610100  0.000000     304058
000080     하이트진로  37000  37450  ...  2619490370850  0.130005   70133611
000087  하이트진로2우B  21500  21750  ...    24467487700  0.000000    1130138
000100      유한양행  60700  61000  ...  4051522686000  0.209961   66856810
000105     유한양행우  60500  61400  ...    72509716000  0.000000    1180940
 
[10 rows x 10 columns]
cs

 

그럼 코스피, 코스닥을 각각 출력이 가능합니다. 다음 예시를 살펴보시면 됩니다. 

 

1
2
3
4
# KOSPI 항목 출력 
df = stock.get_market_ohlcv_by_ticker("20201021""KOSPI")
# KOSDAQ 항목 출력
df = stock.get_market_ohlcv_by_ticker("20201021""KOSDAQ")
cs

 

이와 같은 형태로 전체 종목, 코스피, 코스닥의 각각의 종목의 시세를 출력할 수가 있습니다. 

 

2. 단일 종목의 기간 단위로 출력 

그럼 이번에는 단일 항목의 특정 기간동안의 OHLCV 값 출력할 수 있게 지원하고 있습니다. 그럼 다음 부분을 살펴보겠습니다. 

stock.get_market_ohlcv_by_date('시작일','종료일','상장번호',(Optional)freq =d/m/y)

위의 함수를 특정 종목의 상장 번호를 토대로 특정 기간동안의 OHLCV값을 출력할 수 있습니다. 삼성전자(005930)의 연초부터 10월 21일까지의 데이터를 출력해보겠습니다. 

 

1
2
df = stock.get_market_ohlcv_by_date("20200101""20201021""005930")
print(df.head(10))
cs

 

위의 함수를 실행하면 다음과 같은 결과가 나타납니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
               시가     고가     저가     종가       거래량
날짜                                              
2020-01-02  55500  56000  55000  55200  12993228
2020-01-03  56000  56600  54900  55500  15422255
2020-01-06  54900  55600  54600  55500  10278951
2020-01-07  55700  56400  55600  55800  10009778
2020-01-08  56200  57400  55900  56800  23501171
2020-01-09  58400  58600  57400  58600  24102579
2020-01-10  58800  59700  58300  59500  16000170
2020-01-13  59600  60000  59100  60000  11359139
2020-01-14  60400  61000  59900  60000  16906295
2020-01-15  59500  59600  58900  59000  14300928
cs

 

물론, 위의 함수를 이용하여 함수처리하여 반복문과 함꼐 모든 데이터를 저장할 수 있습니다. 단, 이 부분에 대해서는 상당히 시간 소요가 걸릴 수 있습니다. 

 

1
2
3
4
for ticker in stock.get_stock_ticker_list():
    df = stock.get_market_ohlcv_by_date("20200101""20201001", ticker)
    print(df.head())
    time.sleep(1)
cs

 

위와 같은 형태의 함수를 이용하여 특정군의 모든 데이터들을 출력하거나, 작업을 하실 때에 사용하실 수 있습니다. 

 

이번 포스팅에서는 간단히 Python[파이썬 주식] 국내 코스피, 코스닥 상장 회사 주가시세(OHLCV) 출력(feat. OHLCV란?)라는 주제로 각 주가 종목등을 출력하거나 저장하는 방법에 대해서 살펴봤습니다. 혹 궁금하신 점이 있으시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

 

*API 사용에 대한 모든 책임은 사용자 본인에게 있습니다. 의도한 공격용이나, 과도한 트래픽 발생에 대해서 항상 주의가 필요하며, 관련해서 악용하시면 안됩니다. 

반응형
Comments