본문 바로가기
Quant Stock

볼린져밴드의 이해 - 파이썬 코드 (비트나인.xlsx 데이터)

by quantWhale 2023. 3. 14.
반응형

안녕하세요 인천고래입니다.

오늘은 볼린저밴드를 파이썬 코드로 작성해 보도록 하겠습니다.

HTS에도 있는 볼린져밴드를 파이썬 코드로 작성하는 이유는 데이터 분석을 하여 확률 높은 매매자리를 찾기 위함입니다.

 

볼린져밴드의 이해

볼린저 밴드(Bollinger Bands)는 이동평균선을 중심으로 일정한 거리의 상한선과 하한선을 그리는 보조지표로, 일반적으로 다음과 같은 변숫값이 사용됩니다.

 

  1. 이동평균선 기간: 주가의 추세를 측정하기 위한 기간으로, 일반적으로 20일 이동평균을 사용합니다.
                      이동평균선 기간이 길수록 보다 큰 추세를 나타내며, 짧을수록 빠른 시장 변화에 대한 반응이 높아집니다.
  2. 거리(표준편차) 기준값: 상한선과 하한선을 계산하기 위한 거리 기준값으로, 일반적으로 2를 사용합니다.
                      즉, 상한선은 이동평균 + 2표준편차, 하한선은 이동평균 - 2 표준편차로 계산됩니다.
                      거리 기준값이 크면 상한선과 하한선이 더 멀어지며, 작으면 더 가까워집니다.

이러한 변수값을 조정하면 볼린저 밴드가 그리는 상한선과 하한선의 위치와 강도가 달라질 수 있습니다.

 

 

파이썬 코드

아래는 엑셀 파일에서 주가 데이터를 로드하고, 볼린저 밴드를 그리는 파이썬 코드입니다. 

볼린저 밴드의 이동평균선 기간은 20일, 거리 기준값은 2로 설정되어 있습니다. 

 

엑셀로 된 데이터는 아래에 추가했습니다.

비트나인.xlsx
0.02MB

 

아래의 코드가 에러가 뜨는 경우라면

먼저 필요한 라이브러리를 설치해 주시고, 코드를 실행해 보세요.

그리고 또 에러가 발생이 된다면 가상환경 설정이 맞게 되어있는지도 확인을 해주셔야 합니다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 엑셀 파일에서 데이터 불러오기
data = pd.read_excel("주가데이터.xls", index_col=0)

# 이동평균선 계산
ma = data['Close'].rolling(window=20).mean()

# 표준편차 계산
std = data['Close'].rolling(window=20).std()

# 상한선, 하한선 계산
upper_band = ma + (std * 2)
lower_band = ma - (std * 2)

# 차트 그리기
plt.figure(figsize=(12, 6))
plt.plot(data['Close'], label='Close')
plt.plot(ma, label='MA(20)')
plt.plot(upper_band, label='Upper band')
plt.plot(lower_band, label='Lower band')
plt.fill_between(data.index, lower_band, upper_band, alpha=0.1)
plt.legend(loc='best')
plt.show()

위의 코드를 실행하면 아래와 같은 결과를 볼 수 있습니다.

비트나인 주가와 볼린져밴드 - 파이썬 코드로 구현
핀치 줌 아웃을 하면 이미지나 텍스트를 크게 볼 수 있습니다.

 

X축 라벨이 너무 겹쳐서 보여서 잘 안 보이니 코드를 수정을 해 보도록 하겠습니다.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 엑셀 파일에서 데이터 로드
df = pd.read_excel('비트나인.xlsx')

# 이동평균 구하기
ma = df['Close'].rolling(window=20).mean()

# 볼린져밴드 구하기
std = df['Close'].rolling(window=20).std()
upper_band = ma + (std * 2)
lower_band = ma - (std * 2)

# 차트 설정
fig, ax = plt.subplots(figsize=(12,6))
ax.plot(df['Date'], df['Close'], color='blue', label='Close')
ax.plot(df['Date'], ma, color='red', label='MA20')
ax.plot(df['Date'], upper_band, color='green', label='Upper Band')
ax.plot(df['Date'], lower_band, color='orange', label='Lower Band')

# 그래프 타이틀, 라벨 설정
ax.set_title('Bollinger Bands')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend()

# x축 눈금 설정
x_ticks = np.arange(0, len(df['Date']), 30)
x_tick_labels = df['Date'][::30]
ax.set_xticks(x_ticks)
ax.set_xticklabels(x_tick_labels, rotation=45, ha='right')

plt.show()

 

위의 코드를 실행하면 아래와 같은 결과물이 나오게 됩니다.

비트나인 볼린져밴드 적용

 

이것으로 간략하나마 실전적인 파이썬코드를 만들어봤습니다.

오늘도 제 글을 읽어주신 모든 분들께 감사의 말씀을 드립니다.

반응형
-

댓글