_BZ_everyhour_G

Download script
Author: Copyright � 2007, Avery T. Horton, Jr. aka TheRumpledOne
_BZ_everyhour_G

This 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.

Price Data Components
Series array that contains open prices of each bar
Orders Execution
Checks for the total of open orders
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
_BZ_everyhour_G
//+------------------------------------------------------------------+
//|                  _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