Python으로 켈트너 채널(KC) 지표 구현하기

켈트너 채널(KC)은 상단밴드, 중간 선, 하단밴드로 이루어진 변동성 기반의 기술적 분석 도구입니다. 가운데 선은 지정된 기간에 대한 이동 평균 가격이며, 보통 SMA 또는 EMA를 사용합니다. 하단 밴드와 상단 밴드는 ATR을 이용하여 계산합니다.

pip install pandas ccxt pinetopy ta

import pandas as pd
import ccxt
import pinetopy as pp
import ta.volatility

# 예시) 바이낸스 선물 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, len=20, mult=2):

    data = ta.volatility.KeltnerChannel(
        high=df['high'], 
        low=df['low'], 
        close=df['close'], 
        window=len,
        multiplier=mult,
        original_version=False
    )
    df['h'] = data.keltner_channel_hband().round(1)
    df['b'] = data.keltner_channel_mband().round(1)
    df['u'] = data.keltner_channel_lband().round(1)

    return df

print(main(df, len=20, mult=2)) # 트레이딩뷰 디폴트 값

트레이딩뷰 차트와 비교