//+------------------------------------------------------------------+
//|                                               PowerLevels_v1.mq4 |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 5

#property indicator_color1 Chartreuse
#property indicator_color2 Red
#property indicator_color3 Yellow

#property indicator_style1 0
#property indicator_style2 0 
#property indicator_style3 2
//---- input parameters
extern bool Line_TEXT =true;
extern int  Shift_TEXT = 0;
//---- buffers

double PrevDayHiBuffer[];
double PrevDayLoBuffer[];
double CurrDayOpenBuffer[];


int fontsize=9;
double PrevDayHi, PrevDayLo, CurrDayOpen ;
double LastHigh,LastLow,x;


//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here

   
   ObjectDelete("PrevDayHi");
   ObjectDelete("PrevDayLo"); 
   ObjectDelete("CurrDayOpen");   
   
//
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;


//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexStyle(2,DRAW_LINE);
      
   SetIndexBuffer(0, PrevDayHiBuffer);
   SetIndexBuffer(1, PrevDayLoBuffer);
   SetIndexBuffer(2, CurrDayOpenBuffer);
   

//---- name for DataWindow and indicator subwindow label
   short_name="Prev Hi-Lo levels";
   IndicatorShortName(short_name);
   SetIndexLabel(0, short_name);

//----
   SetIndexDrawBegin(0,1);
//----
 

//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()

  {
   int    counted_bars=IndicatorCounted();

   int limit, i;
//---- indicator calculation
if (counted_bars==0)
{
   x=Period();
   if (x>240) return(-1);
   	
	if (Line_TEXT == true)
	{
   ObjectCreate("PrevDayHi", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("PrevDayHi", "PrevDayHi               ",fontsize,"Vendra", indicator_color1);
   ObjectCreate("PrevDayLo", OBJ_TEXT, 0, 0, 0);   
   ObjectSetText("PrevDayLo", "PrevDayLo               ",fontsize,"Vendra", indicator_color2); 
   ObjectCreate("CurrDayOpen", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("CurrDayOpen", "CurrDayOpen                ",fontsize,"Vendra", indicator_color3);
   }
   //---- last counted bar will be recounted
//   if(counted_bars>0) counted_bars--;
} 
  limit=(Bars-counted_bars)-1;



for (i=limit; i>=0;i--)
{ 

if (High[i+1]>LastHigh) LastHigh=High[i+1];
if (Low[i+1]<LastLow) LastLow=Low[i+1];
//Print("TimeDay(Time[i]=",TimeDay(Time[i]),"TimeDay(Time[i+1])",TimeDay(Time[i+1]));
if (TimeDay(Time[i])!=TimeDay(Time[i+1]))
   { 
   PrevDayHi=LastHigh;
   PrevDayLo=LastLow;
   CurrDayOpen=Open[i];
   LastLow=Open[i];
   LastHigh=Open[i];

  
   ObjectMove("PrevDayHi", 0, Time[0+Shift_TEXT], PrevDayHi);
   ObjectMove("PrevDayLo", 0, Time[0+Shift_TEXT], PrevDayLo);
   ObjectMove("CurrDayOpen", 0, Time[0+Shift_TEXT], CurrDayOpen);

   }
   
    PrevDayHiBuffer[i]=PrevDayHi;
    PrevDayLoBuffer[i]=PrevDayLo;
    CurrDayOpenBuffer[i]=CurrDayOpen;
}

//----
   return(0);
  }
//+------------------------------------------------------------------+