지수이동평균(EMA), 더블지수이동평균(DEMA), 트리플 지수이동평균(TEMA)의 차이

MetaTrader5(MT5)에 포함된 기술 지표 중에는 DEMA, TEMA가 있다.Double Exponential Moving Average, Tripple Exponential Moving Average의 약자, 더블 지수 이동 평균, 트리플 지수 이동 평균으로 각각 번역됐다.
본고는 EMA, DEMA, TEMA의 차이를 조사할 것이다.

EMA


EMA의 기본 지침은 다음과 같습니다.
판다스와 scipy로 IIR 필터형의 이동 평균치를 비교하였다
계산 공식은
$$y(n)=\alpha x(n)+(1-\alpha)y(n-1)$$
다른 이동 평균치와 마찬가지로 $period 달러를 매개 변수로 하면 $\alpha=2/(period+1)달러입니다.

DEMA


DEMA는 더블 EMA의 약칭이지만, 단순히 EMA를 두 번 덧붙이는 것은 아니다.EMA를 두 번 사용해도 단순한 매끄러움일 뿐 특징이 없다.
위의 EMA 공식
$$y(n)=EMA[x(n)]$$
그렇다면 DEMA의 계산식은
$$y(n)=2EMA[x(n)]-EMA[EMA[x(n)]]$$
이렇게 써.나도 이중 EMA를 사용하고, 또한 EMA로 계산한다.이 공식의 도출 원리는 여기.에 쓰여 있다.

TEMA


TEMA의 계산 공식은요.
$$y(n)=3EMA[x(n)]-3EMA[EMA[x(n)]]+EMA[EMA[EMA[x(n)]]]$$
3중 EMA, 2중 EMA, EMA로 계산한다.이 공식의 도출 원리는여기.이다.

EMA, DEMA, TEMA의 차이점


처리 예에 따라 다름


EMA, DEMA, TEMA를 FX 차트에 적용한 예를 나타냅니다.

이것은 MT5의 도표에 나타난 것으로 빨간색은 EMA, 파란색은 DMA, 녹색은 TEMA이다.그 동안 모두 $period=14달러였다.
이를 통해 알 수 있듯이 EMA에 비해 DEMA, TEMA, 가격의 추종성이 높다.이동의 평균 지연이 줄어든 셈이다.그런데 소음이 증가한 것 같아요.

주파수 특성에 따라 다르다


위의 처리 사례의 차이는 주파수 특성의 차이로 설명할 수 있다.
판다스와 scipy로 IIR 필터형의 이동 평균치를 비교하였다
, EMA의 시스템 함수는 다음과 같습니다.
$$H_{EMA}(z)=\frac{\alpha}{1-(1-\alpha)z^{-1}}$$
이것을 사용하면 DEMA, TEMA의 시스템 함수는 각각 다음과 같습니다.
$$H_{DEMA}=2H_{EMA}(z)-H_{EMA}(z)^2$$
$$H_{TEMA}=3H_{EMA}(z)-3H_{EMA}(z)^2+H_{EMA}(z)^3$$
$H입니다.{EMA}(z)가 달러 통분을 대입하면 다음과 같다.
$$H_{DEMA}(z)=\frac{b_0+b_1z^{-1}}{a_0+a_1z^{-1}+a_2z^{-2}}$$
하지만, $b0 =\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}}$$
하지만, $b0 = 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$
이렇게 변형하면 파이톤의 scipy 중의 분자 다항식과 분모 다항식의 계수를 매개 변수로 주파수 특성을 계산하는 함수freqzgroup_delay를 사용할 수 있다.

진폭 특성


아래 코드로 각 EMA의 진폭 특성을 구해 보세요.
%matplotlib inline
import numpy as np
import scipy.signal as sp
import matplotlib.pyplot as plt

period = 14 #期間
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")

기본적으로 이동은 저주파로 저통 여파기의 특성을 평균적으로 나타내지만, EMA에 비해 DEMA, TEMA가 통과하는 대역이 조금 확대됐다.그 관계로 고주파 신호도 어느 정도 남아 있다.이에 따라 DEMA, TEMA는 EMA와 비교해 다소 소음이 남았다.

군 지연 특성


이어 주파수 특성에서도 위상 특성을 미분화한 군 지연 특성을 구해봤다.
# 群遅延特性
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")

그룹 지연 특성은 신호가 이 주파수에서 지연되는 것을 나타낸다.이것을 보면 EMA의 저주파 딜레이가 크고 DEMA, TEMA와 딜레이가 작아진다.이 그룹의 지연 특성도 입력 변화의 추종성이 높다는 것을 설명할 수 있다.

좋은 웹페이지 즐겨찾기