alexgrover

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 https://www.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 + α(x - y)

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 + b)
  • b = β(y - y) + (1-β)b

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
  • d = x - y
  • b = (1-β)b + 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

Patreon: https://www.patreon.com/alexgrover

Become a Patreon and get access to exclusive technical indicators!

You can also check out some of the indicators I made for luxalgo : https://www.tradingview.com/u/LuxAlgo/#published-scripts
Skrip sumber terbuka

Dalam semangat TradingView yang sebenar, penulis skrip ini telah menerbitkannya dengan menggunakan sumber terbuka supaya pedagang-pedagang dapat memahami dan mengesahkannya. Sorakan kepada penulis! Anda dapat menggunakannya secara percuma tetapi penggunaan semula kod ini dalam penerbitan adalah dikawalselia oleh Peraturan Dalaman. Anda boleh menyukainya untuk menggunakannya pada carta.

Penafian

Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.

Ingin menggunakan skrip ini pada carta?