[PYTHON] Unterschied zwischen dem exponentiellen gleitenden Durchschnitt (EMA), dem gleitenden Doppelindexdurchschnitt (DEMA) und dem gleitenden Dreifachindexdurchschnitt (TEMA)

DEMA und TEMA sind technische Indikatoren, die in MetaTrader 5 (MT5) integriert sind. Abkürzungen für Double Exponential Moving Average und Triple Exponential Moving Average, übersetzt als Double Exponential Moving Average und Triple Exponential Moving Average.

In diesem Artikel werden die Unterschiede zwischen EMA, DEMA und TEMA untersucht.

EMA Nachfolgend finden Sie eine grundlegende Beschreibung der EMA. Vergleich der gleitenden Durchschnittswerte des IIR-Filtertyps mit Pandas und Scipy

Die Formel lautet $y(n)=\alpha x(n)+(1-\alpha)y(n-1)$ Wenn die Periode $ period $ wie andere gleitende Durchschnitte als Parameter verwendet wird, ist $ \ alpha = 2 / (Periode + 1) $.

DEMA

DEMA ist eine Abkürzung für Double EMA, aber es geht nicht nur darum, EMA zweimal anzuwenden. Selbst wenn EMA zweimal angewendet wird, wird die Glättung nur fortgesetzt und die charakteristischen Eigenschaften werden nicht erhalten.

Die obige EMA-Formel

y(n)=EMA[x(n)]

Dann lautet die Formel von DEMA

y(n)=2EMA[x(n)]-EMA[EMA[x(n)]]

Kann geschrieben werden. Ich benutze auch doppelte EMA, aber ich benutze auch EMA, um zu berechnen. Das Ableitungsprinzip dieser Formel ist in hier beschrieben.

TEMA

Die Formel für TEMA lautet

y(n)=3EMA[x(n)]-3EMA[EMA[x(n)]]+EMA[EMA[EMA[x(n)]]]

Schreiben und berechnen Sie mit Triple EMA, Double EMA und EMA. Das Ableitungsprinzip dieser Gleichung lautet hier.

Unterschied zwischen EMA, DEMA, TEMA

Unterschiede aufgrund von Verarbeitungsbeispielen

Hier ist ein Beispiel für die Anwendung von EMA, DEMA und TEMA auf ein FX-Diagramm.

EURJPY.fM30.png

Dies wird auf dem MT5-Diagramm angezeigt, Rot ist EMA, Blau ist DMA, Grün ist TEMA. Alle Perioden sind auch $ period = 14 $.

Wenn wir uns das ansehen, können wir sehen, dass DEMA, TEMA und Preisverfolgbarkeit höher sind als EMA. Mit anderen Worten wird die Verzögerung, die dazu neigt, ein gleitender Durchschnitt zu sein, verringert. Ich habe jedoch das Gefühl, dass der Lärm zunimmt.

Unterschied aufgrund von Frequenzeigenschaften

Der Unterschied im obigen Verarbeitungsbeispiel kann durch den Unterschied in den Frequenzeigenschaften erklärt werden.

Vergleich der gleitenden Durchschnittswerte des IIR-Filtertyps mit Pandas und Scipy Entsprechend der EMA-Systemfunktion kann geschrieben werden als: $H_{EMA}(z)=\frac{\alpha}{1-(1-\alpha)z^{-1}}$

Damit sind die Systemfunktionen von DEMA und TEMA wie folgt.

H_{DEMA}=2H_{EMA}(z)-H_{EMA}(z)^2
H_{TEMA}=3H_{EMA}(z)-3H_{EMA}(z)^2+H_{EMA}(z)^3

Wenn Sie $ H_ {EMA} (z) $ in dieses einsetzen und es teilen, ist das Ergebnis wie folgt.

H_{DEMA}(z)=\frac{b_0+b_1z^{-1}}{a_0+a_1z^{-1}+a_2z^{-2}}

$ B_0 = \ alpha (2- \ alpha) $, $ b_1 = 2 \ alpha (\ alpha-1) $, $ a_0 = 1 $, $ a_1 = 2 (\ alpha-1) $, $ a_2 = (1- \ alpha) ^ 2 $

H_{TEMA}(z)=\frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}+a_3z^{-3}}

