hma
Hull Moving Average
hma(source, period)
The Hull Moving Average reduces lag while maintaining smoothness by using weighted moving averages in a nested calculation. It achieves responsiveness by weighting recent data and using the square root of the period.
Parameters
- source (source): Data series to calculate HMA on - price field (close, open, high, low) or indicator output
- period (int): Number of periods for the moving average
- Common values: 9, 16, 20, 50, 200
Formula
HMA = WMA(2 * WMA(n/2) - WMA(n), sqrt(n))
Where:
- n = period
- WMA(n/2) = weighted MA with half period
- WMA(n) = weighted MA with full period
- Final WMA uses sqrt(n) as the period
Examples
hma(close, 9); # 9-period Hull MA (fast, responsive)
hma(close, 20); # 20-period Hull MA (standard)
x = hma(close, 50); close > x; # Price above 50-period HMA
Returns
Hull moving average value with reduced lag compared to traditional MAs
Notes
- Uses WMA internally (3-level nested calculation)
- More responsive than SMA/EMA with similar smoothness
- sqrt(period) provides the smoothing in final step