Python으로 밸런스 오브 파워 (Balance of Power) 구현하기

밸런스 오브 파워 (Balance of Power, BOP) 지표는 가격 변동에서 매수자와 매도자 간의 힘의 균형을 측정하는 기술적 지표입니다. 이 지표는 특정 기간 동안의 시가와 종가의 차이를 고가와 저가의 차이로 나눈 값으로 계산됩니다. 이를 통해 해당 기간 동안 매수세와 매도세 중 어느 쪽이 더 강한지를 파악할 수 있습니다.

BOP 값이 양수(+) → 매수세가 강함
BOP 값이 음수(-) → 매도세가 강함
BOP 값이 0에 가까움 → 중립

import pandas as pd
import ccxt
import pinetopy as pp # 0.1.0 버전 이상

# Binance Futures, BTCUSDT, 1h
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):

    df['BOP'] = (df['close'] - df['open']) / (df['high'] - df['low'])
    df['BOP'] = df['BOP'].round(2)
    return df

print(main(df))