Month Week Day

Author: Yuriy Tokman (YTG)
Price Data Components
Series array that contains close prices for each barSeries array that contains open prices of each bar
0 Views
0 Downloads
0 Favorites
Month Week Day
ÿþ//+------------------------------------------------------------------+

//|                                               Month Week Day.mq4 |

//|                                               Yuriy Tokman (YTG) |

//|                       https://www.mql5.com/ru/users/satop/seller |

//+------------------------------------------------------------------+

#property copyright "Yuriy Tokman (YTG)"

#property link      "https://www.mql5.com/ru/users/satop/seller"

#property version   "1.00"

#property strict

#property indicator_chart_window

//---

input bool MN1 = true;

input color line_close_M            = clrBlue;

input ENUM_LINE_STYLE style_close_M = STYLE_SOLID;

input color line_open_M             = clrAqua;

input ENUM_LINE_STYLE style_open_M  = STYLE_SOLID;

//---

input bool W1 = true;

input color line_close_W            = clrGreen;

input ENUM_LINE_STYLE style_close_W = STYLE_SOLID;

input color line_open_W             = clrLimeGreen;

input ENUM_LINE_STYLE style_open_W  = STYLE_SOLID;

//---

input bool D1 = false;

input color line_close_D            = clrRed;

input ENUM_LINE_STYLE style_close_D = STYLE_SOLID;

input color line_open_D             = clrTomato;

input ENUM_LINE_STYLE style_open_D  = STYLE_SOLID;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping



//---

   return(INIT_SUCCEEDED);

  }

