Here's a quick and dirty one I threw together per Hull's original formula. MC compiled it fine.
Watch your step with things like this, as it's really just a bandpass filter that's been scaled back up to price. These type of filters work great as long as you're in the middle of the passband, but as soon as you stray to one side you get some pretty vicious phase shifting going on.
I don't care for the input of this indicator, as it takes the low cutoff as input and calcs the high cutoff from that. Doesn't tell you anything about where the passband center is unless you calc it by hand yourself. (e.g ~11 for this default input of Len 15). Might be better to choose an arbitrary low cutoff, input your desired passband center, and calc the high cutoff from there.
Inputs:
Price(MedianPrice),
Len(15);
Vars:
FastLen(0),
FastMA(0),
SlowMA(0),
SmoothLen(0),
filter(0);
FastLen=Round((Len/2),0);
SmoothLen=Round(SquareRoot(Len),0);
FastMA=2*WAverage(Price,FastLen); // 2* scales oscillator back to price
SlowMA=WAverage(Price,Len);
filter=WAverage(FastMA-SlowMA,SmoothLen);
Plot1(filter,"avg");