_TRO_Multi_Meter_MACrossOver_v1

Download script
_TRO_Multi_Meter_MACrossOver_v1

This script is a visual dashboard designed for MetaTrader users to monitor market trends across multiple timeframes simultaneously. Instead of forcing you to switch between different charts to see what the "big picture" looks like, it aggregates that information into a single, easy-to-read display on your current screen.

Core Functionality

The primary purpose of this tool is to track Moving Average Crossovers. In trading, when a fast-moving average crosses over a slow-moving average, it is often interpreted as a shift in momentum (e.g., a move from a downtrend to an uptrend).

This script performs the following logic automatically:

  • Multi-Timeframe Scanning: The tool monitors seven specific timeframes at once: 1 Minute (M1), 5 Minutes (M5), 15 Minutes (M15), 30 Minutes (M30), 1 Hour (H1), 4 Hours (H4), and Daily (D1).
  • Trend Identification: For every one of those timeframes, the script calculates two different moving averages. It compares them to see which is currently higher.
  • Visual Color Coding: To make this data instantly digestible, the script uses a "Traffic Light" system:
    • Lime (Green): Appears when the fast moving average is above the slow moving average, typically suggesting upward momentum.
    • Red: Appears when the fast moving average is below the slow moving average, typically suggesting downward momentum.
  • Dashboard Layout: The script draws a series of labels on your chart (usually in the top-right corner). It organizes these signals side-by-side so you can see the trend of every timeframe in one glance.

User Experience

From a user perspective, this acts as a "Status Board." By looking at the dashboard, you can quickly determine if the market is in agreement across all timeframes (e.g., all labels are Green) or if there is a conflict between short-term price action and long-term trends (e.g., M1 is Green but D1 is Red).

Technical Handling

The script is designed to be clean; it automatically manages its own visual elements, ensuring that the labels appear correctly on your chart and are properly removed when you take the indicator off the screen, leaving no "ghost" images or leftover text behind.

Indicators Used
Moving average indicator
12 Views
0 Downloads
0 Favorites
_TRO_Multi_Meter_MACrossOver_v1
//+------------------------------------------------------------------+ 
//|  _TRO_Multi_Meter_MACrossOver                                    | 
//|                                                                  | 
//|   Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne       |
//|                                                                  |
//|   PO BOX 43575, TUCSON, AZ 85733                                 |
//|                                                                  |
//|   GIFT AND DONATIONS ACCEPTED                                    | 
//|                                                                  |
//|   therumpldone@gmail.com                                         |  
//+------------------------------------------------------------------+ 

#property indicator_chart_window

extern bool Show_Heading = false;
 
extern string IndName = "MAX" ; // change

extern bool Corner_of_Chart_RIGHT_TOP = true;

extern int Shift_UP_DN =0; 
extern int Adjust_Side_to_side  = 20;

extern color BarLabel_color = LightBlue;
extern color CommentLabel_color = LightBlue;

//******************* 
// change inputs for your indicator 

extern int MA_Fast = 1;
extern int MA_Slow = 5;
extern int MA_MODE = 1;
extern int MA_PRICE_TYPE = 0;

//*******************



string Obj0001,Obj0002,Obj0003,Obj0004,Obj0005,Obj0006,Obj0007,Obj0008,Obj0009;  

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 


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

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

string LabelTime="";

if (LabelTime=="") {LabelTime=TimeToStr(TimeLocal(),TIME_SECONDS); }

   int    counted_bars=IndicatorCounted();
   
