IT/컴퓨터프로그램
[Python] FinanceDataReader 를 통한 주가 읽기 - 볼린저밴드
chn1002
2022. 5. 16. 09:05
[Python] FinanceDataReader 를 통한 주가 읽기 - 볼린저밴드(Bollinger Bands)
볼린저 밴드는 미국의 재무분석가인 존 볼린저가 개발하고 상표권을 취득한 주가 기술적 분석 도구이다. 볼린저 밴드 의 기본 원리는 주가의 변동이 표준 정규 분포 함수에 따른다고 가정하고 주가를 따라 위(Upper), 아래(Lower) 로 폭이 움직이는 밴드를 만들어 기준선으로 판단 한다. 볼린저 밴드는 이동평균선을 추세 중심선으로 사용하며, 상하한 변동 폭은 추세중심선의 표준편차로 계산하여 가격 변동성 분석과 추세분석을 동시에 수행할 수 있다.
볼린저 밴드 계산
- 상한선: 20일 이동평균선 + (20일 동안의 주가 표준편차 값0 *2)
- 하한선: 20일 이동평균선 - (20일 동안의 주가 표준편차 값0 *2)
FinanceDataReader 에서 이동 평균선, 볼린저 밴드
아래 코드에서는 20 일 이동 평균을 구성하고 해당 20일 이동 평균선을 표준편차 값으로 볼린저 밴드의 상한선과 하한선을 구한다.
- stockM_df['UPPER'] = stockM_df['MA20'] + stockM_df['MA20STD'] * 2
- stockM_df['LOWER'] = stockM_df['MA20'] - stockM_df['MA20STD'] * 2
볼린저 밴드사이에는 fill_between 을 이용하여 색을 더해 준다.
- axes.fill_between(s_df.index, stockM_df['UPPER'], stockM_df['LOWER'], alpha=0.2)
def pltStocknBB(stockName, s_df):
stockM_df = s_df[['Close']]
stockM_df['MA20'] = stockM_df['Close'].rolling(window=20).mean() #20MA
stockM_df['MA20STD'] = stockM_df['Close'].rolling(window=20).std() #20MA STD
stockM_df['UPPER'] = stockM_df['MA20'] + stockM_df['MA20STD'] * 2
stockM_df['LOWER'] = stockM_df['MA20'] - stockM_df['MA20STD'] * 2
print(stockM_df)
fig = plt.figure(figsize=(16,14))
axes = plt.subplot2grid((4,4),(0,0), rowspan=3,colspan=4)
nScalePlt(axes, stockM_df['Close'], stockName)
nScalePlt(axes, stockM_df['MA20'], "MA20")
nScalePlt(axes, stockM_df['UPPER'], "UPPER")
nScalePlt(axes, stockM_df['LOWER'], "LOWER")
axes.legend()
axes.fill_between(s_df.index, stockM_df['UPPER'], stockM_df['LOWER'], alpha=0.2)
plt.show()
삼성전자의 이동평균선 및 볼린저 밴드