MTF MACD MT4 Indicator – Download for Free


MTF MACD MT Download for free

Download for free the MTF MACD MT4 indicator and learn how to use it. This fantastic indicator will show the trend of 4 different time frames.

The MACD is an excellent trend indicator and its multi time frame usage is undoubtedly a good idea.


At the end of this page, you can find and download our MTF MACD MT4 Indicator for MetaTrader4 for free. We only ask you to follow us on our channels to help us grow. We will also show you the code in MQL for creating the indicator.


Many traders have realized how important it is to adopt a multi-timeframe approach and the MACD indicator is among the most used ones.

Unfortunately, MetaTrader does not provide the MTF MACD indicator. You can find and download our Multi Time Frame MACD Indicator for MetaTrader4 for free at the end of this page. We only ask you to follow us on our channels to help us grow.

The MTF MACD MT4 indicator indicates the trend of all the main timeframes. No matter what timeframe you are on, you will always indicate how the MACD behaves on the following time frames:

  • Daily
  • H4
  • H1
  • M15

The first line of the MTD MACD, the one closest to the graph, represents the daily timeframe, representing the highest timeframe.

MTF MACD for Metatrader MT

We then set an H4 timeframe in the second line below the daily line and an H1 timeframe below the H4 timeframe.

Finally, the fourth row represents an M15 timeframe.

MTF MACD Indicator for MetaTrader

How to use the MTF MACD MT4 indicator

We can use this indicator as a trend filter or as an input signal. We certainly prefer to use it as a trend filter as we do not believe that the MACD can give interesting signals if used alone.

Anyway, let’s see how to use it in both ways, even with practical examples.

How to filter the trend with a multi time frame MACD indicator

Before entering a trade, it is always important to know the trend direction and MTF MACD is an helpful indicator.

We are not only interested in knowing the direction of the time frame we are using, but we may also need to know what happens in the upper and lower time frames.

We need to know the trend of the higher time frame because it is never an excellent idea to open operations against the trend, especially in a trend-following strategy.

MTF MACD MT4 provides us with a reasonably truthful indication and allows us to avoid one of the most common errors.

To perfect the timing of entry, it would be essential to know how the price behaves in the lower timeframe.

Suppose we are on an hourly GBPUSD chart and want to open a trade long. Through our MTF MACD indicator, we will check the daily trend and H4 to verify that it is bullish.

Once we are sure not to go against the main trend we will look at the lower time frame (the last row of the indicator). If this time we get an indication of a bearish trend, the best thing to do is to wait for the trend to rise again in this timeframe and, only at this point, open the trade.

This expedient allows us to avoid finding ourselves in all those situations in which the price is reversing, but in our reference time frame, it is not yet clear.

Certainly, a more experienced trader would still notice the probable reversal through the observation of the candles. Still, a novice trader can certainly take advantage of using the MTF MACD MT4 indicator.

Use MTF MACD MT4 as an input signal.

As we said, we don’t like to use the indicator in this way, but we will explain to you what this system consists of.

In practice, an alignment in the MTF MACD of all time frames in one direction is expected and trade opens in that direction.

This type of trading strategy is pure trend follower and no longer works so well in current markets.

There are perhaps still little liquid exchange rates, the so-called exotic exchange rates, which could still present trends that can be translated with this strategy. It will undoubtedly be challenging to obtain excellent results on the cross majors.

More about MACD on Investopedia.

MTF MACD MT4 MQL Code

#property copyright "Finance Strategy System"
#property link      "http://www.financestrategysystem.com"


#property indicator_separate_window
#property indicator_minimum -1
#property indicator_maximum 6
#property indicator_buffers 8
#property indicator_color1 Green
#property indicator_color2 Green
#property indicator_color3 Green
#property indicator_color4 Green
#property indicator_color5 Red
#property indicator_color6 Red
#property indicator_color7 Red
#property indicator_color8 Red
//---- input parameters
extern int       FastEMA=5;
extern int       SlowEMA=45;
//---- buffers
double UpBuffer_M15[];
double UpBuffer_H1[];
double UpBuffer_H4[];
double UpBuffer_D1[];
double DownBuffer_M15[];
double DownBuffer_H1[];
double DownBuffer_H4[];
double DownBuffer_D1[];


datetime dt15[200], dth1[200], dth4[200], dtd1[200];   

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,254);
   SetIndexBuffer(0,UpBuffer_M15);
   SetIndexEmptyValue(0,-40.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,254);
   SetIndexBuffer(1,UpBuffer_H1);
   SetIndexEmptyValue(1,-40.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,254);
   SetIndexBuffer(2,UpBuffer_H4);
   SetIndexEmptyValue(2,-40.0);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(3,254);
   SetIndexBuffer(3,UpBuffer_D1);
   SetIndexEmptyValue(3,-40.0);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexArrow(4,253);
   SetIndexBuffer(4,DownBuffer_M15);
   SetIndexEmptyValue(4,-40.0);
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexArrow(5,253);
   SetIndexBuffer(5,DownBuffer_H1);
   SetIndexEmptyValue(5,-40.0);
   SetIndexStyle(6,DRAW_ARROW);
   SetIndexArrow(6,253);
   SetIndexBuffer(6,DownBuffer_H4);
   SetIndexEmptyValue(6,-40.0);
   SetIndexStyle(7,DRAW_ARROW);
   SetIndexArrow(7,253);
   SetIndexBuffer(7,DownBuffer_D1);
   SetIndexEmptyValue(7,-40.0);
   
   IndicatorShortName("Finance Strategy System MTF MACD("+FastEMA+","+SlowEMA+")");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit, shift;
   if(counted_bars<0) return(-1);
   if (counted_bars==0) limit=Bars-1;  // limit = Bars-MinBars-1;
//---- last counted bar will be recounted
   if(counted_bars>0) limit=Bars-counted_bars;
   limit--;

   int i15 = 0, ih1 = 0, ih4 = 0, id1 = 0;

   static bool fft = true;
   
   //if (NewBar()) // Update array every 15 minutes
   {
      ArrayCopySeries(dt15,MODE_TIME,Symbol(),PERIOD_M15); 
      ArrayCopySeries(dth1,MODE_TIME,Symbol(),PERIOD_H1); 
      ArrayCopySeries(dth4,MODE_TIME,Symbol(),PERIOD_H4); 
      ArrayCopySeries(dtd1,MODE_TIME,Symbol(),PERIOD_D1); 
   }   
   
   if ((fft) && (Symbol() == "EURUSD"))
   {
      fft = false;
      datetime d = iTime(NULL, PERIOD_D1, 0);
      for (int j=0; j<80; j++)
      {
         Print(j,") ",dt15[j]-d," ",dth1[j]-d, " ", dth4[j]-d," ", dtd1[j]-d);
      }
   }
   for(int i=0; i<limit; i++)
   {   
      datetime ddt = iTime(NULL, 0, i);
      if (ddt<dt15[i15]) i15++;
      if (ddt<dth1[ih1]) ih1++;
      if (ddt<dth4[ih4]) ih4++;
      if (ddt<dtd1[id1])  id1++;
      
      double macd_m15 = iMACD(NULL,PERIOD_M15, FastEMA,SlowEMA,1,PRICE_CLOSE, MODE_MAIN,i15);
      double macd_h1 = iMACD(NULL,PERIOD_H1, FastEMA,SlowEMA,1,PRICE_CLOSE, MODE_MAIN,ih1);
      double macd_h4 = iMACD(NULL,PERIOD_H4, FastEMA,SlowEMA,1,PRICE_CLOSE, MODE_MAIN,ih4);
      double macd_d1 = iMACD(NULL,PERIOD_D1, FastEMA,SlowEMA,1,PRICE_CLOSE, MODE_MAIN,id1);
      
      UpBuffer_M15[i] = -40;    DownBuffer_M15[i] = -40; 
      UpBuffer_H1[i] = -40;    DownBuffer_H1[i] = -40; 
      UpBuffer_H4[i]  = -40;    DownBuffer_H4[i]  = -40; 
      UpBuffer_D1[i]  = -40;    DownBuffer_D1[i]  = -40; 

      if (macd_m15 > 0) UpBuffer_M15[i] = 1; if (macd_m15 < 0) DownBuffer_M15[i] = 1;
      if (macd_h1 > 0) UpBuffer_H1[i] = 2; if (macd_h1 < 0) DownBuffer_H1[i] = 2;
      if (macd_h4 > 0) UpBuffer_H4[i]   = 3; if (macd_h4  < 0) DownBuffer_H4[i]  = 3;
      if (macd_d1 > 0) UpBuffer_D1[i]   = 4; if (macd_d1  < 0) DownBuffer_D1[i]  = 4;
   }

   return(0);
  }

MTF MACD MT4 Indicator Download

DOWNLOAD BUTTON

    Recent Content