Author: Inkov Evgeni ew123@mail.ru
Price Data Components
Series array that contains close prices for each bar
0 Views
0 Downloads
0 Favorites
All_TF
//+------------------------------------------------------------------+
//|                                                       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 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 init()
{
   IndicatorDigits(Digits);
   IndicatorShortName("All_TF "+sym);
   win=WindowFind("All_TF "+sym);
   Step=nom_bar+3;
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   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");
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
int start()
{
   int sdvig;
   for (int i=9;i>=1;i--)
   {
      TF=nom_TF(i);
      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 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("?");
}
//----------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---