Author: Copyright � 2007, MetaQuotes Software Corp.
Better_H1

This tool is designed to provide traders with a multi-timeframe perspective on market trends by consolidating data from different periods into a single visual display. Rather than requiring you to switch between various charts manually, this script automatically syncs and displays significant trend information from three distinct timeframes: 5-minute, 1-hour, and 4-hour intervals.

How the Logic Works

The core functionality of the script revolves around Multi-Timeframe Analysis (MTF). Here is a step-by-step breakdown of the logic:

  • Time Synchronization: The script looks at the current chart's historical data. For every specific point in time on your current screen, it "looks back" to find the corresponding candles on the 5-minute, 1-hour, and 4-hour charts. This ensures that the data you see is perfectly aligned with the time currently displayed on your screen.
  • Moving Average Calculations: For each of those three timeframes, the script calculates several "Simple Moving Averages" (SMA) using different lengths (5, 10, and 15 periods). These averages are used to smooth out market noise and identify the underlying direction of the price.
  • Data Extraction: While the script processes data for all three timeframes, it specifically selects and isolates the moving average values from the 1-hour timeframe to plot on your chart.
  • Visual Output: The final result is a dedicated window containing three distinct lines (colored Lime, Aqua, and White). These lines represent different smoothed price trends from the 1-hour timeframe, helping you visualize how the "bigger picture" of the market is moving in relation to your smaller timeframe entries.

Summary for the User

In simple terms, this script acts as a "trend aggregator." It takes complex calculations happening on hourly and 4-hourly charts and simplifies them into a readable set of lines on your current view. This allows you to see if the medium-term trend is moving in your favor without needing to monitor multiple separate windows simultaneously.

Price Data Components
Series array that contains close prices for each bar
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
9 Views
0 Downloads
0 Favorites
Better_H1
//+------------------------------------------------------------------+
//|                                                   Better_MA.mq4  |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Aqua
#property indicator_color3 White



extern int NrBars=1000;

string SymbolName;
int PeriodMinutes1=0;
int PeriodMinutes5=PERIOD_M5;
int PeriodMinutes60=PERIOD_H1;
int PeriodMinutes240=PERIOD_H4;


//---- buffers
double VolBuffer1[];
double VolBuffer2[];
double VolBuffer3[];
double x0,x1,x2,x3,x4,x5,x6,x7,x8,x9;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|

int init()
  {
  

    SymbolName = Symbol();


   IndicatorBuffers(3);
   
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0, VolBuffer1);

   SetIndexEmptyValue(0,EMPTY_VALUE);
   
   SetIndexStyle(1,DRAW_LINE,0,1);
   SetIndexBuffer(1, VolBuffer2);

   SetIndexEmptyValue(1,EMPTY_VALUE);
   
   SetIndexStyle(2,DRAW_LINE,0,1);
   SetIndexBuffer(2, VolBuffer3);

   SetIndexEmptyValue(2,EMPTY_VALUE);

   return(0);
  }


//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {

   for (int i=NrBars-1;i>=0;i--)
      {
      datetime time1=iTime(SymbolName,PeriodMinutes1,i);
      
      int b5=iBarShift(SymbolName,PeriodMinutes5,time1,true);
      int b60=iBarShift(SymbolName,PeriodMinutes60,time1,true);
      int b240=iBarShift(SymbolName,PeriodMinutes240,time1,true);
    

      if(b5>=0)
      {
        x0=iClose(SymbolName,PeriodMinutes5,b5);      
        x1=iMA(SymbolName,PeriodMinutes5,5,0,MODE_SMA,PRICE_CLOSE,b5);
        x2=iMA(SymbolName,PeriodMinutes5,10,0,MODE_SMA,PRICE_CLOSE,b5);
        x3=iMA(SymbolName,PeriodMinutes5,15,0,MODE_SMA,PRICE_CLOSE,b5);
      }
      if(b60>=0)
      {        
        x4=iMA(SymbolName,PeriodMinutes60,5,0,MODE_SMA,PRICE_CLOSE,b60);
        x5=iMA(SymbolName,PeriodMinutes60,10,0,MODE_SMA,PRICE_CLOSE,b60);
        x6=iMA(SymbolName,PeriodMinutes60,15,0,MODE_SMA,PRICE_CLOSE,b60);
      }       
      if(b240>=0)
      {             
        x7=iMA(SymbolName,PeriodMinutes240,5,0,MODE_SMA,PRICE_CLOSE,b240);
        x8=iMA(SymbolName,PeriodMinutes240,10,0,MODE_SMA,PRICE_CLOSE,b240);
        x9=iMA(SymbolName,PeriodMinutes240,15,0,MODE_SMA,PRICE_CLOSE,b240);
      }
	  VolBuffer1[i]=x4; 
 	  VolBuffer2[i]=x5;   
 	  VolBuffer3[i]=x6;      
  
  }
  
 
   
		

   
   return(0);
  }
//+------------------------------------------------------------------+

Comments