Price Data Components
0
Views
0
Downloads
0
Favorites
0_grid_v1_0_mod_horizontal
//+------------------------------------------------------------------
//| Grid.mq4
//| 4xcoder
//| 4xcoder@4xcoder.com
//|
//| Original Indicator: http://www.forexfactory.com/showthread.php?t=10128 (Post #1)
//| Modifications File45: https://login.mql5.com/en/users/file45/publications
//+------------------------------------------------------------------
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
input int HGrid_Points = 100; // H-Grid Size in points
input color HLine_1 = clrLightSlateGray; // H-Grid 1 Color
input color HLine_2 = clrLightSlateGray; // H-Grid 2 Color
input int Line_1_Style = 2; // Line 1 Style
input int Line_1_Width = 1; // Line 1 Width
input int Line_2_Style = 2; // Line 2 Style
input int Line_2_Width = 1; // Line 2 Width
input int HGrid_Weeks = 10; // Weeks
input bool Show_Label = true; // Show Label
input color Font_Color = clrDodgerBlue; // Label Color
input int Font_Size = 11; // Font Size
input bool Font_Bold = false; // Font Bold
input int Font_Corner = 1; // Corner
input int Left_Right = 20; // Left - Right
input int Up_Down = 150; // Up - Down
string HGrid_text;
string FB;
bool firstTime = true;
datetime lastTime = 0;
int OnInit()
{
firstTime = true;
switch(Font_Bold)
{
case 0 : FB = "Arial"; break;
case 1 : FB = "Arial Bold"; break;
}
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ObjectCreate("HGrid_txt", OBJ_LABEL, 0, 0, 0);
ObjectSet("HGrid_txt", OBJPROP_CORNER, Font_Corner);
ObjectSet("HGrid_txt", OBJPROP_XDISTANCE, Left_Right);
ObjectSet("HGrid_txt", OBJPROP_YDISTANCE, Up_Down);
if(Show_Label == 1)
{
ObjectSetText("HGrid_txt", "HG : " + string(HGrid_Points), Font_Size, FB, Font_Color);
}
else
{
ObjectSetText("HGrid_txt", "");
}
int counted_bars=IndicatorCounted();
if(true /*lastTime == 0 || CurTime() - lastTime > 5*/ )
{
firstTime = false;
lastTime = CurTime();
if(HGrid_Weeks > 0 && HGrid_Points > 0 )
{
double weekH = iHigh( NULL, PERIOD_W1, 0 );
double weekL = iLow( NULL, PERIOD_W1, 0 );
for(int i = 1; i < HGrid_Weeks; i++ )
{
weekH = MathMax( weekH, iHigh( NULL, PERIOD_W1, i ) );
weekL = MathMin( weekL, iLow( NULL, PERIOD_W1, i ) );
}
double pipRange = HGrid_Points * Point;
if (Symbol() == "GOLD" || Symbol() == "XAUUSD")
{
pipRange = pipRange * 10.0;
}
double topPips = (weekH + pipRange) - MathMod( weekH, pipRange );
double botPips = weekL - MathMod( weekL, pipRange );
for ( double p = botPips; p <= topPips; p += pipRange )
{
string gridname = "grid_" + DoubleToStr( p, Digits );
ObjectCreate( gridname, OBJ_HLINE, 0, 0, p );
double pp = p / Point;
int pInt = MathRound( pp );
int mod = 100;
if ( Symbol() == "GOLD" || Symbol() == "XAUUSD")
mod = 1000;
if ( (pInt % mod) == 0 )
{
ObjectSet( gridname, OBJPROP_COLOR, HLine_2 );
ObjectSet( gridname, OBJPROP_STYLE, Line_2_Style );
ObjectSet( gridname, OBJPROP_WIDTH, Line_2_Width );
}
else
{
ObjectSet( gridname, OBJPROP_COLOR, HLine_1 );
ObjectSet( gridname, OBJPROP_STYLE, Line_1_Style );
ObjectSet( gridname, OBJPROP_WIDTH, Line_1_Width );
ObjectSet( gridname, OBJPROP_PRICE1, p );
ObjectSet( gridname, OBJPROP_BACK, true );
}
}
}
}
return(rates_total);
}
int deinit()
{
for(int i = ObjectsTotal() - 1; i >= 0; i--)
{
string name = ObjectName( i );
if ( StringFind( name, "grid_" ) >= 0 )
ObjectDelete( name );
}
ObjectDelete("HGrid_txt");
return(0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---