#MTF_MACD_4_v1

Download script
Author: Copyright � 2006, TrendLaboratory
#MTF_MACD_4_v1

This tool is designed to provide traders with a "Multi-Timeframe" (MTF) perspective on the MACD (Moving Average Convergence Divergence) indicator. In simple terms, it allows you to view trend data from a larger time scale—such as daily or weekly charts—while you are actually looking at a smaller, more immediate chart like a 15-minute or hourly one.

How it Works

The primary logic of this script is to bridge the gap between different timeframes. Instead of forcing you to switch back and forth between various tabs to see what the "big picture" looks like, this script automatically calculates the data from your chosen higher timeframe and overlays it onto your current screen.

Key Components of the Logic:

  • Timeframe Selection: The user can specify exactly which larger timeframe they want to monitor (e.g., Daily, Weekly, 4-hour). The script takes that specific data "feed" and translates it to match the number of bars on your current chart.
  • MACD Calculation: The script processes three specific data points from the chosen timeframe:
    1. The Main MACD Line: Represents the difference between two moving averages (Fast and Slow).
    2. The Signal Line: A secondary smoothing line used to identify potential trend reversals.
    3. The Histogram: A visual representation of the distance between the Main MACD and the Signal line, which helps in gauging the strength of a move.
  • Synchronized Alignment: Because different timeframes have different numbers of candles per minute, the script includes logic to ensure that the data points align correctly in time. It "maps" the history of the larger timeframe so that the peaks and valleys correspond accurately with the current price action on your screen.

Summary for the User

Essentially, this script acts as a specialized lens. It allows you to keep your eyes on the immediate price movements while simultaneously watching the momentum and trend of a much larger market cycle. It removes the need to jump between different windows, providing a more holistic view of the market's direction at a single glance.

Miscellaneous
Implements a curve of type %1
14 Views
0 Downloads
0 Favorites
#MTF_MACD_4_v1
//+------------------------------------------------------------------+
//|                                                MTF_MACD_4_v1.mq4 |
//|                                Copyright © 2006, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Tomato
#property indicator_color3 LightBlue

#property indicator_width1 1 
#property indicator_width2 1 
#property indicator_style2 2
#property indicator_width3 2 
//---- input parameters
/*************************************************************************
PERIOD_M1   1
PERIOD_M5   5
PERIOD_M15  15
PERIOD_M30  30 
PERIOD_H1   60
PERIOD_H4   240
PERIOD_D1   1440
PERIOD_W1   10080
PERIOD_MN1  43200
You must use the numeric value of the timeframe that you want to use
when you set the TimeFrame' value with the indicator inputs.
**************************************************************************/
extern int TimeFrame = 0;
extern int Price=0;
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalEMA=9;
//---- indicator buffers
double MACD[];
double Signal[];
double HistoMACD[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
  int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MACD);
   SetIndexBuffer(1,Signal);
   SetIndexBuffer(2,HistoMACD);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   switch(TimeFrame)
   {
      case 1 : string TimeFrameStr="Period_M1"; break;
      case 5 : TimeFrameStr="Period_M5"; break;
      case 15 : TimeFrameStr="Period_M15"; break;
      case 30 : TimeFrameStr="Period_M30"; break;
      case 60 : TimeFrameStr="Period_H1"; break;
      case 240 : TimeFrameStr="Period_H4"; break;
      case 1440 : TimeFrameStr="Period_D1"; break;
      case 10080 : TimeFrameStr="Period_W1"; break;
      case 43200 : TimeFrameStr="Period_MN1"; break;
      default : TimeFrameStr="Current Timeframe";
   }
   short_name="MTF MACD("+TimeFrameStr+","+FastEMA+","+SlowEMA+","+SignalEMA+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"MTF_MACD");
   SetIndexLabel(1,"Signal");
   SetIndexLabel(2,"HistoMACD");
//----
   //SetIndexDrawBegin(0,SlowEMA);
   //SetIndexDrawBegin(1,SignalEMA);
   //SetIndexDrawBegin(2,SignalEMA);
//----
   
   return(0);
  }

 
//+------------------------------------------------------------------+
//| MTF_MACD_4_v1                                      |
//+------------------------------------------------------------------+
int start()
{
   datetime TimeArray[];
   int    i,limit,y=0,counted_bars=IndicatorCounted();
   
// Plot defined time frame on to current time frame
   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); 
   
   limit=Bars-counted_bars+TimeFrame/Period();
   for(i=0,y=0;i<limit;i++)
   {
   if (Time[i]<TimeArray[y]) y++;

/***********************************************************   
   Add your main indicator loop below.  You can add the full
      indicator code or you can just reference an existing
      indicator with its iValue or iCustom.
   Rule 1:  Add extern inputs above for all neccesary values   
   Rule 2:  Use 'TimeFrame' for the indicator time frame
   Rule 3:  Use 'y' for your indicator's shift value
 **********************************************************/ 
 
   MACD[i]=iCustom(NULL,TimeFrame,"MACD_4_v1",Price,FastEMA,SlowEMA,SignalEMA,0,y);
   Signal[i] = iCustom(NULL,TimeFrame,"MACD_4_v1",Price,FastEMA,SlowEMA,SignalEMA,1,y);
   HistoMACD[i] = iCustom(NULL,TimeFrame,"MACD_4_v1",Price,FastEMA,SlowEMA,SignalEMA,2,y);
   }
   return(0);
}
//+------------------------------------------------------------------+

Comments