_2523MTF_MACD_4_v1

Download script
Author: Copyright � 2006, TrendLaboratory
_2523MTF_MACD_4_v1

This tool is designed to help traders analyze market trends by combining data from multiple timeframes into a single view. It specifically focuses on the MACD (Moving Average Convergence Divergence), a popular momentum indicator used to identify changes in the strength, direction, and speed of price movements.

Multi-Timeframe Integration

The core functionality of this script is its "Multi-Timeframe" (MTF) capability. Typically, if you want to see how a daily trend is affecting your 15-minute chart, you would have to switch back and forth between different windows. This script automates that process by pulling the MACD data from a higher timeframe (such as Daily or Weekly) and displaying it directly on your current active chart.

How It Works

The logic follows a three-step process to provide you with visual information:

  1. Data Retrieval: The script looks at a specific timeframe chosen by the user (e.g., 4-hour, Daily, or Monthly). It calculates the MACD values based on standard settings—specifically using "Fast" and "Slow" averages to determine momentum.
  2. Synchronization: Because higher timeframes contain much more data than lower ones, the script performs a synchronization calculation. It aligns the historical data of the larger timeframe with the current candles on your smaller timeframe, ensuring that the information you see is chronologically accurate.
  3. Visual Output: The script plots three distinct components into a separate sub-window on your chart:
    • The MACD Line: Shows the primary relationship between moving averages.
    • The Signal Line: Acts as a smoothed average of the MACD, helping to identify potential entry or exit points.
    • The Histogram: A visual representation of the difference between the MACD and Signal lines, making it easier to see whether momentum is accelerating or decelerating.

Key Benefits for the User

  • Simplified Analysis: It removes the need to juggle multiple charts simultaneously to understand the broader market context.
  • Customizable Parameters: You can adjust the specific speeds (EMA values) and the timeframe of the data being pulled to match your personal trading strategy.
  • Real-Time Updates: The script constantly updates as new price information arrives, providing a live look at how high-level trends are impacting current price action.
Miscellaneous
Implements a curve of type %1
14 Views
0 Downloads
0 Favorites
_2523MTF_MACD_4_v1
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                                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