//+------------------------------------------------------------------+
//|                                                     BarTimer.mq4 |
//|                               Copyright © 2008, Art Royal s.r.o. |
//|                                           Author: Vasyl Gumenyak |  
//|                                           http://www.jiport.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Art Royal s.r.o."
#property link      "http://www.jiport.com/"

#property indicator_chart_window
#property indicator_buffers 0

extern string Notes ="isi dengan M1, M5, M15, M30, H1, H4, D1, W1, MN";
extern string TimeFrame = "M1";
extern string FontName="Arial";
extern int FontSize=14;
extern color FontColor=White;
extern int Corner=0;// values [0-3] - опорный угол
extern int XDistance=250;// x расстояние от опорного угла
extern int YDistance=0;// y расстояние от опорного угла

int lenbase;
int TFinMinute;
string s_base=":...:...:...:...:";// строка для формирования индикатора с ползунком

int init()
  {
   lenbase=StringLen(s_base);
   
   if (TimeFrame == "M1") TFinMinute = 1;
   else if (TimeFrame == "M5") TFinMinute = 5;
   else if (TimeFrame == "M15") TFinMinute = 15;
   else if (TimeFrame == "M30") TFinMinute = 30;
   else if (TimeFrame == "H1") TFinMinute = 60;
   else if (TimeFrame == "H4") TFinMinute = 240;
   else if (TimeFrame == "D1") TFinMinute = 1440;
   else if (TimeFrame == "W1") TFinMinute = 10080;
   else if (TimeFrame == "MN") TFinMinute = 43200;

   return(0);
  }

int deinit()
  {
   if (ObjectFind("BarTimer") != -1) ObjectDelete("BarTimer");
   return(0);
  }

//+------------------------------------------------------------------+
//| ползунок отмечает текущиее положение по времени                  |
//|   относительно начала и конца текущего бара,                     |
//| дополнительно дается доля времени                                |
//|   прошедшего от начала бара в процентах                          |
//+------------------------------------------------------------------+
int start()
  {
   int i=0,sec=0;
   double pc=0.0;
   string time="",s_end="",s_beg="";
/*   
   if(TFinMinute < Period()) {
      ObjectSetText("BarTimer", "Invalid value for TimeFrame Parameter", FontSize, FontName, FontColor);
      return(0);
   }
*/   
   
   if (ObjectFind("BarTimer") == -1) {// если объект не найден - создаем и задаем параметры
     ObjectCreate("BarTimer" , OBJ_LABEL,0,0,0);
     ObjectSet("BarTimer", OBJPROP_XDISTANCE, XDistance);
     ObjectSet("BarTimer", OBJPROP_YDISTANCE, YDistance);
     ObjectSet("BarTimer", OBJPROP_CORNER, Corner);
   }
   sec=TimeCurrent() - TFinMinute * 60 * (TimeCurrent() / (TFinMinute*60));// время в секундах от начала бара
   i=(lenbase-1)*sec/(TFinMinute*60);// позиция ползунка
   pc=100.0*sec/(TFinMinute*60);// время от начала бара в процентах
   if(i>lenbase-1) i=lenbase-1;// возможно излишний контроль границы
   if(i>0) s_beg=StringSubstr(s_base,0,i);
   if(i<lenbase-1) s_end=StringSubstr(s_base,i+1,lenbase-i-1);
   time=StringConcatenate(TimeFrame, "  ",s_beg,"|",s_end,"  ",DoubleToStr(pc,0),"%");
   ObjectSetText("BarTimer", time, FontSize, FontName, FontColor);

   return(0);
  }
//+------------------------------------------------------------------+