반응형
1. OHLC란?
- Open-High-Low-Close를 나타내며 시가-고가-저가-종가를 의미한다.
- 우리나라 뿐만 아니라 전 세계에서 사용하는 캔들 차트는 OHLC를 이용한다.
+ 캔들차트 : 양초를 닮았다고하여 캔들 차트라고 부른다.
2. 캔들차트 특징
- 시가-고가-저가-종가를 이용하여 하루 동안의 가격 변동을 표시한다.
- 시가보다 종가가 높으면 붉은 양봉으로 표시하고, 고가와 저가를 실선으로 연결한다.
- 반대로 시가보다 종가가 낮으면 푸른 음봉으로 표시하고, 고가와 저가를 실선으로 연결한다.
- 경우에 따라서 흰색과 검은색, 녹색과 빨간색으로 봉을 표시한다.
3. 사용한 데이터
앞 게시물과 연결되는 내용이므로 위 링크를 참조하면
헤당 게시물을 이해하는데 도움이 된다.
4. mplfinance를 사용한 코드
import pandas as pd
from bs4 import BeautifulSoup
from urllib.request import urlopen
import mplfinance as mpf
url = 'https://finance.naver.com/item/sise_day.nhn?code=068270&page=1'
with urlopen(url) as doc:
html = BeautifulSoup(doc, 'lxml')
pgRR = html.find('td', class_='pgRR')
s = str(pgRR.a['href']).split('=')
last_page = s[-1]
df = pd.DataFrame()
url2 = 'https://finance.naver.com/item/sise_day.nhn?code=068270'
for page in range(1, int(last_page)+1):
page_url = '{}&page={}'.format(url2, page)
df = df.append(pd.read_html(page_url, header=0)[0])
#빈 데이터 제거
df = df.dropna()
#상위 30항목만 가져옴
df = df.iloc[0:30]
#column 이름을 영어로 바꿔줌
df = df.rename(columns={'날짜':'Date', '시가':'Open', '고가':'High', '저가':'Low', '종가':'Close', '거래량':'Volume'})
#날짜 순으로 오름차순 정렬
df = df.sort_values(by='Date')
#Date 칼럼을 DatetimeIndex형으로 변경한 후 인덱스로 설정
df.index = pd.to_datetime(df.Date)
#특정 컬럼만 데이터프레임으로 저장
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
#type 값에 따라 차트의 형태가 완전히 달라진다.
mpf.plot(df, title='셀트리온 ohlc 차트', type='ohlc')
mpf.plot(df, title='셀트리온 candle 차트', type='candle')
#keyword arguments로 mpf.plot() 함수를 호출할 때 쓰이는 인수를 담은 딕셔너리
kwargs = dict(title='셀트리온 차트', type='candle',
mav=(2, 4, 6), volume=True, ylabel='ohlc 캔들')
#marketcolor를 설정하여 style에 적용
Style= mpf.make_marketcolors(up='r', down='b', inherit=True)
s = mpf.make_mpf_style(marketcolors=Style)
mpf.plot(df, **kwargs, style=s)
- 과거 버전은 candlestick_ohlc()함수에서 값을 입력할 때 시간을 float형태로
변환하여야 하고 출력할 때는 다시 형태를 변환해야돼서 코드가 길어졌다.
- 현재 버전은 과거 버전의 형변환 문제는 모두 해결되고, type 값만 변경하면
차트의 형태가 바뀔 정도로 많이 개선된 상태이다.
'프로그래밍 > 파이썬' 카테고리의 다른 글
[Python] 파이썬 데이터 분석 - 야후 파이낸스 데이터의 문제점과 보완방법 (1) | 2022.10.05 |
---|---|
[Python] 파이썬 pyupbit - 비트코인 시세 웹 페이지에 출력하기 (0) | 2022.10.05 |
[Python] 파이썬 Beautiful Soup - 네이버 금융 시세 웹 크롤링(셀트리온) (1) | 2022.10.03 |
[Python] requirements.txt - 패키지 관리 방법과 하는 이유 (0) | 2022.10.03 |
[Python] 파이썬 pandas(판다스) 활용 - 일간 변동률, MDD 구하기 (3) | 2022.10.02 |