#property copyright "Copyright © 2010, Aiman"
#property link      "Aiman @ www.carigold.com"
#property indicator_chart_window

string indiname = "Candle_Sequence";

int init(){return(0);}
int deinit()
{
   for(int i=ObjectsTotal();i>=0;i--) 
   {
      if (StringSubstr(ObjectName(i),0,15)==indiname) 
      ObjectDelete(ObjectName(i));
   }
}

int start()
{
   datetime time;
   int shift_start,cnt;
   
   time=iTime (Symbol(), PERIOD_D1, MathAbs(1-DayOfWeek()));

   shift_start=iBarShift(Symbol(),Period(),time,0);
   
   cnt=shift_start;
   while (cnt>-1)
   {
      drawLabel(indiname+DoubleToStr(shift_start-cnt,0),DoubleToStr(shift_start-cnt,0),iLow(Symbol(),Period(),cnt),cnt,labelColor(shift_start-cnt));
      cnt--;
   }
   
   string cperiod[]={"W1","D1","H4","H1","M30","M15","M5","M1"};
   int cs_shift,cs[]={10080,1440,240,60,30,15,5,1};
   int ypost=10;
   double DownTicks,UpTicks;
   
   for (int i=0;i<ArraySize(cs);i++)
   {
      RefreshRates();
      cs_shift=iBarShift(Symbol(),cs[i],time,0);
         
      UpTicks=(iVolume(Symbol(),cs[i],0)+(iClose(Symbol(),cs[i],0)-iOpen(Symbol(),cs[i],0))/Point)/2;
      DownTicks=iVolume(Symbol(),cs[i],0)-UpTicks;

      drawComment(indiname+cperiod[i]+"period",cperiod[i],MediumSpringGreen,10,ypost);
      drawComment(indiname+cperiod[i],DoubleToStr(cs_shift,0),labelColor(cs_shift),50,ypost);
      drawComment(indiname+cperiod[i]+"Downticks",DoubleToStr(NormalizeDouble(DownTicks,0),0),labelColor(NormalizeDouble(DownTicks,0)),100,ypost);
      drawComment(indiname+cperiod[i]+"Upticks",DoubleToStr(NormalizeDouble(UpTicks,0),0),labelColor(NormalizeDouble(UpTicks,0)),150,ypost);
      drawComment(indiname+cperiod[i]+"Time",candleTimeRemaining(cs[i]),White,200,ypost);

      
      ypost=ypost+12;
   }
   drawComment(indiname+"Title","Time Left       Upticks     DnTicks        Seq         TF",MediumSpringGreen,10,ypost);
         
   WindowRedraw();
   return(0);
}
void drawComment (string name, string text, color labelcolor, int xpos, int ypos)
{
   ObjectCreate(name,23,0,0,0);
   ObjectSetText(name,text,8,"Arial",labelcolor);
   ObjectSet(name,101,3);
   ObjectSet(name,9,1);
   ObjectSet(name,102,xpos);
   ObjectSet(name,103,ypos);
}

void drawLabel(string name, string text, double lvl, int shift1, color Color)
{
   if(ObjectFind(name) == -1)
      ObjectCreate(name, OBJ_TEXT, 0, Time[shift1], lvl);
   else 
      ObjectMove(name, 0, Time[shift1], lvl);
   ObjectSetText(name, text, 7, "Comic Sans MS", EMPTY);
   ObjectSet(name, OBJPROP_COLOR, Color);
}

color labelColor (int cnt)
{
   double seq=1;
   while (seq<=cnt)
   {
      if(seq==cnt) return (Red);
      seq=NormalizeDouble(seq*1.618,0);
   }
   if (cnt==0) return (Red);
   return (White);
}

string candleTimeRemaining (int period)
{
   double i;
   int m,s,k;
   string s2;
   m=iTime(0,period,0)+period*60-CurTime();
   i=m/60.0;
   s=m%60;
   if (StringLen(DoubleToStr(s,0))==1) s2= DoubleToStr(s,0)+"0";
   else s2=DoubleToStr(s,0);
   m=(m-m%60)/60;
   return (m+":"+s2);
}