Price Data Components
0
Views
0
Downloads
0
Favorites
All_TF_v02
//+------------------------------------------------------------------+
//| All_TF_v02.mq4 |
//+------------------------------------------------------------------+
//| All_TF.mq4 |
//+------------------------------------------------------------------+
#property copyright "Inkov Evgeni ew123@mail.ru"
#property link "+7-918-600-11-33"
#property indicator_separate_window
#property indicator_minimum -0.3
#property indicator_maximum 1.3
extern string sym = "EURUSD";
extern int nom_bar = 15;
extern int order_TF = 23456789;
extern color color_up = Red;
extern color color_dw = Black;
extern color color_0 = RoyalBlue;
extern color color_txt = Green;
extern color color_activ = Red;
extern color color_line = Gray;
//--------------------
int win;
int TF;
int width=3;
int Step;
int mas_TF[9];
//+------------------------------------------------------------------+
int init()
{
del_all();
string str=DoubleToStr(order_TF,0);
int len=StringLen(str);
ArrayInitialize(mas_TF,0);
string s;
int k=8;
for (int i=len-1;i>=0;i--)
{
s=StringSubstr(str,i, 1);
if (k<0)break;
mas_TF[k]=StrToInteger(s);
k--;
}
IndicatorDigits(Digits);
IndicatorShortName("All_TF "+sym);
win=WindowFind("All_TF "+sym);
Step=nom_bar+3;
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
del_all();
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int sdvig;
int n;
for (int i=9;i>=1;i--)
{
n=mas_TF[i-1];
if (n==0)break;
TF=nom_TF(n);
sdvig=(9-i)*Step;
out_graf(TF,win,sdvig);
out_txt(TF,win,sdvig);
if (i>1)out_line(str_TF(TF),win,sdvig);
}
return(0);
}
//+------------------------------------------------------------------+
void del_all()
{
for (int i=9;i>=1;i--)
{
TF=nom_TF(i);
for (int j=0;j<nom_bar;j++)
{
ObjectDelete(sym+DoubleToStr(TF,0)+"_"+DoubleToStr(j,0)+"_1");
ObjectDelete(sym+DoubleToStr(TF,0)+"_"+DoubleToStr(j,0)+"_2");
ObjectDelete(sym+str_TF(TF));
ObjectDelete(sym+str_TF(TF)+"L");
}
}
}
//-----------------------------
void out_line(string str_TF, int win, int sdvig)
{
string name=sym+str_TF+"L";
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_TREND,win,0,0);
ObjectSet(name,OBJPROP_TIME1,Time[nom_bar+sdvig+1]);
ObjectSet(name,OBJPROP_TIME2,Time[nom_bar+sdvig+1]);
ObjectSet(name,OBJPROP_PRICE1,-0.3);
ObjectSet(name,OBJPROP_PRICE2,1.3);
ObjectSet(name,OBJPROP_COLOR,color_line);
ObjectSet(name,OBJPROP_WIDTH,2);
}
//--------------------
void out_txt(int TF, int win, int sdvig)
{
color col;
string str_TF=str_TF(TF);
string name=sym+str_TF;
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_TEXT,win,0,0);
if(TF==Period())
col=color_activ;
else
col=color_txt;
ObjectSetText(name, str_TF, 8, "Arial", col);
ObjectSet(name,OBJPROP_TIME1,Time[sdvig+1]);
ObjectSet(name,OBJPROP_PRICE1,0);
}
//--------------------
void out_graf(int TF, int win, int sdvig)
{
double max,min,H,L;
for (int i=0;i<nom_bar;i++)
{
H=iHigh (sym,TF,i);
L=iLow (sym,TF,i);
if (H>max || max==0)max=H;
if (L<min || min==0)min=L;
}
if(ND(max)==ND(min))return(0);
for (i=0;i<nom_bar;i++)out_bar(TF,win,i,max,min,sdvig);
}
//--------------------
void out_bar(int TF, int win,int bar,double max, double min, int sdv)
{
double O,H,L,C;
double d, pr1,pr2,pr3,pr4;
color col;
O=iOpen (sym,TF,bar);
H=iHigh (sym,TF,bar);
L=iLow (sym,TF,bar);
C=iClose(sym,TF,bar);
d=max-min;
pr1=(O-min)/d;
pr2=(C-min)/d;
pr3=(L-min)/d;
pr4=(H-min)/d;
if (ND(pr1)==ND(pr2) || ND(pr3)==ND(pr4))
col=color_0;
else
if (pr1>pr2)
col=color_dw;
else
col=color_up;
put_rect(sym+DoubleToStr(TF,0)+"_"+DoubleToStr(bar,0)+"_1",win, bar+sdv, width, pr1, pr2, col); // Open, Close
put_rect(sym+DoubleToStr(TF,0)+"_"+DoubleToStr(bar,0)+"_2",win, bar+sdv, 1, pr3, pr4, col); // Low, High
}
//-----------------------------------------
void put_rect(string name,int win, int bar, int width, double pr1, double pr2, color col)
{
if (ObjectFind(name)<0)ObjectCreate(name,OBJ_TREND,win,0,0,0,0);
ObjectSet(name,OBJPROP_TIME1,Time[bar]);
ObjectSet(name,OBJPROP_TIME2,Time[bar]);
ObjectSet(name,OBJPROP_PRICE1,pr1);
ObjectSet(name,OBJPROP_PRICE2,pr2);
ObjectSet(name,OBJPROP_WIDTH,width);
ObjectSet(name,OBJPROP_RAY,false);
ObjectSet(name,OBJPROP_COLOR,col);
}
//------------------------------
double ND(double n)
{
return(NormalizeDouble(n,Digits));
}
//----------------------------
int nom_TF(int n)
{
switch(n)
{
case 1: return(PERIOD_M1);
case 2: return(PERIOD_M5);
case 3: return(PERIOD_M15);
case 4: return(PERIOD_M30);
case 5: return(PERIOD_H1);
case 6: return(PERIOD_H4);
case 7: return(PERIOD_D1);
case 8: return(PERIOD_W1);
case 9: return(PERIOD_MN1);
}
return(0);
}
//----------------------------
string str_TF(int n)
{
if (n==0)n=Period();
switch(n)
{
case PERIOD_M1: return ("M1");
case PERIOD_M5: return ("M5");
case PERIOD_M15: return ("M15");
case PERIOD_M30: return ("M30");
case PERIOD_H1: return ("H1");
case PERIOD_H4: return ("H4");
case PERIOD_D1: return ("D1");
case PERIOD_W1: return ("W1");
case PERIOD_MN1: return ("MN1");
}
return("TF?");
}
//----------------------------
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
---