Better_H4_1

Download script
Author: Copyright � 2007, MetaQuotes Software Corp.
Better_H4_1

This tool is designed as a multi-timeframe technical indicator for MetaTrader. Its primary purpose is to provide a comprehensive overview of market trends by analyzing price data across different time horizons simultaneously, allowing you to see "the bigger picture" without switching between various charts manually.

How the Logic Works

The script functions by pulling and synchronizing data from three distinct timeframes: 5-minute intervals, 1-hour intervals, and 4-hour intervals. Rather than just showing you what is happening on your current chart, it looks deeper into these specific timeframes to calculate moving averages.

Key components of the logic include:

  • Time Synchronization: The tool identifies the exact moment in time for each bar on your current chart and "looks back" to find the corresponding candles on the 5-minute, 1-hour, and 4-hour charts. This ensures that the data being displayed is perfectly aligned with the current time.
  • Multi-Layered Analysis: For each of those three major timeframes, the script calculates three different types of Moving Averages (SMA). These averages are calculated based on different lengths:
    • Short-term trends (5 periods)
    • Medium-term trends (10 periods)
    • Longer-term trends (15 periods)
  • Visual Output: While the script processes a vast amount of background data from all these various timeframes, it specifically focuses on displaying the 4-hour timeframe's moving averages on your indicator window.

Summary for the User

Essentially, this script acts as a filter. It performs complex "heavy lifting" by scanning three different time periods (5m, 1h, and 4h) and calculating several moving averages for each. It then presents you with the specific results from the 4-hour analysis, helping you identify the underlying long-term momentum of the market while the script handles all the complicated cross-timeframe calculations automatically in the background.

Price Data Components
Series array that contains close prices for each bar
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
10 Views
0 Downloads
0 Favorites
Better_H4_1
//+------------------------------------------------------------------+
//|                                                   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+1);
        x2=iMA(SymbolName,PeriodMinutes5,10,0,MODE_SMA,PRICE_CLOSE,b5+1);
        x3=iMA(SymbolName,PeriodMinutes5,15,0,MODE_SMA,PRICE_CLOSE,b5+1);
      }
      if(b60>=0)
      {        
        x4=iMA(SymbolName,PeriodMinutes60,5,0,MODE_SMA,PRICE_CLOSE,b60+1);
        x5=iMA(SymbolName,PeriodMinutes60,10,0,MODE_SMA,PRICE_CLOSE,b60+1);
        x6=iMA(SymbolName,PeriodMinutes60,15,0,MODE_SMA,PRICE_CLOSE,b60+1);
      }       
      if(b240>=0)
      {             
        x7=iMA(SymbolName,PeriodMinutes240,5,0,MODE_SMA,PRICE_CLOSE,b240+1);
        x8=iMA(SymbolName,PeriodMinutes240,10,0,MODE_SMA,PRICE_CLOSE,b240+1);
        x9=iMA(SymbolName,PeriodMinutes240,15,0,MODE_SMA,PRICE_CLOSE,b240+1);
      }
	  VolBuffer1[i]=x7; 
 	  VolBuffer2[i]=x8;   
 	  VolBuffer3[i]=x9;      
  
  }
  
 
   
		

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

Comments