//+------------------------------------------------------------------+
//|                                                        Hooya.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 DarkGray
#property indicator_color2 Lime
#property indicator_color3 Lime
#property indicator_color4 Yellow
#property indicator_color5 Yellow
#property indicator_color6 Red
#property indicator_color7 Red

extern int pivot_time_hour=9;     // (server) hour for Pivot calc to start
extern int pivot_time_minute=00;   // (server) minute for Pivot calc to start
                                   // so default start time here = 10:30

double PBuffer[];
double S1Buffer[];
double R1Buffer[];
double S2Buffer[];
double R2Buffer[];
double S3Buffer[];
double R3Buffer[];
double S0Buffer[];
double R0Buffer[];
string Pivot="Pivot Point",FibS1="S 1", FibR1="R 1";
string FibS2="S 2", FibR2="R 2", FibS3="S 3", FibR3="R 3";
int fontsize=10;
double P,R,S1,R1,S2,R2,S3,R3;
double LastHigh,LastLow,x;
int i2;

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

   ObjectDelete("");
   ObjectDelete("");
   ObjectDelete("");
   ObjectDelete("");
   ObjectDelete("");
   ObjectDelete("");
   ObjectDelete("");   

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;

   SetIndexStyle(0,DRAW_LINE,0,2,DarkGray);
   SetIndexStyle(1,DRAW_LINE,0,1,Lime);
   SetIndexStyle(2,DRAW_LINE,0,1,Lime);
   SetIndexStyle(3,DRAW_LINE,0,1,Yellow);
   SetIndexStyle(4,DRAW_LINE,0,1,Yellow);
   SetIndexStyle(5,DRAW_LINE,0,1,Red);
   SetIndexStyle(6,DRAW_LINE,0,1,Red);
   SetIndexBuffer(0,PBuffer);
   SetIndexBuffer(1,S1Buffer);
   SetIndexBuffer(2,R1Buffer);
   SetIndexBuffer(3,S2Buffer);
   SetIndexBuffer(4,R2Buffer);
   SetIndexBuffer(5,S3Buffer);
   SetIndexBuffer(6,R3Buffer);


//---- name for DataWindow and indicator subwindow label
   short_name="Hooya";
   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);
   ObjectCreate("", OBJ_TEXT, 0, 0,0);
   ObjectSetText("", "",fontsize,"Arial",White);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
   ObjectCreate("", OBJ_TEXT, 0, 0, 0);
   ObjectSetText("", "",fontsize,"Arial",Silver);
}
  
   if(counted_bars<0) return(-1);
   
   // calc max num of extra bars required to test at each new tick
   int bars_to_test=(pivot_time_hour*60+pivot_time_minute)/Period();

   limit=(Bars-counted_bars)+(bars_to_test+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];

      if (TimeDay(Time[i])!=TimeDay(Time[i+1]))  { 
         
         i2=i;             // test each bar from start of new day looking for first bar >= pivot_time, and exit loop when found
         while(i2>=-1) {   // if not found, pivot_time not reached yet today, i2 =-1 = no pivots yet today
            if(TimeHour(Time[i2])>pivot_time_hour || (TimeHour(Time[i2])==pivot_time_hour&&TimeMinute(Time[i2])>=pivot_time_minute)) {
               break;
               }
            i2--;
            }
               
         P=(Open[i2]);                         // shift calculation point to i2
         R = LastHigh-LastLow;
         R1 = P + (20);
         S1 = P - (20);
         R2 = P + (30);
         S2 = P - (30);
         R3 = P + (35);
         S3 = P - (35);
         LastLow=Open[i2]; LastHigh=Open[i2];  // shift calculation points to i2

         ObjectMove("", 0, Time[i2],P);
         ObjectMove("", 0, Time[i2],S1);
         ObjectMove("", 0, Time[i2],R1);
         ObjectMove("", 0, Time[i2],S2);
         ObjectMove("", 0, Time[i2],R2);
         ObjectMove("", 0, Time[i2],S3);
         ObjectMove("", 0, Time[i2],R3);
         }
         
      // draw line only ater pivot start time       
      if((i<=i2 && counted_bars==0)||(i<=i2 && TimeDay(Time[i])==TimeDay(TimeCurrent()))) {    
         PBuffer[i]=P;
         S1Buffer[i]=S1;
         R1Buffer[i]=R1;
         S2Buffer[i]=S2;
         R2Buffer[i]=R2;
         S3Buffer[i]=S3;
         R3Buffer[i]=R3;
         }
      else  {
         if(counted_bars==0 || (i>i2 && TimeDay(Time[i])==TimeDay(TimeCurrent())))  {
            PBuffer[i]=EMPTY_VALUE;
            S1Buffer[i]=EMPTY_VALUE;
            R1Buffer[i]=EMPTY_VALUE;
            S2Buffer[i]=EMPTY_VALUE;
            R2Buffer[i]=EMPTY_VALUE;
            S3Buffer[i]=EMPTY_VALUE;
            R3Buffer[i]=EMPTY_VALUE;
            }
         }

   }

//----
   return(0);
  }
//+------------------------------------------------------------------+