Double Exponential Moving Average
EMA의 지연을 줄이기 위해 개발된 기술적 지표로서 EMA보다 최근 가격에 더 민감하게 반응하므로 단기매매의 추세 전환을 거 빠르게 포착하는 데 도움이 됩니다.
단일 EMA : EMA1 |
EMA2: EMA1의 지수이동평균 |
DEMA = (2· EMA1)-EMA2 |
talib.DEMA(data, timeperiod)
함수를 적용합니다.
다음은 일정기간의 주가에 대한 봉차트에 DEMA 5일, 20일 결과를 작성한 것입니다. 다양한 DEMA 플롯을 작성하기 위해 위 함수를 적용한 결과를 그래프로 작성하기 위한 UDF를 작성 사용하였습니다.
def dema_plot(data, periods=[5, 20]): if type(data) == pd.core.series.Series: df = data else: df = data["Close"] result=pd.DataFrame() for i in periods: result[f'dema_{i}']=talib.DEMA(df, timeperiod=i) plt.plot(result[f'dema_{i}'], label=f'dema_{i}') plt.grid(True) plt.legend(loc="upper left") return result
import numpy as np import pandas as pd import yfinance as yf import talib import matplotlib.pyplot as plt st=pd.Timestamp(2024,1, 1) et=pd.Timestamp(2025, 4,28) trgnme="000660.KS" trg=yf.download(trgnme, st, et) trg.columns=[i[0] for i in trg.columns]
trg1=trg.copy().iloc[-120:, :] plt.figure(figsize=(10, 3)) candleChart(trg1) re=dema_plot(trg1) plt.show()
re.tail(3)
dema_5 | dema_20 | |
---|---|---|
Date | ||
2025-04-23 | 177795.557727 | 174466.798241 |
2025-04-24 | 178180.864075 | 174470.930968 |
2025-04-25 | 181754.237554 | 175615.620742 |
- EMA 보다 지연이 적기 때문에 최근 가격변화에 더 민감
- 추세확인
- 가격 > DEMA: 상승추세
- 가격 < DEMA: 하락추세
- 추세전환신호
- 가격이 DEMA를 상향돌파: 매수신호
- 가격이 DEMA를 하향돌파: 매도신호
- 단기 DEMA가 장기EMA를 상향돌파: 골든크로스로 매수신호
- 단기 DEMA가 장기EMA를 하향돌파: 데드크로스로 매도신호
지연이 감소된다는 것은 데이터의 smoothing 효과가 감소된다는 것을 의미하며 결과적으로 noise에 더 민감함을 의미합니다. 이것은 단기 추세의 파악에는 유리하지만 장기 추세의 파악에는 단순이동평균이나 일반적인 EMA가 더 효과적일 수 있음을 의미합니다.
댓글
댓글 쓰기