MTF MACD MT4 Indicator – 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 coded in MQL, and its multi time frame usage is undoubtedly a good idea.

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.

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

Why use a multi time frame indicator

It is always essential to check the upper and lower time frames before opening a trade.

Even using the MACD, we will not have an overall view of the market without examining all the timeframes.

Each time frame has its dynamics and its investors, who will react differently based on their perspective.

We will have many automated trading systems and many scalpers with short-term reactions in an intraday time frame. In the higher time frames, we will find long-term or institutional investors who will react more slowly.

EurUsd daily chart MACD MTF with tradingview platform

It would help if you always remembered that the MACD Multi Time Frame Indicator would be much more late on the higher time frames and vice versa.

So the best way to use the MACD MTF is to monitor the indication in the highest time frame to follow the trend while using the lowest time frame to improve the input timing.

I could also decide to get the entry signal from another technical indicator such as the SuperTrend or Bollinger Bands and use the MACD MTF to filter the trend’s direction.

How to use the MTF MACD 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.

Theoretically, on some tools, MACD entry signal could still use it; let’s see how.

Assuming we want to open a long trade, following a trend follower strategy, we will have to wait for the MACD Daily to be green. Then we will wait for a retracement of the price that will make all the other time frames turn red, obviously excluding the daily.

As soon as the higher time frames begin to turn green again, we can open in the direction of the trend.

The longer you wait to confirm the higher time frames, the more the price will have already progressed and, perhaps, ended its movement making the trade riskier.

The MACD is a trend follower indicator; in practice, it is a moving average that crosses, so it is a lagging indicator. Therefore it signals the direction of the trend or its reversal only after this has occurred.

This indicator differs from the RSI, which is part of the oscillators and tries to anticipate price movements. It might be a good idea to use them simultaneously.

eurjpy daily chart with macd mtf and rsi divergence strategy

Therefore, one could search for an input signal through a divergence of the RSI, filtering the trend over multiple time frames with the MACD MTF.

In this case, we used the MACD Multi Time Frame as a filter and not as an input signal; we will deepen this use in the next chapter.

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

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

How to filter the trend

Before entering a trade, it is always important to know that the trend direction and MTF MACD for MT4 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 higher time frame trend 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 entry timing, 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 it is not yet clear in our reference time frame.

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.

However, it would help if you always remembered that the MACD MTF lags on prices, so the indicator could signal a bullish trend while the market is already strongly bearish.

This delay in signaling the change in the trend is precise because we recommend using this indicator only with other technical tools.

Unfortunately, pure trend follower strategies no longer work as well in modern markets with a lot of liquidity and generally little volatility.

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.

As we have seen in the previous paragraphs, it is undoubtedly useful to associate another technical indicator for the input signal.

The important thing is not to use a technical indicator from the same family as the trend followers because it would have the same characteristics and the same defects as the MACD MTF.

We could use an oscillator to detect the end of a price retracement or the Bollinger Bands to exploit contractions and expansions of volatility. In any case, we are always analyzing the underlying trend with the MACD.

Many traders use price patterns, then price action to identify possible trades. Associating the price action with the MACD is undoubtedly a good idea as you should not get behind the movement.

eurusd macd mtf with price action reversal pattern

Think of using a Key reversal pattern to be used in the direction of the trend provided by the MACD MTF. When a key reversal is formed at the end of a retracement, and our MACD has not reversed the movement, we could try to enter the market.

More about MACD on Investopedia.

MetaTrader4 MQL Code

#property copyright "Finance Strategy System"
#property link      "https://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);
  }

Free Download MTF MACD MT4 Indicator