info_Table_v0Satop_en

Download script
Author:
info_Table_v0Satop_en

This script functions as a multi-timeframe signal dashboard for the MetaTrader 4 platform. Instead of looking at just one chart at a time, it provides a comprehensive overview of various technical indicators across nine different timeframes simultaneously, allowing traders to see market trends from the minute level all the way up to monthly levels in a single glance.

Dashboard Overview

The script creates a visual grid on your trading chart. It organizes data into rows and columns:

  • Columns: Represent different timeframes (M1, M5, M15, M30, H1, H4, D1, W1, and MN).
  • Rows: Represent five distinct technical analysis methods: 2 Moving Averages (2MA), Relative Strength Index (RSI), Commodity Channel Index (CCI), Bar Price Action, and Gaps.

Indicator Logic

The dashboard monitors the following logic for every timeframe listed:

1. 2 Moving Averages (2MA) The script compares two different moving averages.

  • Buy Signal: Triggered when the faster moving average is above the slower one.
  • Sell Signal: Triggered when the faster moving average falls below the slower one.

2. Relative Strength Index (RSI) This monitors momentum and overbought/oversold conditions relative to a midpoint of 50. It looks at the current RSI value compared to the previous value to determine direction.

  • Buy Signal: Triggered when the RSI is above 50 and rising, or if it is below 50 but moving upwards.
  • Sell Signal: Triggered when the RSI is above 50 and falling, or if it is below 50 and moving downwards.

3. Commodity Channel Index (CCI) This measures price deviation from an average. The script specifically looks for signals outside of the standard "neutral" range (-100 to 100).

  • Buy Signal: Triggered when the CCI is above 100 and rising, or if it is below -100 and moving upwards.
  • Sell Signal: Triggered when the CCI is below -100 and falling, or if it is above 100 and moving downwards.
  • Neutral: If the CCI is between -100 and 100, no signal is displayed.

4. Bar Price Action This is a simple comparison of the current candle's price movement.

  • Buy Signal: Triggered if the current price is lower than the opening price (bullish sentiment).
  • Sell Signal: Triggered if the current price is higher than the opening price (bearish sentiment).

5. Gap Analysis This monitors the "Gap" between the current open price and the previous candle's closing price.

  • Buy Signal: Triggered if there is a positive gap.
  • Sell Signal: Triggered if there is a negative gap.
  • No Signal: Displayed if the price opens exactly where the previous candle closed.

Visual Presentation

The dashboard uses color-coded symbols (arrows) to communicate these signals instantly:

  • Lime/Green: Indicates a potential Buy signal.
  • Red: Indicates a potential Sell signal.
  • Medium Purple: Indicates no significant signal is detected based on the criteria.

By consolidating this data, the script allows you to identify "confluence"—situations where multiple indicators and multiple timeframes align in the same direction at once.

Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each bar
Indicators Used
Moving average indicatorRelative strength indexCommodity channel index
10 Views
0 Downloads
0 Favorites
info_Table_v0Satop_en
//////////////////////////////////////////////////////////////////////
//
//                                                  signalTable.mq4  
//
//////////////////////////////////////////////////////////////////////
#property copyright ""
#property link      ""

#property indicator_chart_window

extern string ____1____ = "MA settings";
extern int period_MA1        = 5;
extern int ma_method_MA1     = 0;
extern int applied_price_MA1 = 0;
extern int period_MA2        = 12;
extern int ma_method_MA2     = 0;
extern int applied_price_MA2 = 0;

extern string ____2____ = "RSI settings";
extern int period_rsi        =21;
extern int applied_price_rsi =0;

extern string ____3____ = "CCI  settings";
extern int period_CCI        =14;
extern int applied_price_CCI =0;

extern string ____4____ = "Arrow codes";
extern int symbolCodeBuy=221, 
           symbolCodeSell=222, 
           symbolCodeNoSignal=175;

extern string ____5____ = "color settings";
extern color noSignalColor=MediumPurple,
             BayColor = Lime,
             SellColor = Red,
             textColor=Gold;
                        
extern string ___6___ = "position on the chart";            
extern int scaleX=20,
           scaleY=20,
           offsetX=35,
           offsetY=20,
           fontSize=20,
           corner=1;            
            
int period[]={1,5,15,30,60,240,1440,10080,43200};  
string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN"},
       // ñîçäàåì åùå îäèí ìàññèâ ñ íàçâàíèÿìè èíäèêàòîðîâ
       signalNameString[]={"2MA","RSI","CCI","Bar","Gap"};

//////////////////////////////////////////////////////////////////////
//
// init()          
//
//////////////////////////////////////////////////////////////////////
int init()
{
   // òàáëèöà ñèãíàëîâ
   for(int x=0;x<9;x++)
      for(int y=0;y<5;y++)
      {
         ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0);
         // èçìåíÿåì óãîë ïðèâÿçêè
         ObjectSet("signal"+x+y,OBJPROP_CORNER,corner);
         ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
         ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+20);
         ObjectSetText("signal"+x+y,CharToStr(symbolCodeNoSignal),
                       fontSize,"Wingdings",noSignalColor);
      }
  
  // íàçâàíèÿ òàéìôðåéìîâ    
  for(x=0;x<9;x++)
  {
      ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0);   
      // èçìåíÿåì óãîë ïðèâÿçêè      
      ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner);
      ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+offsetX);
      ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-10);
      ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",textColor);
  }
  
  // íàçâàíèÿ èíäèêàòîðîâ 
  for(y=0;y<5;y++)
  {
      ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);   
      // èçìåíÿåì óãîë ïðèâÿçêè      
      ObjectSet("textSignal"+y,OBJPROP_CORNER,corner);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(scaleY)+offsetY+8);
      ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",textColor);      
  }
  return(0);
}
  
  
  //
//  deinit()                       
//
//////////////////////////////////////////////////////////////////////
int deinit()
{
   // ïðè óäàëåíèè íàøåãî èíäèêàòîðà íóæíî óäàëèòü âñå îáúåêòû,
   // êîòîðûå ìû óæå ñîçäàëè
   for(int x=0;x<9;x++)
      for(int y=0;y<9;y++)
      {

 //  ObjectsDeleteAll();
 ObjectDelete("signal"+x+y);
 ObjectDelete("textPeriod"+x);
 ObjectDelete("textSignal"+y);
 ObjectDelete("signal"+x+"0");
 ObjectDelete("signal"+x+"1");
 ObjectDelete("signal"+x+"2");
 ObjectDelete("signal"+x+"3");
 ObjectDelete("signal"+x+"4");
  } 
   return(0);
}
///
  
  
  
  
  
  
int start()
{
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--MA--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   for(int x=0;x<9;x++)
   {
      double MA1 = iMA(Symbol(),period[x],period_MA1,0,ma_method_MA1,applied_price_MA1,0);
      double MA2 = iMA(Symbol(),period[x],period_MA2,0,ma_method_MA2,applied_price_MA2,0);
      if(MA1>MA2)
        ObjectSetText("signal"+x+"0",CharToStr(symbolCodeBuy),fontSize,"Wingdings",BayColor);
      // ñèãíàë íà ïðîäàæó   
      else if(MA1<MA2) 
        ObjectSetText("signal"+x+"0",CharToStr(symbolCodeSell),fontSize,"Wingdings",SellColor);   
   }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--RSI--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   for(x=0;x<9;x++)
   {
      double rsi = iRSI(Symbol(),period[x],period_rsi,applied_price_rsi,0);
      double rsi_1 = iRSI(Symbol(),period[x],period_rsi,applied_price_rsi,1);
      double del = rsi-rsi_1;
      // ñèãíàë 
      if(rsi>50&&del>0)
        ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,"Wingdings",BayColor);
      if(rsi>50&&del<0)
        ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,"Wingdings",BayColor);        
      // ñèãíàë íà ïðîäàæó   
      else if(rsi<50&&del<0) 
        ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,"Wingdings",SellColor);
      else if(rsi<50&&del>0) 
        ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,"Wingdings",SellColor);           
   }
   
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--CCI--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      for(x=0;x<9;x++)
   {
      double CCI =iCCI(Symbol(),period[x],period_CCI,applied_price_CCI,0);
      double CCI_1 =iCCI(Symbol(),period[x],period_CCI,applied_price_CCI,1);
      double der =CCI-CCI_1;
      if(CCI>100&&der>0)
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,"Wingdings",BayColor);
      if(CCI>100&&der<0)
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,"Wingdings",BayColor);
        
      if(CCI<100&&CCI>-100&&der>0)
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,"Wingdings",noSignalColor);
      if(CCI<100&&CCI>-100&&der<0)
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,"Wingdings",noSignalColor);
        
        
      // ñèãíàë íà ïðîäàæó   
      else if(CCI<-100&&der<0) 
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,"Wingdings",SellColor);
      else if(CCI<-100&&der>0) 
        ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,"Wingdings",SellColor);         
   }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--Bar--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   for(x=0;x<9;x++)
   {
    double x00 =iOpen(Symbol(),period[x],0)-iClose(Symbol(),period[x],0);
      // ñèãíàë 
      if(x00<0)
        ObjectSetText("signal"+x+"3",CharToStr(symbolCodeBuy),fontSize,"Wingdings",BayColor);
      // ñèãíàë íà ïðîäàæó   
      else if(x00>0) 
        ObjectSetText("signal"+x+"3",CharToStr(symbolCodeSell),fontSize,"Wingdings",SellColor);   
   } 
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--Gep--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   
      for(x=0;x<9;x++)
   {
      
    double x0 =iOpen(Symbol(),period[x],0)-iClose(Symbol(),period[x],1);


      // ñèãíàë íà ïîêóïêó   
      if(x0>0)
      ObjectSetText("signal"+x+"4",CharToStr(symbolCodeBuy),fontSize,"Wingdings",BayColor);      
      if(x0<0)
      ObjectSetText("signal"+x+"4",CharToStr(symbolCodeSell),fontSize,"Wingdings",SellColor);
      if(x0==0)
      ObjectSetText("signal"+x+"4",CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor);            
   }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
   
     
   return(0);
}

//////////////////////////////////////////////////////////////////////

Comments