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()
댓글
댓글 쓰기