MACD_DEMA

This tool is a specialized technical analysis indicator designed to help traders identify momentum and potential trend reversals in the financial markets. It is an advanced evolution of the standard MACD (Moving Average Convergence Divergence) indicator, optimized for faster responsiveness.

How it Works

The core logic relies on measuring the relationship between two different price averages—a "fast" one and a "slow" one. By comparing these two, the tool shows whether the market's current velocity is speeding up or slowing down.

What makes this specific version unique is the use of DEMA (Double Exponential Moving Average) instead of the standard EMA. In plain terms, DEMA is designed to reduce the "lag" often found in traditional indicators. It reacts more quickly to recent price changes while still filtering out minor market noise, allowing for a clearer picture of where the price is headed.

Visual Components

The indicator provides three distinct visual elements to help you interpret the market:

  • The MACD Line: This primary line represents the raw difference between the fast and slow DEMA averages. It shows the immediate momentum of the price action.
  • The Signal Line: This is a secondary, smoothed line that follows the MACD line. It acts as a reference point; when the MACD line crosses this signal line, it often suggests a potential shift in market direction.
  • The Histogram: This is the vertical bar chart at the bottom. It calculates the distance between the MACD line and the Signal line.
    • When the bars are above the zero mark, it indicates bullish momentum (buying pressure).
    • When the bars are below the zero mark, it indicates bearish momentum (selling pressure).

Summary for Traders

By combining the speed of DEMA with the momentum tracking of a MACD, this script aims to provide a more "real-time" view of the market. It helps traders spot trend changes earlier than standard indicators might, providing a visual map of whether the current price movement has enough strength to continue or if it is beginning to exhaust itself.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
MACD_DEMA
//+------------------------------------------------------------------+
//|                                                    MACD_DEMA.mq4 |
//|                                    Copyright © 2007, Robert Hill |
//| Standard MACD modified to use DEMA instead of EMA                |
//|                                                                  |
//| Based on the formula developed by Patrick Mulloy                 |
//|                                                                  |
//| It can be used in place of EMA or to smooth other indicators.    |
//|                                                                  |
//| DEMA = 2 * EMA - EMA of EMA                                      |
//|                                                                  |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Aqua
#property  indicator_color2  Red
#property  indicator_color3  Green
#property  indicator_color4  Red
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double     MACD_buffer[];
double     Signal_buffer[];
double HistogramBufferUp[];
double HistogramBufferDown[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
   SetIndexBuffer(0,MACD_buffer);
   SetIndexDrawBegin(0,SlowEMA);
   SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(1,Signal_buffer);
   SetIndexDrawBegin(1,SignalSMA);
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID);
   SetIndexBuffer(2,HistogramBufferUp);
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID);
   SetIndexBuffer(3,HistogramBufferDown);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD_DEMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
   SetIndexLabel(2,"Histogram");
//---- initialization done
   return(0);
  }

//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   double temp;
   int limit;
   int counted_bars=IndicatorCounted();
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
//---- macd counted in the 1-st buffer

   for(int i=0; i<limit; i++)
      MACD_buffer[i]=iCustom(NULL, 0, "DEMA_RLH2", FastEMA, 2, i)- iCustom(NULL, 0, "DEMA_RLH2", SlowEMA, 2, i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      Signal_buffer[i]=iMAOnArray(MACD_buffer,Bars,SignalSMA,0,MODE_EMA,i);
//---- done
   for(i=0; i<limit; i++)
   {
      HistogramBufferUp[i] = 0;
      HistogramBufferDown[i] = 0;
      temp = MACD_buffer[i] - Signal_buffer[i];
      if (temp >= 0)
        HistogramBufferUp[i] = temp;
      else
        HistogramBufferDown[i] = temp;
      
   }
      
   return(0);
  }

Comments