_MTF_Fractal

Download script
Author:
_MTF_Fractal

This script is designed to enhance your trading charts by identifying specific price patterns known as "Fractals" across multiple timeframes simultaneously. While standard indicators usually only show data for the specific chart you are currently viewing, this tool allows you to visualize key market turning points from higher timeframes on your current screen.

Core Functionality

The primary purpose of this indicator is to provide a "Multi-Timeframe" (MTF) view. It enables you to see significant price結構 (structures) from different periods—such as Daily, Weekly, or Hourly charts—without having to constantly switch between different windows. It essentially "projects" the significant highs and lows of a larger timeframe onto your smaller, more active trading chart.

How the Logic Works

The script operates through three main processes:

1. Timeframe Synchronization The tool begins by looking at a specific higher timeframe that you define in the settings (for example, if you are trading on a 1-minute chart, you can set the indicator to look at the 60-minute/Hourly chart). It creates a bridge between these two different scales of time.

2. Pattern Identification The logic specifically scans for "Fractals." In technical analysis, a Fractal represents a peak or a valley where the price has reached a high or low point relative to the surrounding candles. The script identifies two distinct types of these points:

  • Upper Fractals: Representing potential resistance levels (marked in red).
  • Lower Fractals: Representing potential support levels (marked in blue).

3. Dynamic Mapping Instead of just showing you where a fractal happened in the past, the script uses a smart calculation to map those high and low points accurately onto your current view. It ensures that as time progresses, the symbols remain correctly aligned with the historical price data of the higher timeframe you selected.

Visual Output

Once active, the indicator will place visual arrows directly on your chart:

  • Blue Arrows highlight the identified lower fractal points (support).
  • Red Arrows highlight the identified upper fractal points (resistance).

By using this logic, traders can better understand the "big picture" of market trends while focusing on short-term execution, helping to identify major zones where the price may stall or reverse based on higher-level market behavior.

Indicators Used
Fractals
Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
_MTF_Fractal
//+------------------------------------------------------------------+
//|                                                 MTF_Fractals.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      "http://www.forex-tsd.com"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- 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=60;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicator line
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,119);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,119);
//---- 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";
     }
   IndicatorShortName("Fractals "+TimeFrameStr);
   return(0);
  }
//----

//+------------------------------------------------------------------+
//| MTF Fractals                                                     |
//+------------------------------------------------------------------+
int start()
  {
   datetime TimeArray[];
   int    i,limit,y=0,counted_bars=IndicatorCounted();
// Plot defined timeframe on to current timeframe   
   if(ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame)<=0)
      return(0);
//----
   limit=Bars-counted_bars;
   if(counted_bars==0)
     {
      ArrayInitialize(ExtMapBuffer1,0);
      ArrayInitialize(ExtMapBuffer2,0);
      limit--;
     }
   for(i=0,y=0;i<limit;i++)
     {
      if(y<ArraySize(TimeArray) && Time[i]<TimeArray[y]) y++;
/***********************************************************   
   Add your main indicator loop below.  You can reference an existing
   indicator with its iName  or iCustom.
   Rule 1:  Add extern inputs above for all neccesary values   
   Rule 2:  Use 'TimeFrame' for the indicator timeframe
   Rule 3:  Use 'y' for the indicator's shift value
 **********************************************************/
      ExtMapBuffer1[i]=iFractals(NULL,TimeFrame,1,y);
      ExtMapBuffer2[i]=iFractals(NULL,TimeFrame,2,y);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments