OPEN-SOURCE SCRIPT

Multi Poles Zero-Lag Exponential Moving Average

Introduction

Based on the exponential averaging method with lag reduction, this filter allow for smoother results thanks to a multi-poles approach. Translated and modified from the Non-Linear Kalman Filter from Mladen Rakic 01/07/19 mql5.com/en/code/24031

The Indicator

length control the amount of smoothing, the poles can be from 1 to 3, higher values create smoother results.

Difference With Classic Exponential Smoothing

A classic 1 depth recursion (Single smoothing) exponential moving average is defined as y = αx + (1 - α)y which can be derived into y = y[1] + α(x - y[1])

2 depth recursion (Double smoothing) exponential moving average sum y with b in order to reduce the error with x, this method is calculated as follow :

  • y = αx + (1 - α)(y[1] + b)
  • b = β(y - y[1]) + (1-β)b[1]


The initial value for y is x while its 0 for b with α generally equal to 2/(length + 1)

The filter use a different approach, from the estimation of α/β/γ to the filter construction.The formula is similar to the one used in the double exponential smoothing method with a difference in y and b

  • y = αx + (1 - α)y[1]
  • d = x - y
  • b = (1-β)b[1] + d
  • output = y + b


instead of updating y with b the two components are directly added in a separated variable. Poles help the transition band of the frequency response to get closer to the cutoff point, the cutoff of an exponential moving average is defined as :

Cf = F/2π acos(1 - α*α/(2(1 - α)))


Also in order to minimize the overshoot of the filter a correction has been added to the output now being output = y + 1/poles * b

While this information is far being helpful to you it simply say that poles help you filter a great amount of noise thus removing irregularities of the filter.

Conclusion

The filter is interesting and while being similar to multi-depth recursion smoothing allow for more varied results thanks to its 3 poles.

Feel free to send suggestions :)

Thanks for reading
Exponential Moving Average (EMA)exponentialmovingaveragesholtexponentialsmoothingkalmanMoving Averagesmt4polessmoothTrend Analysiszerolag

Script de código abierto

Siguiendo fielmente el espíritu de TradingView, el autor de este script lo ha publicado en código abierto, permitiendo que otros traders puedan entenderlo y verificarlo. ¡Olé por el autor! Puede utilizarlo de forma gratuita, pero tenga en cuenta que la reutilización de este código en la publicación se rige por las Normas internas. Puede añadir este script a sus favoritos y usarlo en un gráfico.

¿Quiere utilizar este script en un gráfico?


Check out the indicators we are making at luxalgo: tradingview.com/u/LuxAlgo/
También en:

Exención de responsabilidad