Price Data Components
0
Views
0
Downloads
0
Favorites
PreviousCandleHiLo
//+------------------------------------------------------------------+
//| PreviousCandleHiLo.mq4 |
//| hairi |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "hairi"
#property link "https://www.mql5.com/en/users/hairi"
#property version "1.00"
#property description "Previous Candle Hi-Lo"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Input variable |
//+------------------------------------------------------------------+
input ENUM_LINE_STYLE linestyle = STYLE_DOT; // Line Style
input color H1_color = clrRed, // Prev H1 color
H4_color = clrGreen, // Prev H4 color
D1_color = clrBlue, // Prev Day color
W1_color = clrGold; // Prev Week color
int CalcDay = 7;
int CalcBar = 0;
string Objname,
ObjIdentifier="IN_";
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Deinit |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDeleteAll();
return (0);
}
//+------------------------------------------------------------------+
//| Indicator Start |
//+------------------------------------------------------------------+
int start()
{
int BarCheck=IndicatorCounted();
if(BarCheck < 0) return (-1);
if(BarCheck>0) BarCheck--;
int TotalBar=Bars-BarCheck;
for(int BarMeasure=0; BarMeasure<=240; BarMeasure++)
{
double H1_High = 0, H1_Low = 0;
double H4_High = 0, H4_Low = 0;
double D1_High = 0, D1_Low = 0;
double W1_High = 0, W1_Low = 0;
PrevPeriod(PERIOD_H1,H1_Low,H1_High,"Prev H1 High","Prev H1 Low",linestyle,H1_color,1);
PrevPeriod(PERIOD_H4,H4_Low,H4_High,"Prev H4 High","Prev H4 Low",linestyle,H4_color,1);
PrevPeriod(PERIOD_D1,D1_Low,D1_High,"Prev Day High","Prev Day Low",linestyle,D1_color,1);
PrevPeriod(PERIOD_W1,W1_Low,W1_High,"Prev Week High","Prev Week Low",linestyle,W1_color,1);
}
return (0);
}
//+------------------------------------------------------------------+
//| Object Delete all function |
//+------------------------------------------------------------------+
void ObjectDeleteAll()
{
Comment("");
ObjectsDeleteAll(0,ObjIdentifier);
}
//+------------------------------------------------------------------+
//| Draw line function |
//+------------------------------------------------------------------+
void DrawShortHLine(string nameX,int time1,double P0,int style,color clr,int width)
{
string objName;
datetime T0 = iTime(Symbol(),PERIOD_H1,time1);
datetime T1 = iTime(Symbol(),PERIOD_M1,1);
objName=nameX;
if(ObjectFind(0,ObjIdentifier+objName)!=0)
ObjectCreate(ObjIdentifier+objName,OBJ_TREND,0,T0,P0,T1,P0);
else
{
ObjectDelete(ObjIdentifier+objName);
ObjectCreate(ObjIdentifier+objName,OBJ_TREND,0,T0,P0,T1,P0);
}
ObjectSetInteger(0,ObjIdentifier+objName,OBJPROP_STYLE,style);
ObjectSetInteger(0,ObjIdentifier+objName,OBJPROP_COLOR,clr);
ObjectSetInteger(0,ObjIdentifier+objName,OBJPROP_WIDTH,width);
ObjectSetInteger(0,ObjIdentifier+objName,OBJPROP_RAY,false);
ObjectSetInteger(0,ObjIdentifier+objName,OBJPROP_BACK,true);
//ObjectSetString (0,name,name);
}
//+------------------------------------------------------------------+
//| Draw complete line function |
//+------------------------------------------------------------------+
void HLine(string name,string desc,int pShiftTime,double pPrice,int pStyle,color pColor,int pWidth) export
{
DrawShortHLine(name,pShiftTime,pPrice,pStyle,pColor,pWidth);
CreatePriceLabel(name+" Label",desc,pPrice,pColor);
CreatePriceFlag(name+" Price",pPrice,pColor);
}
//+------------------------------------------------------------------+
//| scale the view |
//+------------------------------------------------------------------+
int ChartScaleGet() export
{
long result=-1;
ChartGetInteger(0,CHART_SCALE,0,result);
return((int)result);
}
//+------------------------------------------------------------------+
//| Create price flag function |
//+------------------------------------------------------------------+
void CreatePriceFlag(string name,double price,color col) export
{
datetime time=Time[0]+Period()*60;
if(ObjectFind(0,ObjIdentifier+name)!=0)
{
ObjectCreate(ObjIdentifier+name,OBJ_ARROW_RIGHT_PRICE,0,time,price);
ObjectSetInteger(0,ObjIdentifier+name,OBJPROP_ANCHOR,ANCHOR_LEFT);
ObjectSetInteger(0,ObjIdentifier+name,OBJPROP_COLOR,col);
}
else ObjectMove(ObjIdentifier+name,0,time,price);
}
//+------------------------------------------------------------------+
//| Create price label function |
//+------------------------------------------------------------------+
void CreatePriceLabel(string name,string desc,double price,color col) export
{
int Chart_Scale,Bar_Width;
Chart_Scale=ChartScaleGet();
if(Chart_Scale==0) Bar_Width=64;
else if(Chart_Scale == 1) Bar_Width = 32;
else if(Chart_Scale == 2) Bar_Width = 16;
else if(Chart_Scale == 3) Bar_Width = 9;
else if(Chart_Scale == 4) Bar_Width = 5;
else if(Chart_Scale == 5) Bar_Width = 3;
else Bar_Width=2;
datetime time=Time[0]+Period()*60*Bar_Width;
if(ObjectFind(0,ObjIdentifier+name)!=0)
{
ObjectCreate(ObjIdentifier+name,OBJ_TEXT,0,time,price);
ObjectSetInteger(0,ObjIdentifier+name,OBJPROP_ANCHOR,ANCHOR_LEFT);
ObjectSetString(0,ObjIdentifier+name,OBJPROP_TEXT,desc);
ObjectSetString(0,ObjIdentifier+name,OBJPROP_FONT,"Arial");
ObjectSetInteger(0,ObjIdentifier+name,OBJPROP_FONTSIZE,8);
ObjectSetInteger(0,ObjIdentifier+name,OBJPROP_COLOR,col);
}
else ObjectMove(ObjIdentifier+name,0,time,price);
}
//+------------------------------------------------------------------+
//| Previous period function |
//+------------------------------------------------------------------+
void PrevPeriod(int period,double high,double low,string hiname,string lowname,int style,color col,int width)
{
PrevCandle(period,low,high);
HLine(hiname,hiname,10,high,style,col,width);
HLine(lowname,lowname,10,low,style,col,width);
}
//+------------------------------------------------------------------+
//| Previous candle function |
//+------------------------------------------------------------------+
void PrevCandle(int period,double &low,double &high)
{
low=iLow(_Symbol,period,1);
high=iHigh(_Symbol,period,1);
}
//+------------------------------------------------------------------+
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
---