info_Table_v0Satop_en
Download scriptThis 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.
//////////////////////////////////////////////////////////////////////
//
// 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