Price Data Components
0
Views
0
Downloads
0
Favorites
mtf_visualization_v1_5_1
//+------------------------------------------------------------------+
//| MTF Visualization v1.5.mq4 |
//| 2014 - Joca (nc32007a@gmail.com)|
//+------------------------------------------------------------------+
#property indicator_chart_window
//---- input parameters
extern bool updirection=true;
extern string FrameLabel = "Enable Timeframe:(1=true)...M1,M5,M15,M30,H1,H4,D1,W1,MN,Year";
extern string enable_TMF="1,1,1,1,1,1,1,1,1,1";
extern bool stats=false;
extern bool pivots=false;
extern color MNPivotclr= White, W1Pivotclr=Yellow, D1Pivotclr=Red;
extern double offset=10;
extern double step=6;
extern color UpCandleColor= Lime;
extern color DownCandleColor = Red;
extern int widthHL = 1;
extern int widthOC = 5;
extern int year_width_factor=2;
int BaseTF, nextTF, width_OC,width_HL;
string BaseTMFR;
int timeFrame[] = {1,5,15,30,60,240,1440,10080,43200,99};
string TimeFrames[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN","Year"};
string StatsLabel[]={"Year","D1","W1","MN","High","Close","Low","Range"};
double P1,P2,P3,P4,Points_Per_Pixel,SizeY, MNPivot, W1Pivot,D1Pivot;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void init()
{
BaseTF=Period();
for(int i=0;i<ArraySize(timeFrame);i++)
{
if(timeFrame[i]==BaseTF)nextTF=i+1;
//BaseTMFR=TimeFrames[i];
}
if (BaseTF==43200) nextTF=9;
//DeleteObjects();
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
void deinit()
{
//ObjectsDeleteAll();
DeleteObjects();
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//ObjectsDeleteAll();
double dif=MathAbs(Time[1] - Time[2]);
datetime dtStart=Time[0]+dif*offset;
int i,j,shift,control;
j=nextTF;
int Bar_Year_High=iHighest(Symbol(),PERIOD_MN1,MODE_HIGH,Month()-1,0);
int Bar_Year_Low=iLowest(Symbol(),PERIOD_MN1,MODE_LOW,Month()-1,0);
double YearHigh=iHigh(Symbol(),PERIOD_MN1,Bar_Year_High);
double YearLow=iLow(Symbol(),PERIOD_MN1,Bar_Year_Low);
double YearOpen= iOpen(Symbol(),PERIOD_MN1,Month()-1);
double YearClose= Bid;
//Comment("Month()= "+Month()+" Day of Year= " + DayOfYear()+" YearOpen(1)= " + YearOpen+ " YearHigh ("+Bar_Year_High+")= "+ YearHigh+ " YearLow ("+Bar_Year_Low+") = "+YearLow+" YearClose(" +DayOfYear()+") = "+YearClose );
while (j<(ArraySize(timeFrame)))
{
shift=j;
if (updirection==0)shift=(ArraySize(timeFrame)-(j-nextTF)- 1);
control=0;
if (StringSubstr(enable_TMF, 2*shift, 1)=="1")
{
control=1;
if (timeFrame[shift]!=99)
{
P1=iOpen(NULL, timeFrame[shift],0);
P2=iClose(NULL, timeFrame[shift],0);
P3=iLow(NULL, timeFrame[shift],0);
P4=iHigh(NULL, timeFrame[shift],0);
width_OC=widthOC;
width_HL=widthHL;
}
else
{
P1=YearOpen;
P2=YearClose;
P3=YearLow;
P4=YearHigh;
width_OC=widthOC*year_width_factor;
width_HL=widthHL*year_width_factor;
}
datetime T=dtStart+dif*i*step;
string name="Body#"+i;
color clr=DownCandleColor; if (P1 <= P2) clr=UpCandleColor;
objTrendLine(name ,T, P1,T,P2,0,width_OC,clr,STYLE_SOLID,False);
name="Tail#"+i;
objTrendLine(name ,T, P3,T,P4,0,width_HL,clr,STYLE_SOLID,False);
ObjectSetText(name,TimeFrames[shift], 5, "Arial", White);
if (timeFrame[shift]==99) ObjectSetText(name,TimeFrames[shift]+" "+ Year(), 5, "Arial", White);
if (pivots &&(TimeFrames[shift]=="D1" || TimeFrames[shift]=="W1"||TimeFrames[shift]=="MN"))
{
D1Pivot= (iHigh(NULL, 1440,1)+ iLow(NULL, 1440,1)+iClose(NULL, 1440,1))/3;
W1Pivot= (iHigh(NULL, 10080,1)+ iLow(NULL, 10080,1)+iClose(NULL, 10080,1))/3;
MNPivot= (iHigh(NULL, 43200,1)+ iLow(NULL, 43200,1)+iClose(NULL, 43200,1))/3;
if (TimeFrames[shift]=="D1") objTrendLine("D1Pivot" ,Time[0], D1Pivot,dtStart,D1Pivot,0,2,D1Pivotclr,STYLE_SOLID,False);
ObjectSetText("D1Pivot","D1 - Pivot", 5, "Arial", White);
if (TimeFrames[shift]=="W1") objTrendLine("W1Pivot" ,Time[0], W1Pivot,dtStart,W1Pivot,0,2,W1Pivotclr,STYLE_SOLID,False);
ObjectSetText("W1Pivot","W1 - Pivot", 5, "Arial", White);
if (TimeFrames[shift]=="MN") objTrendLine("MNPivot" ,Time[0], MNPivot,dtStart,MNPivot,0,2,MNPivotclr,STYLE_SOLID,False);
ObjectSetText("MNPivot","MN - Pivot", 5, "Arial", White);
}
}
if (control==1) i++;
j++;
}
if (stats)
{
double ActualBid = Bid;
double YPos=30;
string Name;
double PercChange;
double Open_Price_D1,Close_Price_D1,High_Price_D1,Low_Price_D1,Open_Price_W1,Open_Price_MN1,Day_Range;
PercChange = ((ActualBid - YearOpen)/YearOpen)*100;
Name="Year = " + DoubleToStr((ActualBid-YearOpen)*10000, 0)+" pips => "+DoubleToStr(PercChange, 2) + " %"+"\n";
clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
objLabel("Stat_Year", Name,1, 3, YPos, 0, clr, "Arial", 14);
Open_Price_MN1 = iOpen(NULL, PERIOD_MN1, 0);
PercChange = ((ActualBid - Open_Price_MN1)/Open_Price_MN1)*100;
YPos=YPos+20;
Name="MN = " + DoubleToStr((ActualBid-Open_Price_MN1)*10000, 0)+" pips => "+DoubleToStr(PercChange, 2) + " %"+"\n";
clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
objLabel("Stat_MN", Name,1, 3, YPos, 0, clr, "Arial", 14);
Open_Price_W1 = iOpen(NULL, PERIOD_W1, 0);
PercChange = ((ActualBid - Open_Price_W1)/Open_Price_W1)*100;
YPos=YPos+20;
Name="W1 = " + DoubleToStr((ActualBid-Open_Price_W1)*10000, 0)+" pips => "+ DoubleToStr(PercChange, 2) + " %"+"\n";
clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
objLabel("Stat_W1", Name,1, 3, YPos, 0, clr, "Arial", 14);
Open_Price_D1 = iOpen(NULL, PERIOD_D1, 0);
PercChange = ((ActualBid - Open_Price_D1)/Open_Price_D1)*100;
YPos=YPos+20;
Name="D1 = " + DoubleToStr((ActualBid-Open_Price_D1)*10000, 0)+" pips => "+ DoubleToStr(PercChange, 2) + " %"+"\n";
clr=DownCandleColor; if (PercChange>=0) clr=UpCandleColor;
objLabel("Stat_D1",Name,1, 3, YPos, 0, clr, "Arial", 14);
High_Price_D1 = iHigh(NULL,PERIOD_D1,0);
PercChange = High_Price_D1;
YPos=YPos+40;
Name="Day High = " + DoubleToStr(PercChange, 4) +"\n";
//clr=DownCandleColor; if (ActualBid>=Open_Price_D1) clr=UpCandleColor;
objLabel("Stat_High", Name,1, 3, YPos, 0, clr, "Arial", 14);
Close_Price_D1 = ActualBid;
PercChange = ActualBid;
YPos=YPos+20;
Name="Day Close = " + DoubleToStr(PercChange, 4) +"\n";
objLabel("Stat_Close", Name,1, 3, YPos, 0, clr, "Arial", 14);
Low_Price_D1 = iLow(NULL,PERIOD_D1,0);
PercChange = Low_Price_D1;
YPos=YPos+20;
Name="Day Low = " + DoubleToStr(PercChange, 4) +"\n";
objLabel("Stat_Low", Name,1, 3, YPos, 0, clr, "Arial", 14);
Day_Range =High_Price_D1-Low_Price_D1;
PercChange = Day_Range*10000;
YPos=YPos+40;
Name="Day Range = " + DoubleToStr(PercChange, 0) + " pips" + "\n";
objLabel("Stat_Range", Name,1, 3, YPos, 0, clr, "Arial", 14);
}
return(0);
}
//+------------------------------------------------------------------+
// External Code
void objTrendLine(string name, datetime time_1, double price_1, datetime time_2, double price_2, int window=0, int width=1, color col=White, int style=STYLE_SOLID, bool ray=true)
{
if(ObjectFind(name)==-1) {
ObjectCreate(0,name, OBJ_TREND, window, time_1, price_1, time_2, price_2);
}
ObjectSet(name, OBJPROP_PRICE1, price_1);
ObjectSet(name, OBJPROP_PRICE2, price_2);
ObjectSet(name, OBJPROP_TIME1, time_1);
ObjectSet(name, OBJPROP_TIME2, time_2);
ObjectSet(name, OBJPROP_WIDTH, width);
ObjectSet(name, OBJPROP_COLOR, col);
ObjectSet(name, OBJPROP_STYLE, style);
ObjectSet(name, OBJPROP_RAY, ray);
}
void objHLine(string name, double price, int window=0, color col=White, int style=STYLE_SOLID)
{
if(ObjectFind(name)==-1) {
ObjectCreate(0,name, OBJ_HLINE, window, 0,price);
}
ObjectSet(name, OBJPROP_PRICE1, price);
ObjectSet(name, OBJPROP_COLOR, col);
ObjectSet(name, OBJPROP_STYLE, style);
ObjectSet(name, OBJPROP_WIDTH, 2);
}
void objLabel(string name, string tex, int corner, int position_x, int position_y, int window=0, color tex_color=White, string tex_font="Arial", int tex_size=12)
{
if(ObjectFind(name)==-1)
{
ObjectCreate(name, OBJ_LABEL, window, 0, 0);
}
ObjectSet(name, OBJPROP_CORNER, corner);
ObjectSet(name, OBJPROP_XDISTANCE, position_x);
ObjectSet(name, OBJPROP_YDISTANCE, position_y);
ObjectSetText(name, tex, tex_size, tex_font, tex_color);
}
void DeleteObjects()
{
//ObjectsDeleteAll(EMPTY_VALUE,2);
ObjectDelete("D1Pivot");
ObjectDelete("W1Pivot");
ObjectDelete("MNPivot");
for (int j=0;j<ArraySize(timeFrame);j++)
{
ObjectDelete("Body#"+j);
ObjectDelete("Tail#"+j);
}
for (j=0;j<ArraySize(StatsLabel);j++)
{
ObjectDelete("Stat_"+StatsLabel[j]);
}
}
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
---