if ( Show_Heading) {         
    if (Corner_of_Chart_RIGHT_TOP == true)
    {  
    
   Obj0001 = "Numbers" + LabelTime ; 
           ObjectCreate(Obj0001, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0001, "    M1   M5  M15  M30   H1    H4   D1", 7, "Tahoma Narrow", BarLabel_color);
   ObjectSet(Obj0001, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0001, OBJPROP_XDISTANCE, 17+Adjust_Side_to_side);
   ObjectSet(Obj0001, OBJPROP_YDISTANCE, 28+Shift_UP_DN); 
   }
    if (Corner_of_Chart_RIGHT_TOP == false)
   { 
           ObjectCreate(Obj0001, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0001, "   M1     M5   M15   M30   H1    H4    D1", 7, "Tahoma Narrow", BarLabel_color);
   ObjectSet(Obj0001, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0001, OBJPROP_XDISTANCE, 17+Adjust_Side_to_side);
   ObjectSet(Obj0001, OBJPROP_YDISTANCE, 24+Shift_UP_DN); 
    } 
} // Show_Heading

 //*******************   change for  your indicator ********************
   //MAX Signals

   
   
    double MAX_M1 = iMA(Symbol(),1,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_m1 = iMA(Symbol(),1,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_M5 = iMA(Symbol(),5,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_m5 = iMA(Symbol(),5,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_M15 = iMA(Symbol(),15,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_m15 = iMA(Symbol(),15,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_M30 = iMA(Symbol(),30,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_m30 = iMA(Symbol(),30,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_H1 = iMA(Symbol(),60,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_h1 = iMA(Symbol(),60,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_H4 = iMA(Symbol(),240,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_h4 = iMA(Symbol(),240,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_D1 = iMA(Symbol(),1440,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
    double MAX_d1 = iMA(Symbol(),1440,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
   // double MAX_W1 = iMA(Symbol(),10080,MA_Fast,0,MA_MODE,MA_PRICE_TYPE,0);
   // double MAX_w1 = iMA(Symbol(),10080,MA_Slow,0,MA_MODE,MA_PRICE_TYPE,0);
    
    string M1_MAX= "",M5_MAX= "", M15_MAX= "", M30_MAX= "", H1_MAX= "", H4_MAX= "", D1_MAX= "",PRC1;
    color  color_MAXm1,color_MAXm5,color_MAXm15,color_MAXm30,color_MAXm60,color_MAXm240,color_MAXm1440;     
         
    
    if (MAX_M1 > MAX_m1) {M1_MAX= "-";color_MAXm1 = Lime; }
    if (MAX_M1 <= MAX_m1) {M1_MAX= "-";color_MAXm1 = Red; }
    
    if (MAX_M5 > MAX_m5) {M5_MAX= "-";color_MAXm5 = Lime; }
    if (MAX_M5 <= MAX_m5) {M5_MAX= "-";color_MAXm5 = Red; }
    
    if (MAX_M15 > MAX_m15) {M15_MAX= "-";color_MAXm15 = Lime; }
    if (MAX_M15 <= MAX_m15) {M15_MAX= "-";color_MAXm15 = Red; }
    
    if (MAX_M30 > MAX_m30) {M30_MAX= "-";color_MAXm30 = Lime; }
    if (MAX_M30 <= MAX_m30) {M30_MAX= "-";color_MAXm30 = Red; }
    
    if (MAX_H1 > MAX_h1) {H1_MAX= "-";color_MAXm60 = Lime; }
    if (MAX_H1 <= MAX_h1) {H1_MAX= "-";color_MAXm60 = Red; }
    
    if (MAX_H4 > MAX_h4) {H4_MAX= "-";color_MAXm240 = Lime; }
    if (MAX_H4 <= MAX_h4) {H4_MAX= "-";color_MAXm240 = Red; }
         
    if (MAX_D1 > MAX_d1) {D1_MAX= "-";color_MAXm1440 = Lime; }
    if (MAX_D1 <= MAX_d1) {D1_MAX= "-";color_MAXm1440 = Red; }
    

   Obj0002 = "SignalMAXM1t" + LabelTime ; 
           
           ObjectCreate(Obj0002, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0002,IndName, 7, "Tahoma Narrow",  BarLabel_color);  
   ObjectSet(Obj0002, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0002, OBJPROP_XDISTANCE, 155+Adjust_Side_to_side);
   ObjectSet(Obj0002, OBJPROP_YDISTANCE, 50+Shift_UP_DN);  

   Obj0003 = "SignalMAXM1" + LabelTime ;        
           ObjectCreate(Obj0003, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0003, M1_MAX, 40, "Tahoma Narrow",  color_MAXm1);
   ObjectSet(Obj0003, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0003, OBJPROP_XDISTANCE, 130+Adjust_Side_to_side);
   ObjectSet(Obj0003, OBJPROP_YDISTANCE, 20+Shift_UP_DN); 

   Obj0004 = "SignalMAXM5" + LabelTime ;          
           ObjectCreate(Obj0004, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0004, M5_MAX, 40, "Tahoma Narrow",  color_MAXm5);
   ObjectSet(Obj0004, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0004, OBJPROP_XDISTANCE, 110+Adjust_Side_to_side);
   ObjectSet(Obj0004, OBJPROP_YDISTANCE, 20+Shift_UP_DN); 
      
   Obj0005 = "SignalMAXM15" + LabelTime ; 
   ObjectCreate(Obj0005, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0005, M15_MAX, 40, "Tahoma Narrow",  color_MAXm15);
   ObjectSet(Obj0005, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0005, OBJPROP_XDISTANCE, 90+Adjust_Side_to_side);
   ObjectSet(Obj0005, OBJPROP_YDISTANCE, 20+Shift_UP_DN); 
      
   Obj0006 = "SignalMAXM30" + LabelTime ; 
   ObjectCreate(Obj0006, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0006, M30_MAX, 40, "Tahoma Narrow",  color_MAXm30);
   ObjectSet(Obj0006, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0006, OBJPROP_XDISTANCE, 70+Adjust_Side_to_side);
   ObjectSet(Obj0006, OBJPROP_YDISTANCE, 20+Shift_UP_DN); 

   Obj0007 = "SignalMAXM60" + LabelTime ;      
           ObjectCreate(Obj0007, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0007, H1_MAX, 40, "Tahoma Narrow",  color_MAXm60);
   ObjectSet(Obj0007, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0007, OBJPROP_XDISTANCE, 50+Adjust_Side_to_side);
   ObjectSet(Obj0007, OBJPROP_YDISTANCE, 20+Shift_UP_DN); 

   Obj0008 = "SignalMAXM240" + LabelTime ;          
           ObjectCreate(Obj0008, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0008, H4_MAX, 40, "Tahoma Narrow",  color_MAXm240);
   ObjectSet(Obj0008, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0008, OBJPROP_XDISTANCE, 30+Adjust_Side_to_side);
   ObjectSet(Obj0008, OBJPROP_YDISTANCE, 20+Shift_UP_DN);

   Obj0009 = "SignalMAXM1440" + LabelTime ;    
           ObjectCreate(Obj0009, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Obj0009, D1_MAX, 40, "Tahoma Narrow",  color_MAXm1440);
   ObjectSet(Obj0009, OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
   ObjectSet(Obj0009, OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
   ObjectSet(Obj0009, OBJPROP_YDISTANCE, 20+Shift_UP_DN);
  
 //----
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
ObjectsDeleteAll(0,OBJ_HLINE);
ObjectsDeleteAll(0,OBJ_TEXT);
ObjectsDeleteAll(0,OBJ_LABEL);
deleteObject(); 

//----
   return(0);
  }
  
void deleteObject()
  { 
ObjectDelete(Obj0001);  
ObjectDelete(Obj0002); 
ObjectDelete(Obj0003); 
ObjectDelete(Obj0004); 
ObjectDelete(Obj0005); 
ObjectDelete(Obj0006); 
ObjectDelete(Obj0007); 
ObjectDelete(Obj0008); 
ObjectDelete(Obj0009); 
 
  }

Comments