_BZ_everyhour_G
Download scriptThis MetaTrader MQL script functions as a visual pricing dashboard designed to provide traders with a clear overview of specific price zones on their trading chart. It focuses on identifying key horizontal levels based on the current market opening price.
Core Functionality
The primary logic of the script involves calculating and displaying several distinct price points relative to the current hourly open. Rather than just showing a single price, it creates a "zone" of reference points to help traders visualize potential support and resistance areas.
Key price levels calculated by the script include:
- The Open Price: The central reference point (the current hourly opening price).
- Upper and Lower Straddle Zones: These are calculated by adding or subtracting a specific "width" from the opening price.
- Extended Channels: The script further extends these zones using a user-defined "channel" parameter, creating a broader visual range for potential price movement.
Visual Presentation
The script provides two distinct ways to view this data, which can be toggled by the user:
1. Chart Plotting (Arrows) When enabled, the script places specific visual markers (arrows/symbols) directly on the price chart at the calculated levels. This allows traders to see the "Buy" and "Sell" zones overlaid directly on the moving candles of the market.
2. On-Screen Gauge (Dashboard Labels) This is the primary visual feature for many users. The script creates a clean, organized text dashboard in a corner of the chart window. This dashboard includes:
- Dynamic Labeling: It clearly labels each price point (e.g., "LgTop", "LgBot", "Open", "ShTop", "ShBot").
- Real-Time Values: It displays the exact numerical price for each of these zones.
- Color Coding: To make the data easy to read at a glance, the script uses different colors (such as Blue, White, and Red) to differentiate between upper zones, the current open, and lower zones.
- Automatic Formatting: The script automatically detects the type of currency being traded (e.g., JPY pairs vs. standard pairs) and adjusts the decimal precision of the numbers accordingly to ensure they appear correctly.
Summary for Traders
In simple terms, this tool acts as a dynamic price map. It takes the current hour's opening price and automatically projects a "corridor" of significant levels above and below it. By doing this, it helps traders quickly identify where key supply and demand zones are located without having to manually calculate these distances every time the market moves.
//+------------------------------------------------------------------+
//| _BZ_everyhour_G |
//| |
//| Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne |
//| |
//| PO BOX 43575, TUCSON, AZ 85733 |
//| |
//| GIFT AND DONATIONS ACCEPTED |
//| |
//| http://docs.mql4.com/constants/wingdings | |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, Avery T. Horton, Jr. aka TheRumpledOne"
#property link "therumpledone@gmail.com"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Blue
#property indicator_color2 Blue
#property indicator_color3 White
#property indicator_color4 Red
#property indicator_color5 Red
//---- For the small screens
//extern string Display_infos = "=== If true, displayed on the chart ===";
//extern bool display_on_chart = true ; // If true, the open trade analysis, daily pivots and daily range will be displayed on the chart window
// indicators parameters
extern bool iPlotChart = true ;
extern bool iPlotGauge = true ;
extern int straddle_width=3;
extern int channel=1;
extern int myPeriod = 60 ;
extern int myOffset = 1 ;
extern int myChartY = 1 ;
extern int myStyle1 = 2 ;
extern int myStyle2 = 2 ;
extern int myStyle3 = 2 ;
extern int myStyle4 = 2 ;
extern int myStyle5 = 2 ;
extern int myStyle6 = 2 ;
extern int myStyle7 = 2 ;
extern int myWingDing1 = 228 ;
extern int myWingDing2 = 224 ;
extern int myWingDing3 = 224 ;
extern int myWingDing4 = 224 ;
extern int myWingDing5 = 230 ;
extern int myWingDing6 = 115 ;
extern int myWingDing7 = 115 ;
extern color myColor1 =Blue ;
extern color myColor2 =Blue ;
extern color myColor3 =White;
extern color myColor4 =Red;
extern color myColor5 =Red;
extern color myColor6 =Orange;
extern color myColor7 =OrangeRed;
//---- buffers
double P1Buffer[];
double P2Buffer[];
double P3Buffer[];
double P4Buffer[];
double P5Buffer[];
double P6Buffer[];
double P7Buffer[];
//int myPeriod = PERIOD_D1;
int TimeZone=0;
bool pivots = true;
bool alert = true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- name for indicator window
string short_name=" ";
IndicatorShortName(short_name);
SetIndexBuffer(0, P1Buffer);
SetIndexBuffer(1, P2Buffer);
SetIndexBuffer(2, P3Buffer);
SetIndexBuffer(3, P4Buffer);
SetIndexBuffer(4, P5Buffer);
SetIndexBuffer(5, P6Buffer);
SetIndexBuffer(6, P7Buffer);
//----
SetIndexArrow(0, myWingDing1);
SetIndexArrow(1, myWingDing2);
SetIndexArrow(2, myWingDing3);
SetIndexArrow(3, myWingDing4);
SetIndexArrow(4, myWingDing5);
SetIndexArrow(5, myWingDing6);
SetIndexArrow(6, myWingDing7);
SetIndexStyle(0, DRAW_ARROW, myStyle1, 1);
SetIndexStyle(1, DRAW_ARROW, myStyle2, 1);
SetIndexStyle(2, DRAW_ARROW, myStyle3, 1);
SetIndexStyle(3, DRAW_ARROW, myStyle4, 1);
SetIndexStyle(4, DRAW_ARROW, myStyle5, 1);
SetIndexStyle(5, DRAW_ARROW, myStyle6, 1);
SetIndexStyle(6, DRAW_ARROW, myStyle7, 1);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("BZ");
ObjectDelete("line5BZ");
ObjectDelete("X01_LabelBZ");
ObjectDelete("X01_ValueBZ");
ObjectDelete("X02_LabelBZ");
ObjectDelete("X02_ValueBZ");
ObjectDelete("X03_LabelBZ");
ObjectDelete("X03_ValueBZ");
ObjectDelete("X04_LabelBZ");
ObjectDelete("X04_ValueBZ");
ObjectDelete("X05_LabelBZ");
ObjectDelete("X05_ValueBZ");
ObjectDelete("X06_LabelBZ");
ObjectDelete("X06_ValueBZ");
ObjectDelete("X07_LabelBZ");
ObjectDelete("X07_ValueBZ");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int j,total=OrdersTotal();
for(j=0;j<total;j++)
{
OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
}
color color_common_line = White;
color color_common_text = White;
color color_ind = PowderBlue;
color color_indic;
color color_pivots_1=Orchid;
double x = iOpen(NULL,PERIOD_H1,0);
double X01 = x +(straddle_width+channel)*Point ;
double X02 = x+straddle_width*Point ;
double X03 = iOpen(NULL,PERIOD_H1,0);
double X04 = x-straddle_width*Point ;
double X05 = x-(straddle_width+channel)*Point ;
// double X06 = yesterday_low - (xRange * 0.382 ) ; // fib 382
// double X07 = yesterday_low - (xRange * 0.618 ) ; // fib 618
if ( iPlotChart ) {
int i = 0 ;
P1Buffer[i] = X01 ;
P2Buffer[i] = X02 ;
P3Buffer[i] = X03 ;
P4Buffer[i] = X04 ;
P5Buffer[i] = X05 ;
// P6Buffer[i] = X06 ;
// P7Buffer[i] = X07 ;
} // iPlotChart
if ( iPlotGauge ) {
string StrX01 = "LgTop" ;
string StrX02 = "LgBot" ;
string StrX03 = "Open" ;
string StrX04 = "ShTop" ;
string StrX05 = "ShBot" ;
string StrX06 = "-XO6" ;
string StrX07 = "-XO7" ;
color color_X01=Blue;
color color_X02=Blue;
color color_X03=White;
color color_X04=Red;
color color_X05=Red;
color color_X06=Red;
color color_X07=Red;
/*
if( day_close < X01) { color_X01=Lime; }
if( day_close < X02) { color_X02=Lime; }
if( day_close < X03) { color_X04=Lime; }
if( day_close < X04) { color_X04=Lime; }
if( day_close < X05) { color_X05=Lime; }
if( day_close < X06) { color_X07=Lime; }
if( day_close < X07) { color_X07=Lime; }
*/
int Precision, dig;
if( StringFind( Symbol(), "JPY", 0) != -1 ) { Precision = 100; dig = 2;}
else { Precision = 10000; dig = 4; }
int sPeriod= Period();
if (myPeriod != NULL){ sPeriod= myPeriod ;}
//---- Set labels
int WindowToUse;
int Corner_line, Xdist_line;
int Corner_text, Corner_ValueBZ, Xdist_text, Xdist_ValueBZ;
int Ydist_line5;
int Corner_pivots, Xdist_pivots, Ydist_pivots;
int Ydist_X01, Ydist_X02, Ydist_X03, Ydist_X04, Ydist_X05, Ydist_X06, Ydist_X07;
int YdistInc ;
WindowToUse = 0;
Corner_line = 1;
Corner_text = 1;
Corner_ValueBZ = 1;
Xdist_line = 21;
Xdist_text = 93;
Xdist_ValueBZ = 23;
Corner_pivots = 1;
Xdist_pivots = 21;
Ydist_pivots = myChartY;
Ydist_line5 =
Ydist_pivots + 11;
YdistInc = 15 ;
Ydist_X01 = Ydist_pivots + 25;
Ydist_X02 = Ydist_X01 + YdistInc;
Ydist_X03 = Ydist_X01 + YdistInc*2;
Ydist_X04 = Ydist_X01 + YdistInc*3;
Ydist_X05 = Ydist_X01 + YdistInc*4;
Ydist_X06 = Ydist_X01 + YdistInc*5;
Ydist_X07 = Ydist_X01 + YdistInc*6;
ObjectCreate("BZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("BZ",sPeriod + "BuyZone",9, "Verdana", color_pivots_1);
ObjectSet("BZ", OBJPROP_CORNER, Corner_pivots);
ObjectSet("BZ", OBJPROP_XDISTANCE, Xdist_pivots);
ObjectSet("BZ", OBJPROP_YDISTANCE, Ydist_pivots);
ObjectCreate("line5BZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("line5BZ","---------------------",7, "Verdana", color_pivots_1);
ObjectSet("line5BZ", OBJPROP_CORNER, Corner_line);
ObjectSet("line5BZ", OBJPROP_XDISTANCE, Xdist_line);
ObjectSet("line5BZ", OBJPROP_YDISTANCE, Ydist_line5);
ObjectCreate("X01_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X01_LabelBZ",StrX01,9, "Verdana", myColor1);
ObjectSet("X01_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X01_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X01_LabelBZ", OBJPROP_YDISTANCE, Ydist_X01);
ObjectCreate("X01_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X01_ValueBZ"," "+DoubleToStr(X01,dig),9, "Verdana", color_X01);
ObjectSet("X01_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X01_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X01_ValueBZ", OBJPROP_YDISTANCE, Ydist_X01);
ObjectCreate("X02_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X02_LabelBZ",StrX02,9, "Verdana", myColor2);
ObjectSet("X02_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X02_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X02_LabelBZ", OBJPROP_YDISTANCE, Ydist_X02);
ObjectCreate("X02_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X02_ValueBZ"," "+DoubleToStr(X02,dig),9, "Verdana", color_X02);
ObjectSet("X02_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X02_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X02_ValueBZ", OBJPROP_YDISTANCE, Ydist_X02);
ObjectCreate("X03_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X03_LabelBZ",StrX03,9, "Verdana", myColor3 );
ObjectSet("X03_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X03_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X03_LabelBZ", OBJPROP_YDISTANCE, Ydist_X03);
ObjectCreate("X03_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X03_ValueBZ"," "+DoubleToStr(X03,dig),9, "Verdana", color_X03);
ObjectSet("X03_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X03_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X03_ValueBZ", OBJPROP_YDISTANCE, Ydist_X03);
ObjectCreate("X04_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X04_LabelBZ",StrX04,9, "Verdana", myColor4 );
ObjectSet("X04_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X04_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X04_LabelBZ", OBJPROP_YDISTANCE, Ydist_X04);
ObjectCreate("X04_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X04_ValueBZ"," "+DoubleToStr(X04,dig),9, "Verdana", color_X04);
ObjectSet("X04_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X04_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X04_ValueBZ", OBJPROP_YDISTANCE, Ydist_X04);
ObjectCreate("X05_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X05_LabelBZ",StrX05,9, "Verdana", myColor5 );
ObjectSet("X05_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X05_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X05_LabelBZ", OBJPROP_YDISTANCE, Ydist_X05);
ObjectCreate("X05_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X05_ValueBZ"," "+DoubleToStr(X05,dig),9, "Verdana", color_X05);
ObjectSet("X05_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X05_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X05_ValueBZ", OBJPROP_YDISTANCE, Ydist_X05);
/*
ObjectCreate("X06_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X06_LabelBZ",StrX06,9, "Verdana", myColor6 );
ObjectSet("X06_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X06_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X06_LabelBZ", OBJPROP_YDISTANCE, Ydist_X06);
ObjectCreate("X06_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X06_ValueBZ"," "+DoubleToStr(X06,dig),9, "Verdana", color_X06);
ObjectSet("X06_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X06_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X06_ValueBZ", OBJPROP_YDISTANCE, Ydist_X06);
ObjectCreate("X07_LabelBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X07_LabelBZ",StrX07,9, "Verdana", myColor7 );
ObjectSet("X07_LabelBZ", OBJPROP_CORNER, Corner_text);
ObjectSet("X07_LabelBZ", OBJPROP_XDISTANCE, Xdist_text);
ObjectSet("X07_LabelBZ", OBJPROP_YDISTANCE, Ydist_X07);
ObjectCreate("X07_ValueBZ", OBJ_LABEL, WindowToUse, 0, 0);
ObjectSetText("X07_ValueBZ"," "+DoubleToStr(X07,dig),9, "Verdana", color_X07);
ObjectSet("X07_ValueBZ", OBJPROP_CORNER, Corner_ValueBZ);
ObjectSet("X07_ValueBZ", OBJPROP_XDISTANCE, Xdist_ValueBZ);
ObjectSet("X07_ValueBZ", OBJPROP_YDISTANCE, Ydist_X07);
*/
} // iPlotGauge
return(0);
}
Comments