$ B_0 = 3 \ alpha (1- \ alpha) + \ alpha ^ 3 $, $ b_1 = 3 \ alpha (\ alpha-2) (1- \ alpha) $, $ b_2 = 3 \ alpha (1- \ alpha) ^ 2 $, $ a_0 = 1 $, $ a_1 = 3 (\ alpha-1) $, $ a_2 = 3 (1- \ alpha) ^ 2 $, $ a_3 = (\ alpha-1) ^ 3 $

Mit dieser Transformation können Sie die Funktionen freqz und group_delay verwenden, die die Frequenzeigenschaften mit den Koeffizienten der Molekül- und Nennerpolynome in Pythons Scipy als Argumente berechnen.

Schwingungseigenschaften

Lassen Sie uns die Amplitudencharakteristik jeder EMA mit dem folgenden Code finden.

%matplotlib inline
import numpy as np
import scipy.signal as sp
import matplotlib.pyplot as plt

period = 14 #Zeitraum
alpha = 2/(period+1)
#EMA
a = [1, alpha-1]
b = alpha
w, h = sp.freqz(b, a)
#DEMA
a_d = [1, 2*(alpha-1), (1-alpha)**2]
b_d = [alpha*(2-alpha), 2*alpha*(alpha-1)]
w, h_d = sp.freqz(b_d, a_d)
#TEMA
a_t = [1, 3*(alpha-1), 3*(1-alpha)**2, (alpha-1)**3]
b_t = [3*alpha*(1-alpha)+alpha**3, 3*alpha*(alpha-2)*(1-alpha), 3*alpha*(1-alpha)**2]
w, h_t = sp.freqz(b_t, a_t)

plt.xlabel('Frequency(rad/s)')
plt.ylabel('Amplitude')
plt.plot(w, abs(h), 'r', label='EMA')
plt.plot(w, abs(h_d), 'b', label='DEMA')
plt.plot(w, abs(h_t), 'g', label='TEMA')
plt.legend(loc="best")

index.png

Grundsätzlich zeigt der gleitende Durchschnitt die Eigenschaften eines Tiefpassfilters, der niedrige Frequenzen durchlässt, aber im Vergleich zu EMA haben DEMA und TEMA ein etwas breiteres Band zum Durchlaufen. Aufgrund dessen bleiben einige Hochfrequenzsignale erhalten. Daher hatten DEMA und TEMA im Vergleich zu EMA noch etwas Rauschen.

Gruppenverzögerungseigenschaften

Als nächstes finden wir unter den Frequenzcharakteristiken die Gruppenverzögerungscharakteristik, die die Phasencharakteristik unterscheidet.

#Gruppenverzögerungseigenschaften
w, gd = sp.group_delay((b, a))
w, gd_d = sp.group_delay((b_d, a_d))
w, gd_t = sp.group_delay((b_t, a_t))

plt.xlabel('Frequency(rad/s)')
plt.ylabel('Group delay')
plt.plot(w, gd, 'r', label='EMA')
plt.plot(w, gd_d, 'b', label='DEMA')
plt.plot(w, gd_t, 'g', label='TEMA')
plt.legend(loc="best")

index.png

Die Gruppenverzögerungscharakteristik repräsentiert die Verzögerung des Signals bei dieser Frequenz. Betrachtet man dies, hat EMA eine große Verzögerung bei niedrigen Frequenzen, während DEMA und TEMA eine kleine Verzögerung haben. Diese Gruppenverzögerungscharakteristik kann auch die hohe Verfolgbarkeit von Änderungen in der Eingabe erklären.

Recommended Posts

Unterschied zwischen dem exponentiellen gleitenden Durchschnitt (EMA), dem gleitenden Doppelindexdurchschnitt (DEMA) und dem gleitenden Dreifachindexdurchschnitt (TEMA)
Vergleich des in Python geschriebenen EMA-Codes (Exponential Moving Average)
Unterschied zwischen Prozess und Job
Unterschied zwischen "categoryical_crossentropy" und "sparse_categorical_crossentropy"
Unterschied zwischen Regression und Klassifikation
Unterschied zwischen np.array und np.arange
Unterschied zwischen MicroPython und CPython
Unterschied zwischen ps a und ps -a
Unterschied zwischen Return und Print-Python