[PYTHON] Différence entre la moyenne mobile exponentielle (EMA), la moyenne mobile à double indice (DEMA) et la moyenne mobile à triple indice (TEMA)

DEMA et TEMA sont des indicateurs techniques intégrés à MetaTrader 5 (MT5). Abréviations pour la moyenne mobile double exponentielle et la moyenne mobile triple exponentielle, respectivement, traduites en moyenne mobile exponentielle double et moyenne mobile exponentielle triple.

Dans cet article, nous examinerons les différences entre EMA, DEMA et TEMA.

EMA Voici une description de base de l'EMA. Comparaison des moyennes mobiles de type de filtre IIR avec les pandas et scipy

La formule est $y(n)=\alpha x(n)+(1-\alpha)y(n-1)$ Comme pour les autres moyennes mobiles, si la période $ period $ est utilisée comme paramètre, alors $ \ alpha = 2 / (période + 1) $.

DEMA

DEMA est une abréviation de Double EMA, mais il ne s'agit pas seulement d'appliquer deux fois l'EMA. Même si l'EMA est appliqué deux fois, le lissage ne fera que procéder et les caractéristiques caractéristiques ne seront pas obtenues.

La formule EMA ci-dessus

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

Ensuite, la formule de DEMA est

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

Peut être écrit. J'utilise également le double EMA, mais j'utilise également l'EMA pour calculer. Le principe de dérivation de cette formule est décrit dans ici.

TEMA

La formule de TEMA est

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

Écrivez et calculez à l'aide du triple EMA, du double EMA et de l'EMA. Le principe de dérivation de cette équation est ici.

Différence entre EMA, DEMA, TEMA

Différences dues aux exemples de traitement

Voici un exemple d'application d'EMA, DEMA et TEMA à un graphique FX.

EURJPY.fM30.png

C'est ce qui est affiché sur le graphique MT5, le rouge est EMA, le bleu est DMA, le vert est TEMA. Toutes les périodes sont également $ period = 14 $.

En regardant cela, nous pouvons voir que DEMA, TEMA et le suivi des prix sont plus élevés que l'EMA. En d'autres termes, le délai qui tend à être une moyenne mobile est réduit. Cependant, je sens que le bruit augmente.

Différence due aux caractéristiques de fréquence

La différence dans l'exemple de traitement ci-dessus peut être expliquée par la différence des caractéristiques de fréquence.

Comparaison des moyennes mobiles de type de filtre IIR avec les pandas et scipy Selon la fonction système EMA, il peut être écrit comme suit: $H_{EMA}(z)=\frac{\alpha}{1-(1-\alpha)z^{-1}}$

En utilisant cela, les fonctions système de DEMA et TEMA sont les suivantes.

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

En substituant $ H_ {EMA} (z) $ en ceci et en le divisant, le résultat est le suivant.

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

Cependant, $ 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}}

Cependant, $ 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 $

Avec cette transformation, vous pouvez utiliser les fonctions freqz et group_delay qui calculent les caractéristiques de fréquence avec les coefficients des polynomies moléculaires et dénominateurs dans le scipy de Python comme arguments.

Caractéristiques d'oscillation

Trouvons la caractéristique d'amplitude de chaque EMA avec le code suivant.

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

period = 14 #période
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

Fondamentalement, la moyenne mobile montre les caractéristiques d'un filtre passe-bas qui laisse passer les basses fréquences, mais comparé à l'EMA, DEMA et TEMA ont une bande légèrement plus large à traverser. Pour cette raison, certains signaux haute fréquence restent. Par conséquent, DEMA et TEMA avaient un peu de bruit par rapport à l'EMA.

Caractéristiques du retard de groupe

Ensuite, parmi les caractéristiques de fréquence, trouvons la caractéristique de retard de groupe qui différencie la caractéristique de phase.

#Caractéristiques du retard de groupe
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

La caractéristique de retard de groupe représente le retard du signal à cette fréquence. En regardant cela, EMA a un retard important aux basses fréquences, tandis que DEMA et TEMA ont un petit retard. Cette caractéristique de retard de groupe peut également expliquer la haute capacité de suivi des changements dans l'entrée.

Recommended Posts

Différence entre la moyenne mobile exponentielle (EMA), la moyenne mobile à double indice (DEMA) et la moyenne mobile à triple indice (TEMA)
Comparaison du code de moyenne mobile exponentielle (EMA) écrit en Python
Différence entre processus et travail
Différence entre "categorical_crossentropy" et "sparse_categorical_crossentropy"
Différence entre régression et classification
Différence entre np.array et np.arange
Différence entre MicroPython et CPython
Différence entre ps a et ps -a
Différence entre return et print-Python