MACDTrad

This tool is a technical analysis indicator designed to help traders visualize momentum and identify shifts in market trends. It functions by analyzing the relationship between two different moving averages of price data, providing a clearer picture of whether the market is gaining strength or losing steam.

How the Logic Works

The script processes market data through three distinct layers of calculation to generate its visual output:

1. The Momentum Core (MACD Line) The primary logic begins by calculating two different "Exponential Moving Averages" (EMAs). One is "Fast" (reacting quickly to recent price changes) and the other is "Slow" (tracking the broader trend). The script subtracts the Slow average from the Fast average.

  • What this tells you: When the difference is positive and increasing, it suggests upward momentum. When it is negative and decreasing, it suggests downward pressure. This result is plotted as a continuous line on your chart.

2. The Signal Smoothing (Signal Line) To prevent reacting to every minor price flicker, the script takes the results from the first step (the Momentum Core) and runs them through another moving average—a "Simple Moving Average" (SMA).

  • What this tells you: This creates a smoothed "Signal" line. Traders often look for the point where the Momentum Core crosses over this Signal line, as these intersections are frequently used to identify potential entry or exit points in a trend.

3. The Visual Summary (Histogram) Finally, the script performs a third calculation by measuring the gap between the Momentum Core and the Signal Line. This difference is displayed as a vertical histogram (bars).

  • What this tells you: The height of these bars represents the intensity of the current momentum. When the bars are tall, the trend is strong; when they shrink toward the zero mark, it indicates that the trend is weakening or potentially reversing.

Summary of Visual Components

  • The Main Line (Silver): Represents the raw difference between fast and slow price trends.
  • The Signal Line (Red): Represents the smoothed average of that difference to help filter out "noise."
  • The Histogram (Blue): Provides a quick visual pulse of the market's current strength, showing how far apart the two main trend components are at any given moment.
Indicators Used
Moving average indicatorMoving average indicator
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
MACDTrad
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_color3  Blue
#property  indicator_width1  2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double     MacdBuffer[];
double     SignalBuffer[];
double     HistoBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
//---- indicator buffers mapping
   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexBuffer(2,HistoBuffer);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")    !! :)");
   SetIndexLabel(0,"MACD YO");
   SetIndexLabel(1,"Signal YO");
   SetIndexLabel(2,"H I S T O :):)");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- 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++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- histogram line counted in the 3-nd buffer
   for(i=0; i<limit; i++)
      HistoBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- done
   return(0);
  }
//+------------------------------------------------------------------+

Comments