볼린저밴드(영어: Bollinger Bands)는 1980년대 존 볼린저가 개발하고 2011년 상표권 취득한 주가 기술적 분석 도구이다. 트레이딩 밴드 개념에서 발전된 볼린저 밴드와 상대지표 그리고 대역폭은 이전 거래와의 상대적 가격의 높음과 낮음을 판단하는 데 사용된다. 볼린저 밴드는 켈트너 채널과 비슷한 변동성 지표이다. 볼린저 밴드는 주가가 이동평균선 중심으로 표준편차 범위 안에서 움직인다는 전제로 개발되었다.
위키백과: https://ko.wikipedia.org/wiki/%EB%B3%BC%EB%A6%B0%EC%A0%80_%EB%B0%B4%EB%93%9C
Bollinger band 구현
대부분의 사이트에는 볼린저밴드 표준편차 계산에 사용되는 자유도(degrees of freedom)에 대한 언급이 없습니다.
파이썬에서 트레이딩뷰 차트와 동일한 데이터를 얻으려면 ddof=0 을 적용해야 같은 데이터를 얻으실 수 있습니다.
pip install pandas ccxt
import pandas as pd
import ccxt
# 예시) 바이낸스 선물 BTCUSDT, 1시간 봉
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
def bollinger_band(length=20, factor=2.0):
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
# 이동 평균 계산
moving_average = df['close'].rolling(window=length).mean()
# 표준편차 계산, 트레이딩뷰 차트는 ddof=0
std_dev = df['close'].rolling(window=length).std(ddof=0) * factor
# 상단 밴드, 하단 밴드
upper_band = moving_average + std_dev
lower_band = moving_average - std_dev
df['basis'] = moving_average.round(1)
df['upper'] = upper_band.round(1)
df['lower'] = lower_band.round(1)
return df
print(bollinger_band()) # 트레이딩뷰 세팅과 동일한 디폴트값 사용
Check
트레이딩뷰 차트와 비교

basis – MA , upper – 상단 밴드, lower – 하단밴드
