BBTrend 지표는 볼린저 밴드(Bollinger Bands)의 창시자인 John Bollinger가 개발한 추세 분석 지표입니다. 기존 볼린저 밴드와 함께 사용하도록 설계된 BBTrend는 두 개의 서로 다른 기간을 가진 볼린저 밴드를 기반으로 현재 시장의 추세 방향과 강도를 평가합니다. 히스토그램 형태로 나타나며, 기존의 볼린저 밴드는 가격의 변동성만을 측정하는 데 반해, BBTrend는 추세의 방향과 강도를 정량적으로 분석할 수 있도록 돕습니다.
BBTrend 구현
히스토그램 값을 구하고 색 구분은 strong_up / up / strong_down / down 총 4개로 구분하겠습니다.
pip install pandas ccxt pinetopy numpy
import pandas as pd
import ccxt
import pinetopy as pp
import numpy as np
# 예시) 비트코인 선물 BTCUSDT, 1시간 봉
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
df['time'] = pp.kst(df['time'])
def main(df, short=20, long=50, mult=2.0):
# 볼린저 밴드 계산
short_bbands = pp.bband(df, length=short, factor=mult)
long_bbands = pp.bband(df, length=long, factor=mult)
# BBTrend 계산
bbtrend = (np.abs(short_bbands['lower'] - long_bbands['lower']) - np.abs(short_bbands['upper'] - long_bbands['upper'])) / short_bbands['basis'] * 100
# 히스토그램 색상 구분
posColorStrong = 'strong_up'
negColorStrong = 'strong_down'
posColorWeak = 'up'
negColorWeak = 'down'
bbtrend_color = []
bbtrend_color = np.where(
bbtrend > 0,
np.where(bbtrend >= bbtrend.shift(1), posColorStrong, posColorWeak),
np.where(bbtrend > bbtrend.shift(1), negColorWeak, negColorStrong)
)
df['bbtrend'] = bbtrend.round(1)
df['bbtrend_color'] = bbtrend_color
return df
print(main(df, short=20, long=50, mult=2.0)) # 트레이딩뷰 기본 설정
Check
트레이딩뷰 차트와 비교

