HMA(Hull Moving Average)는 알랜 헐(Alan Hull)이 개발한 이동평균선으로, 기존 이동평균보다 더 부드러우며 효율성에 초점을 맞춘 지표입니다.
Hull 계산
1️⃣ WMA(n/2) 값 구하기 – 먼저, n을 절반(n/2) 길이로 줄인 가중 이동평균(WMA)을 구합니다.
2️⃣ 2배 가중 & WMA(n) 값 빼기 – WMA(n/2) 값을 2배로 증가시킵니다. 그리고 전체 길이(n)로 구한 WMA 값을 뺍니다.
3️⃣ √n 기간으로 WMA 적용 – 위에서 구한 데이터에 WMA를 적용하는데, 기간을 √n(제곱근)로 설정합니다.
HMA = WMA(2 * WMA(n/2) − WMA(n)), sqrt(n))
Hull Moving Average 구현
pip install pandas ccxt numpy
import pandas as pd
import ccxt
import numpy as np
# 예시) 바이낸스 선물 BTCUSDT, 1시간 봉
bnb = ccxt.binance({'options': { 'defaultType': 'future' }})
def wma(series, length):
weights = np.arange(1, length + 1)
return series.rolling(length).apply(lambda x: np.dot(x, weights) / weights.sum(), raw=True)
def HMA(length=9):
ohlcv = bnb.fetch_ohlcv(symbol="BTC/USDT", timeframe="1h", limit=500)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
wma_half = wma(df['close'], int(length / 2))
wma_full = wma(df['close'], length)
df['HMA'] = wma(2 * wma_half - wma_full, int(np.sqrt(length))).round(1)
return df
print(HMA(length=9)) # 트레이딩뷰 디폴트 값
Check
트레이딩뷰 차트와 비교

