The filter follows the EasyLanguage code, which you will find under Figure 6 in the paper cited above. However, it uses a 4-period triangular moving average as input series, where the code example relies on the bar center.
The Distance Coefficient Ehlers Filter is already included with the Bollinger Bands Universal, Keltner Channel Universal, SuperTrend U11 and Heikin Ashi indicators, but I had not made it available so far as a separate download.
Update October 1, 2012: Small bug removed. Indicator will now correctly display when a period of 1 is selected.
John Ehlers' Predictive Moving Average (PMA) from his book, 'Rocket Science for Traders' (p. 213). He provides a comprehensive description of it there.
Set Panel display to '1' to display it on the price chart.
Use: The signal and trigger crossovers indicate turning points.
Most indicators out there run on bars. Let’s take a 3-period moving average. You compute it on the Close, the previous Close, and the Close before that. Well, what if you used 3 other values in your average, instead of the last three prices? Like, what if you used the current value of the 2-EMA, 5-EMA, and 8-EMA and computed the average of those instead?
Ehlers uses the 4-RSI as an example application of the Laguerre treatment. Instead of the last 4 Closes, he uses 4 Laguerre values. Using only four values makes the indicator turn quickly, but you can adjust the overall speed of the output via the gamma input to the transform. Pretty neat!
In July, I looked around briefly to see what other Laguerre indicators were out there. Surprisingly, I couldn’t find any. I thought that was strange, because all you have to do is plug in the Laguerre values you need and see what happens. I coded up a few, and found the the Ergodic Candle Oscillator looked pretty good Laguerre-ized.
COMPATIBILITY:
NinjaTrader 6.5: YES
NinjaTrader 7.0: YES (tested by sam028)
This is a collection of various filters by John Ehlers outlined in his excellent books "Rocket Science for Traders" and "Cybernet Analysis for Stocks and Futures"
The Center Of Gravity Oscillator by John F. Ehlers
Here’s an indicator that identifies every major turning point without much lag.
This new oscillator is unique in that it is smoothed and has essentially zero lag. The smoothing enables clear identification of turning points, and the zero lag aspect means action can be taken early in the move. This oscillator is the serendipitous result of my research into adaptive filters. While the filters have not yet produced the results I am seeking, this oscillator has substantial advantages over conventional oscillators used in technical analysis.
These are the Corona Indicators originally created by John Ehlers.
They are meant to identify cycles in the market and help you determine whether or not the market is currently suitable for trading cycles. They develop the corona at times when the signal is weak or unstable.
For those who are interested, all of them are based on cycle extraction using a DFT variant.
In general, Fourier analysis is not suitable for use on financial timeseries since it is based on the assumption of Stationarity. In the DSP world that restriction is commonly relaxed to include WSS signals (wide sense stationary). Ehlers seeks to approximate a WSS signal by detrending the data with a high pass filter before the DFT step, whether or not that is a suitable approximation is questionable as it ultimately depends on the specific data being processed.
What is certain is that they look very cool, so try them for yourself and see if you find them useful
COMPATIBILITY:
NinjaTrader 6.5: YES
NinjaTrader 7.0: YES (tested by sam028)
March 17th, 2013 03:21 PM dnkhoward2 Thank you very much for this. I have been in search of something like this for a while. Works well with 4 & 6 range bars
.
May 19th, 2012 10:59 PM marker
February 24th, 2012 04:51 PM pte97 Thanks, will try with HeikenAshi
January 5th, 2010 05:10 PM Zondor Looks very promising. It does seem to work on NT7. Thanks!
February 2nd, 2018 03:14 PM bobc635 Thanks.... interesting indie.. Thanks for sharing... It appears that you left one of your debug print statements on line