얼티밋 오실레이터(Ultimate Oscillator, UO) 는 래리 윌리엄스(Larry Williams)가 개발한 기술적 지표로, 가격의 모멘텀을 다중 시간 프레임에서 분석하여 과매수와 과매도 상태를 파악하는 데 사용됩니다.
세가지 서로 다른 타임프레임에 걸쳐 모멘텀을 재는데 쓰이는 테크니컬 어낼리시스 툴입니다. 많은 모멘텀 오실레이터가 가진 문제는 프라이스가 빠르게 오르거나 내리면 거짓 다이버전스 트레이딩 시그널을 만들 수 있다는 것입니다. 얼티미트 오실레이터는 대부분의 다른 모멘텀 오실레이터에서 쓰이는 단일 타임프레임과는 반대로 멀티플 타임프레임을 써서 이를 바로 잡으려 합니다.
출처 : 트레이딩뷰
Ultimate Oscillator 구현
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=7, middle=14, slow=28):
uo = ta.momentum.ultimate_oscillator(
high=df['high'],
low=df['low'],
close=df['close'],
window1=fast,
window2=middle,
window3=slow
)
df['UO'] = uo.round(2)
return df
print(main(df, fast=7, middle=14, slow=28)) # 트레이딩뷰 디폴트 값
Check
트레이딩뷰 차트와 비교

