I've been going through the papers at this Ehlers site: http://www.mesasoftware.com/technicalpapers.htm and came across a few filters and a couple of indicators which don't seem to be in Zorro yet (if they are, please let me know!). Consequently I've taken a stab at implementing them as a #include, code below. Where Ehlers had fixed values - f.i. cutoffs - I've used those values as the defaults for the parameter. Appreciate your review - both code quality and accuracy of implementation - & comments! Thanks.
HighPass Filter - parameters are Series and CutOff. Per Ehlers a 2-pole filter - Ehlers recommends no less than 2-pole to eliminate spectral dialation. Results are rather different than Zorro's HighPass...
SuperSmooth Filter - parameters are Series and CutOff. Results seem like Butterworth, but not exactly the same. Ehlers recommends CutOff no less than 10 as below that noise overwhelms the signal.
Roof Filter - cascade of the 2 above, so essentially a bandpass specifying the range of periods to pass rather than a width around a period (so why "Roof"? Don't know - maybe a signal processing term?) - parameters are the Series, High CutOff, and Low CutOff. Ehlers used 48 for the High CutOff...
FRAMA (Fractal Adaptive Moving Average) Filter - uses FractalDimension to adapt EMA - parameters are Series and Length.
Generalized Filter - parameters are Series, filter Coefficients, and Length.
Laguerre4RSI Indicator - RSI based on 4 period Laguerre time - parameters are Series and Gamma.
Stochastic Indicator - Roof Price, then Stochastic, finally SuperSmooth - parameters are Series, Length (for Stochastic), High CutOff, and Low CutOff (used for both the Roof and final SuperSmooth).
The examples Ehlers includes of the use of these are futures or particular stocks, so not directly reproducible on FXCM. His example methodology is 80%/20% crossovers, either after peak/valley as traditionally done, or pre-peak/valley to attempt prediction.
Probably not surprisingly , I haven't been able to get results as good as his, but here's a sample. I stuck with his 80/20 but tightened the Roof to 10 & the script below gave the attached result for SPX500.