Author: Yuriy Tokman (YTG)
5 Views
0 Downloads
0 Favorites
DayFibo
ÿþ//+------------------------------------------------------------------+

//|                                                      DayFibo.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



 string nam = "FiboDay";

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

//| Custom indicator initialization function                         |

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

int OnInit()

  {

//--- indicator buffers mapping

   ObjectDelete(0,nam);

//---

   return(INIT_SUCCEEDED);

  }

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

//| Custom indicator deinitialization function                       |

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

int deinit()

  {

//----

   ObjectDelete(0,nam);

   Comment("");

//----

   return(0);

  }

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

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

  {

//---

 if(Period()>1440){ Alert("Period Error"); return(0);}



 int limit=rates_total-prev_calculated;

 if(prev_calculated==0)limit--;

 else  limit++;

 if(limit>Bars-1440/Period())limit = Bars-1440/Period();

//---

 double o1=0,c1=0,l1=0,h1=0;



 datetime t1 = iTime(Symbol(),1440,1);

 datetime t2 = t1 + (datetime)(1440*60-1);

 int b_1 = iBarShift(Symbol(),0,t1);

 int b_2 = iBarShift(Symbol(),0,t2);

 o1 = iOpen(Symbol(),1440,1);

 c1 = iClose(Symbol(),1440,1);

 h1 = iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,b_1-b_2+1,b_2));

 l1 = iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,b_1-b_2+1,b_2)); 

 double h=h1,l=l1;

 if(o1<c1){h=l1;l=h1;} 

 FiboLevelsCreate(0,nam,0,t1,h,t2,l);

 ObjectSetInteger(0,nam,OBJPROP_LEVELCOLOR,0,clrRed);

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

   return(rates_total);

  }

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

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

//| C>7405B "#@>2=8 $81>=0GG8" ?> 7040==K< :>>@48=0B0<               | 

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

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

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

                      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 >1J5:B0 

                      const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=88 >1J5:B0 

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

                      const bool            back=false,        // =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 >1J5:B0 2?@02> 

                      const bool            hidden=false,       // 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);//ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2); 

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

   ResetLastError(); 

//--- A>74048< "#@>2=8 $81>=0GG8" ?> 7040==K< :>>@48=0B0< 

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

     { 

      Print(__FUNCTION__, 

            ": =5 C40;>AL A>740BL \"#@>2=8 $81>=0GG8\"! >4 >H81:8 = ",GetLastError()); 

      return(false); 

     } 

//--- CAB0=>28< F25B 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- CAB0=>28< AB8;L ;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< 2K45;5=8O >1J5:B0 4;O ?5@5<5I5=89 

//--- ?@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 >1J5:B0 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); 

  }

//----

Comments