PPO(Percentage Price Oscillator)는 주식이나 다른 자산의 가격 변동성 및 추세 강도를 분석하는 기술적 지표입니다. 기본적으로, 두 이동 평균 간의 차이를 백분율로 표현하여 가격 변동에 대한 상대적인 강도를 측정하는 데 사용됩니다. MACD(Moving Average Convergence Divergence)와 유사하지만, 차이점은 백분율로 표시된다는 점입니다. PPO는 상대적인 가격 강도를 비교하기 때문에 추세 전환을 감지하는 데 유용하며, 퍼센트로 계산하여 가격 변동에 대한 민감도를 높일 수 있습니다.
PPO 구현
pip install pandas ccxt pinetopy ta
import pandas as pd
import ccxt
import pinetopy as pp
import ta.momentum
# 예시) 바이낸스 선물 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, fast=12, slow=26, signal=9):
data = ta.momentum.PercentagePriceOscillator(
close=df['close'],
window_fast=fast,
window_slow=slow,
window_sign=signal
)
df['histogram'] = data.ppo_hist().round(2)
df['ppo'] = data.ppo().round(2)
df['signal'] = data.ppo_signal().round(2)
return df
print(main(df, fast=12, slow=26, signal=9)) # 트레이딩뷰 디폴트 값
Check
트레이딩뷰 차트와 비교
변동성이 있는 구간을 체크해 보겠습니다.