void OnDeinit(const int reason) {GetDellName();}

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

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[])

  {

//---

   double cM = iClose(Symbol(),PERIOD_MN1,1);

   double oM = iOpen(Symbol(),PERIOD_MN1,0);



   double cW = iClose(Symbol(),PERIOD_W1,1);

   double oW = iOpen(Symbol(),PERIOD_W1,0);



   double cD = iClose(Symbol(),PERIOD_D1,1);

   double oD = iOpen(Symbol(),PERIOD_D1,0);





   if(NewBar())

     {

      if(MN1)

        {

         TrendCreate(0,"ytg_clM",0,iTime(Symbol(),PERIOD_MN1,0),cM,TimeCurrent(),cM,line_close_M,style_close_M);

         TextCreate(0,"ytg_clM_txt",0,Time[0]+20*Period()*60,cM,"close M ["+DoubleToString(cM,Digits)+"]","Arial",8,line_close_M);



         TrendCreate(0,"ytg_opM",0,iTime(Symbol(),PERIOD_MN1,0),oM,TimeCurrent(),oM,line_open_M,style_open_M);

         TextCreate(0,"ytg_opM_txt",0,Time[0]+20*Period()*60,oM,"open M ["+DoubleToString(oM,Digits)+"]","Arial",8,line_open_M);

        }

      //---

      if(W1)

        {

         TrendCreate(0,"ytg_clW",0,iTime(Symbol(),PERIOD_W1,0),cW,TimeCurrent(),cW,line_close_W,style_close_W);

         TextCreate(0,"ytg_clW_txt",0,Time[0]+20*Period()*60,cW,"close W ["+DoubleToString(cW,Digits)+"]","Arial",8,line_close_W);



         TrendCreate(0,"ytg_opW",0,iTime(Symbol(),PERIOD_W1,0),oW,TimeCurrent(),oW,line_open_W,style_open_W);

         TextCreate(0,"ytg_opW_txt",0,Time[0]+20*Period()*60,oW,"open W ["+DoubleToString(oW,Digits)+"]","Arial",8,line_open_W);

        }

      //---

      if(D1)

        {

         TrendCreate(0,"ytg_clD",0,iTime(Symbol(),PERIOD_D1,0)-Period()*60,cD,TimeCurrent(),cD,line_close_D,style_close_D);

         TextCreate(0,"ytg_clD_txt",0,Time[0]+20*Period()*60,cD,"close D ["+DoubleToString(cD,Digits)+"]","Arial",8,line_close_D);



         TrendCreate(0,"ytg_opD",0,iTime(Symbol(),PERIOD_D1,0),oD,TimeCurrent(),oD,line_open_D,style_open_D);

         TextCreate(0,"ytg_opD_txt",0,Time[0]+20*Period()*60,oD,"open D ["+DoubleToString(oD,Digits)+"]","Arial",8,line_open_D);

        }

     }

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//----+

void GetDellName(string name_n = "ytg")

  {

   string vName;

   for(int i=ObjectsTotal()-1; i>=0; i--)

     {

      vName = ObjectName(i);

      if(StringFind(vName,name_n) !=-1)

         ObjectDelete(vName);

     }

  }

//----+

bool NewBar(ENUM_TIMEFRAMES TF = PERIOD_CURRENT)

  {

   static datetime NewTime=0;

   if(NewTime!=iTime(Symbol(),TF,0))

     {

      NewTime=iTime(Symbol(),TF,0);

      return(true);

     }

   return(false);

  }

//----+

//+------------------------------------------------------------------+

//| !>7405B ;8=8N B@5=40 ?> 7040==K< :>>@48=0B0<                     |

//+------------------------------------------------------------------+

bool TrendCreate(const long            chart_ID=0,        // ID 3@0D8:0

                 const string          name="TrendLine",  // 8<O ;8=88

                 const int             sub_window=0,      // =><5@ ?>4>:=0

                 datetime              time1=0,           // 2@5<O ?5@2>9 B>G:8

                 double                price1=0,          // F5=0 ?5@2>9 B>G:8

                 datetime              time2=0,           // 2@5<O 2B>@>9 B>G:8

                 double                price2=0,          // F5=0 2B>@>9 B>G:8

                 const color           clr=clrRed,        // F25B ;8=88

                 const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=88

                 const int             width=1,           // B>;I8=0 ;8=88

                 const bool            back=true,        // =0 704=5< ?;0=5

                 const bool            selection=false,    // 2K45;8BL 4;O ?5@5<5I5=89

                 const bool            ray_right=true,   // ?@>4>;65=85 ;8=88 2?@02>

                 const bool            hidden=true,       // A:@KB 2 A?8A:5 >1J5:B>2

                 const long            z_order=0)         // ?@8>@8B5B =0 =060B85 <KHLN

  {

//--- CAB0=>28< :>>@48=0BK B>G5: ?@82O7:8, 5A;8 >=8 =5 7040=K

   if(ObjectFind(chart_ID,name)!=-1)

      ObjectDelete(chart_ID,name);

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- A>74048< B@5=4>2CN ;8=8N ?> 7040==K< :>>@48=0B0<

   if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL A>740BL ;8=8N B@5=40! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CAB0=>28< F25B ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

//--- CAB0=>28< AB8;L >B>1@065=8O ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);

//--- CAB0=>28< B>;I8=C ;8=88

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O ;8=88 <KHLN

//--- ?@8 A>740=88 3@0D8G5A:>3> >1J5:B0 DC=:F859 ObjectCreate, ?> C<>;G0=8N >1J5:B

//--- =5;L7O 2K45;8BL 8 ?5@5<5I0BL. =CB@8 65 MB>3> <5B>40 ?0@0<5B@ selection

//--- ?> C<>;G0=8N @025= true, GB> ?>72>;O5B 2K45;OBL 8 ?5@5<5I0BL MB>B >1J5:B

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?@>4>;65=8O >B>1@065=8O ;8=88 2?@02>

   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

//----

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| !>7405B >1J5:B ""5:AB"                                           |

//+------------------------------------------------------------------+

bool TextCreate(const long              chart_ID=0,               // ID 3@0D8:0

                const string            name="Text",              // 8<O >1J5:B0

                const int               sub_window=0,             // =><5@ ?>4>:=0

                datetime                time=0,                   // 2@5<O B>G:8 ?@82O7:8

                double                  price=0,                  // F5=0 B>G:8 ?@82O7:8

                const string            text="Text",              // A0< B5:AB

                const string            font="Arial",             // H@8DB

                const int               font_size=10,             // @07<5@ H@8DB0

                const color             clr=clrRed,               // F25B

                const double            angle=0.0,                // =0:;>= B5:AB0

                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // A?>A>1 ?@82O7:8

                const bool              back=false,               // =0 704=5< ?;0=5

                const bool              selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89

                const bool              hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2

                const long              z_order=0)                // ?@8>@8B5B =0 =060B85 <KHLN

  {

//--- CAB0=>28< :>>@48=0BK B>G:8 ?@82O7:8, 5A;8 >=8 =5 7040=K

   if(ObjectFind(chart_ID,name)!=-1)

      ObjectDelete(chart_ID,name);

      //--- A1@>A8< 7=0G5=85 >H81:8

      ResetLastError();

//--- A>74048< >1J5:B ""5:AB"

   if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))

     {

      Print(__FUNCTION__,

            ": =5 C40;>AL A>740BL >1J5:B \""5:AB\"! >4 >H81:8 = ",GetLastError());

      return(false);

     }

//--- CAB0=>28< B5:AB

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

//--- CAB0=>28< H@8DB B5:AB0

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

//--- CAB0=>28< @07<5@ H@8DB0

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

//--- CAB0=>28< C3>; =0:;>=0 B5:AB0

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);

//--- CAB0=>28< A?>A>1 ?@82O7:8

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

//--- CAB0=>28< F25B

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O >1J5:B0 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

//--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

//---

Comments