This tool is designed as a multi-timeframe technical analysis indicator for the MetaTrader platform. Its primary purpose is to provide traders with a high-level overview of price trends by aggregating data from different time scales simultaneously into a single visual display.
Core Logic and Functionality
The script functions by performing a "coordinated lookback" across three distinct periods: 5-minute, 1-hour (60-minute), and 4-hour (240-minute) charts. Instead of showing you what is happening on just the current chart you are viewing, it scans deeper into the market structure to identify broader trends.
How it works step-by-step:
- Time Synchronization: The indicator takes a specific point in time from your current chart and "maps" it back to the corresponding moments on the 5-minute, 1-hour, and 4-hour charts. This ensures that the data points being compared are perfectly aligned in time.
- Data Extraction: For each of these three timeframes, the script calculates moving averages (which smooth out price fluctuations) over varying lengths (specifically 5, 10, and 15 periods). These averages help filter out "market noise" to reveal the underlying direction of the price.
- Trend Visualization: The final output focuses on the results from the larger timeframes (the 1-hour and 4-hour data). It plots these moving averages as three distinct lines on a separate window in your trading platform.
Purpose for the Trader
By consolidating these specific indicators into one view, the script allows you to see the "big picture" without having to constantly switch between different tabs or timeframes. It highlights the momentum of the higher-order trends, helping you understand if the current market movement is supported by larger historical cycles or if it is merely a short-term fluctuation.
//+------------------------------------------------------------------+
//| 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]=x7;
VolBuffer2[i]=x8;
VolBuffer3[i]=x9;
}
return(0);
}
//+------------------------------------------------------------------+
Comments