candle chart 작성
주가이 변화추이를 나타내는 기본이 되는 봉차트(candle chart)를 작성하기 위한 사용자정의 함수(UDF)입니다. 특정한 날의 시가, 고가, 저가, 종가를 사용합니다. 시가와 종가를 기준으로 body, 고가와 시가-종가 중의 최대값을 사용하여 위쪽꼬리, 저가와 시가-종가의 최소값을 사용하여 아래쪽 꼬리를 작성합니다.
x축의 날짜는 mpl_dates.DataFromatter()함수를 적용하여 조정합니다.
import numpy as np import pandas as pd import yfinance as yf import matplotlib.pyplot as plt import matplotlib.dates as mpl_dates
st=pd.Timestamp(2025,1, 1) et=pd.Timestamp(2025, 4,15) trgnme="000660.KS" trg=yf.download(trgnme, st, et) trg.columns=[i[0] for i in trg.columns] trg.tail(3)
| Close | High | Low | Open | Volume | |
|---|---|---|---|---|---|
| Date | |||||
| 2025-04-10 | 183200.0 | 189900.0 | 180000.0 | 189700.0 | 7836984 |
| 2025-04-11 | 180800.0 | 181800.0 | 176100.0 | 177800.0 | 3223735 |
| 2025-04-14 | 180200.0 | 184400.0 | 178000.0 | 182900.0 | 3466194 |
def candleChart(data):
df=data
df["Date"]=df.index
for i in range(len(df)):
open_val = df['Open'].iloc[i]
high_val = df['High'].iloc[i]
low_val = df['Low'].iloc[i]
close_val = df['Close'].iloc[i]
date_val = df['Date'].iloc[i]
if close_val >= open_val:
color = 'green'
else:
color = 'red'
# 몸통 그리기
plt.plot([date_val, date_val], [open_val, close_val], color=color, linewidth=3)
# 위쪽 꼬리 그리기
plt.plot([date_val, date_val], [high_val, max(open_val, close_val)], color=color, linewidth=0.7)
# 아래쪽 꼬리 그리기
plt.plot([date_val, date_val], [min(open_val, close_val), low_val], color=color, linewidth=0.7)
ax=plt.gca()
ax.xaxis.set_major_formatter(mpl_dates.DateFormatter('%y/%m/%d'))
plt.xticks(rotation=45)
plt.xlabel('Date')
plt.ylabel('Price')
plt.title("Candle Chart")
candleChart(df)
for i in[5, 20]:
plt.plot(df["Close"].rolling(window=i).mean(), label=f"sma{i}") #종가에 대한 이동평균선 추가
plt.legend(loc="best")
plt.show()

댓글
댓글 쓰기