MACDTrad3(1)

MACDTrad3(1)

This tool is a custom technical analysis indicator designed to help traders visualize momentum and price trends on their charts. It functions by calculating the relationship between different types of moving averages to identify whether a market's strength is increasing or decreasing.

Core Mechanics

The logic operates through three primary components that work together to provide a comprehensive view of price action:

1. The MACD Line (Main Momentum) The script first looks at two different "Moving Averages"—short-term and long-term—which are essentially smoothed versions of the market's closing prices. By calculating the difference between these two averages, the tool identifies the gap between immediate price movement and the broader trend. This result is then adjusted by the current closing price to create a primary momentum line.

2. The Signal Line (Trend Smoothing) To filter out "noise" or minor market fluctuations, the script takes the results of the MACD calculation and applies a third smoothing process. This creates a secondary line that acts as a guide, showing the average direction of the momentum over time. When the main momentum line crosses this signal line, it often suggests a potential shift in trend direction.

3. The Histogram (Visual Momentum) The tool also generates a histogram which provides a visual representation of the distance between the momentum and the signal lines. By adding this difference to the closing price, it allows traders to see at a glance how "stretched" or "compressed" the current price movement is relative to its recent history.

How It Works Together

Instead of just showing you where the price is, this script analyzes how fast the price is moving and whether that speed is accelerating or slowing down. By using three distinct layers of calculation—short-term trends, long-term averages, and smoothing filters—it aims to provide a more nuanced view of market dynamics than a single indicator could offer alone.

Indicators Used
Moving average indicatorMoving average indicator
Miscellaneous
Implements a curve of type %1
9 Views
0 Downloads
0 Favorites
MACDTrad3(1)
//---- indicator settings
#property  indicator_chart_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_NONE);
   SetIndexStyle(2,DRAW_NONE);
   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]=Close[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]=Close[i]+(MacdBuffer[i]-SignalBuffer[i]);
      
   for(i=0; i<limit; i++)
      MacdBuffer[i]=iMAOnArray(HistoBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }
//+------------------------------------------------------------------+

Comments