This script is designed as an on-screen information dashboard for the MetaTrader platform. Instead of drawing lines or arrows on your price chart, it functions like a "heads-up display" (HUD), providing you with real-time market statistics and data points in a neatly organized text format on the corner of your screen.
Core Functionality
The logic follows a specific sequence to gather market data and present it to the user:
1. Price Tracking The script identifies the current market price using an Exponential Moving Average (EMA). It then places this price as a primary label on your chart, allowing you to see the active value clearly without looking at the y-axis.
2. Volatility and Range Analysis The tool performs several calculations based on daily historical data:
- Range Calculations: It looks back at the previous day’s high and low price to determine the total movement range.
- Multi-Period Averaging: The script calculates the average range across multiple timeframes (specifically looking at 1, 5, 10, and 20-day windows). It then blends these into a single "Daily Average" value. This helps you understand how much the asset typically moves compared to its recent history.
3. Real-Time Market Statistics The script constantly monitors the following live data points:
- Spread: Shows the difference between the buy and sell price.
- Pips to Open: Calculates the distance in pips from the current market price back to the daily opening price.
- High to Low: Tracks the total price movement (range) of the current trading day.
- Daily Average Comparison: It compares the current average range against yesterday's range, using color coding to indicate whether the current volatility is higher or lower than usual.
Visual Customization
The logic includes built-in "switches" that allow you to customize how this information appears on your screen:
- Visibility Toggles: You can choose to show or hide the price, the extra details (spread, pips, etc.), and the size of the text.
- Dynamic Positioning: The script includes logic to shift the labels up or down and side-to-side so that they do not overlap with other indicators or chart elements.
- Smart Formatting: It uses conditional coloring—changing text from blue to red based on whether the market is currently trending above or below the opening price, or if volatility is expanding or contracting.
Summary for the User
Essentially, this script acts as a professional data summary tool. It takes complex background calculations—like multi-day moving averages and range comparisons—and simplifies them into a clean, readable text box. This allows you to monitor spread, pips, and historical volatility at a glance while you trade.
//+------------------------------------------------------------------+
//| #Signal_Bars_v3_Daily.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property link " cja "
#property indicator_chart_window
extern bool Corner_of_Chart_RIGHT_TOP = true;
extern bool Show_Price = true;
extern bool Show_Xtra_Details = true;
extern bool Show_Smaller_Size = true;
extern int Shift_UP_DN =0;
extern int Adjust_Side_to_side = 20;
extern color BarLabel_color = Navy;
extern color CommentLabel_color = Navy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll(0,OBJ_LABEL);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//*****************************************************************************************************
//Info
string PRC1;
color PriceColor;
PriceColor = Blue;
double Price1 = iMA(Symbol(),0,1,0,MODE_EMA,PRICE_CLOSE,0);
PRC1 = DoubleToStr(Price1,Digits);
if (Show_Smaller_Size == false)
{
if (Show_Price == true)
{
ObjectCreate("Signalprice", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Signalprice",""+PRC1+"", 33, "Arial", PriceColor);
ObjectSet("Signalprice", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("Signalprice", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("Signalprice", OBJPROP_YDISTANCE, 58+Shift_UP_DN);
}}
if (Show_Smaller_Size == true)
{
if (Show_Price == true)
{
ObjectCreate("Signalprice", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Signalprice",""+PRC1+"", 15, "Arial", PriceColor);
ObjectSet("Signalprice", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("Signalprice", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("Signalprice", OBJPROP_YDISTANCE, 60+Shift_UP_DN);
}}
int R1=0,R5=0,R10=0,R20=0,RAvg=0,i=0;
R1 = (iHigh(NULL,PERIOD_D1,1)-iLow(NULL,PERIOD_D1,1))/Point;
for(i=1;i<=5;i++)
R5 = R5 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
for(i=1;i<=10;i++)
R10 = R10 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
for(i=1;i<=20;i++)
R20 = R20 + (iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point;
R5 = R5/5;
R10 = R10/10;
R20 = R20/20;
RAvg = (R1+R5+R10+R20)/4;
string HI="",LO="",SPREAD="",PIPS="",DAV="",HILO="",PRC,Pips="",Av="",AV_Yest="";
color color_pip,color_av;
double OPEN = iOpen(NULL,1440,0);
double CLOSE = iClose(NULL,1440,0);
double SPRD = (Ask - Bid)/Point;
double High_Today = iHigh(NULL,1440,0);
double Low_Today = iLow(NULL,1440,0);
PIPS = DoubleToStr((CLOSE-OPEN)/Point,0);
SPREAD = (DoubleToStr(SPRD,Digits-4));
DAV = (DoubleToStr(RAvg,Digits-4));
AV_Yest = (iHigh(NULL,PERIOD_D1,1)-iLow(NULL,PERIOD_D1,1))/Point;
HILO = DoubleToStr((High_Today-Low_Today)/Point,0);
if (CLOSE >= OPEN) {Pips= "-";color_pip = Blue; }
if (CLOSE < OPEN) {Pips= "-";color_pip = Red; }
if (DAV > AV_Yest) {Av= "-";color_av = Blue; }
if (DAV < AV_Yest) {Av= "-";color_av = Red; }
if (Show_Smaller_Size == false)
{
if (Show_Xtra_Details == true)
{
if (Show_Price == true)
{
ObjectCreate("MMLEVELS7", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS7","Spread", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS7", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS7", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS7", OBJPROP_YDISTANCE, 100+Shift_UP_DN);
ObjectCreate("MMLEVELS8", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS8",""+SPREAD+"", 12, "Arial Bold", Blue);
ObjectSet("MMLEVELS8", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS8", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS8", OBJPROP_YDISTANCE, 100+Shift_UP_DN);
ObjectCreate("MMLEVELS9", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS9","Pips to Open", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS9", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS9", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS9", OBJPROP_YDISTANCE, 115+Shift_UP_DN);
ObjectCreate("MMLEVELS10", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS10",""+PIPS+"", 12, "Arial Bold", color_pip);
ObjectSet("MMLEVELS10", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS10", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS10", OBJPROP_YDISTANCE, 115+Shift_UP_DN);
ObjectCreate("MMLEVELS11", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS11","Hi to Low", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS11", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS11", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS11", OBJPROP_YDISTANCE, 130+Shift_UP_DN);
ObjectCreate("MMLEVELS12", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS12",""+HILO+"", 12, "Arial Bold", Blue);
ObjectSet("MMLEVELS12", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS12", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS12", OBJPROP_YDISTANCE, 130+Shift_UP_DN);
ObjectCreate("MMLEVELS13", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS13","Daily Av", 12, "Arial",CommentLabel_color);
ObjectSet("MMLEVELS13", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS13", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS13", OBJPROP_YDISTANCE, 145+Shift_UP_DN);
ObjectCreate("MMLEVELS14", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS14",""+DAV+"", 12, "Arial Bold", color_av);
ObjectSet("MMLEVELS14", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS14", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS14", OBJPROP_YDISTANCE, 145+Shift_UP_DN);
}}}
//*****************************************************************
//Shift if price not wanted
if (Show_Smaller_Size == false)
{
if (Show_Xtra_Details == true)
{
if (Show_Price == false)
{
ObjectCreate("MMLEVELS7", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS7","Spread", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS7", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS7", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS7", OBJPROP_YDISTANCE, 60+Shift_UP_DN);
ObjectCreate("MMLEVELS8", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS8",""+SPREAD+"", 12, "Arial Bold", Blue);
ObjectSet("MMLEVELS8", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS8", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS8", OBJPROP_YDISTANCE, 60+Shift_UP_DN);
ObjectCreate("MMLEVELS9", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS9","Pips to Open", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS9", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS9", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS9", OBJPROP_YDISTANCE, 75+Shift_UP_DN);
ObjectCreate("MMLEVELS10", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS10",""+PIPS+"", 12, "Arial Bold", color_pip);
ObjectSet("MMLEVELS10", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS10", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS10", OBJPROP_YDISTANCE, 75+Shift_UP_DN);
ObjectCreate("MMLEVELS11", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS11","Hi to Low", 12, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS11", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS11", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS11", OBJPROP_YDISTANCE, 90+Shift_UP_DN);
ObjectCreate("MMLEVELS12", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS12",""+HILO+"", 12, "Arial Bold", Blue);
ObjectSet("MMLEVELS12", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS12", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS12", OBJPROP_YDISTANCE, 90+Shift_UP_DN);
ObjectCreate("MMLEVELS13", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS13","Daily Av", 12, "Arial",CommentLabel_color);
ObjectSet("MMLEVELS13", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS13", OBJPROP_XDISTANCE, 45+Adjust_Side_to_side);
ObjectSet("MMLEVELS13", OBJPROP_YDISTANCE, 105+Shift_UP_DN);
ObjectCreate("MMLEVELS14", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS14",""+DAV+"", 12, "Arial Bold", color_av);
ObjectSet("MMLEVELS14", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS14", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS14", OBJPROP_YDISTANCE, 105+Shift_UP_DN);
}}}
//***********************************************************************
//Smaller type option
if (Show_Smaller_Size == true)
{
if (Show_Xtra_Details == true)
{
if (Show_Price == true)
{
ObjectCreate("MMLEVELS7", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS7","Spread", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS7", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS7", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS7", OBJPROP_YDISTANCE, 80+Shift_UP_DN);
ObjectCreate("MMLEVELS8", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS8",""+SPREAD+"", 9, "Arial Bold", Blue);
ObjectSet("MMLEVELS8", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS8", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS8", OBJPROP_YDISTANCE, 80+Shift_UP_DN);
ObjectCreate("MMLEVELS9", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS9","Pips to Open", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS9", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS9", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS9", OBJPROP_YDISTANCE, 95+Shift_UP_DN);
ObjectCreate("MMLEVELS10", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS10",""+PIPS+"", 9, "Arial Bold", color_pip);
ObjectSet("MMLEVELS10", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS10", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS10", OBJPROP_YDISTANCE, 95+Shift_UP_DN);
ObjectCreate("MMLEVELS11", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS11","Hi to Low", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS11", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS11", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS11", OBJPROP_YDISTANCE, 110+Shift_UP_DN);
ObjectCreate("MMLEVELS12", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS12",""+HILO+"", 9, "Arial Bold", Blue);
ObjectSet("MMLEVELS12", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS12", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS12", OBJPROP_YDISTANCE, 110+Shift_UP_DN);
ObjectCreate("MMLEVELS13", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS13","Daily Av", 9, "Arial",CommentLabel_color);
ObjectSet("MMLEVELS13", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS13", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS13", OBJPROP_YDISTANCE, 125+Shift_UP_DN);
ObjectCreate("MMLEVELS14", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS14",""+DAV+"", 9, "Arial Bold", color_av);
ObjectSet("MMLEVELS14", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS14", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS14", OBJPROP_YDISTANCE, 125+Shift_UP_DN);
}}}
//****************************************************************
// Shift if Price not needed
if (Show_Smaller_Size == true)
{
if (Show_Xtra_Details == true)
{
if (Show_Price == false)
{
ObjectCreate("MMLEVELS7", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS7","Spread", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS7", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS7", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS7", OBJPROP_YDISTANCE, 60+Shift_UP_DN);
ObjectCreate("MMLEVELS8", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS8",""+SPREAD+"", 9, "Arial Bold", Blue);
ObjectSet("MMLEVELS8", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS8", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS8", OBJPROP_YDISTANCE, 60+Shift_UP_DN);
ObjectCreate("MMLEVELS9", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS9","Pips to Open", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS9", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS9", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS9", OBJPROP_YDISTANCE, 75+Shift_UP_DN);
ObjectCreate("MMLEVELS10", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS10",""+PIPS+"", 9, "Arial Bold", color_pip);
ObjectSet("MMLEVELS10", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS10", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS10", OBJPROP_YDISTANCE, 75+Shift_UP_DN);
ObjectCreate("MMLEVELS11", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS11","Hi to Low", 9, "Arial", CommentLabel_color);
ObjectSet("MMLEVELS11", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS11", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS11", OBJPROP_YDISTANCE, 90+Shift_UP_DN);
ObjectCreate("MMLEVELS12", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS12",""+HILO+"", 9, "Arial Bold", Blue);
ObjectSet("MMLEVELS12", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS12", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS12", OBJPROP_YDISTANCE, 90+Shift_UP_DN);
ObjectCreate("MMLEVELS13", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS13","Daily Av", 9, "Arial",CommentLabel_color);
ObjectSet("MMLEVELS13", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS13", OBJPROP_XDISTANCE, 40+Adjust_Side_to_side);
ObjectSet("MMLEVELS13", OBJPROP_YDISTANCE, 105+Shift_UP_DN);
ObjectCreate("MMLEVELS14", OBJ_LABEL, 0, 0, 0);
ObjectSetText("MMLEVELS14",""+DAV+"", 9, "Arial Bold", color_av);
ObjectSet("MMLEVELS14", OBJPROP_CORNER, Corner_of_Chart_RIGHT_TOP);
ObjectSet("MMLEVELS14", OBJPROP_XDISTANCE, 10+Adjust_Side_to_side);
ObjectSet("MMLEVELS14", OBJPROP_YDISTANCE, 105+Shift_UP_DN);
}}}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments