//+------------------------------------------------------------------+
//|                                SDK-Pivots-v1.2.mq4 
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, f451"
#property link      ""


#property indicator_chart_window
extern bool   Indicator_On               = true; 
extern int    Local_HrsFromGMT           = 0;    //Data collection Tz of your server
extern int    Dest_HrsFromGMT            = 0;    //New destination Tz governing data

extern color  Main_color                 = clrRed;
extern int    Main_style                 = 0;
extern int    Main_Size                  = 1; 
extern color  Mid_Color                  = clrDeepSkyBlue;
extern int    Mid_style                  = 2;
extern int    Mid_Size                   = 0; 

extern color  Yesterday_HiLoCol          = BurlyWood;
extern int    Yesterday_Style            = 2;
extern int    Yesterday_Size             = 1; 
extern bool   Yesterday_Show             = true;

extern color  TodayOpen_Col              = clrWhite;
extern int    TodayOpen_Style            = 0;
extern int    TodayOpen_Size             = 3; 
extern bool   ShowTodayOpen              = true;

extern color  DaySeperator_Col           = RosyBrown;
extern int    DaySeperator_Style         = 2;
extern int    DaySeperator_Size          = 1;
extern bool   DaySeperator_Show          = true;

extern  bool  ShowCamRight               = true;
extern color  Text_Col                   = DarkOrange; 
extern int    LevSize                    = 8;
extern double TXT_shift                  = 0.0 ;

extern int    Adj_UpDn                   = 0;
extern int    Adj_LtRt                   = 0;
extern int    TextSize                   = 12;

extern string CusNam                     = "RIBD=2";
extern bool   FBckGnd                    = true;
input int     Line_adj                   = 0;

int MoveLabels, MoveLabels2;
int A,B; //relabeler triggers
int digits; //decimal digits for symbol's price
int offset;
double pts;
int    WINDOA          = 0;
bool FullScreenLines = false;
string ObjPivot     = "[PIVOT]";
string ObjSeparator = "[TIME]";
string ObjDeslev    = "[LEVDO]";
int    Days         = 1; 
string Titem00;

int    mod;
bool   Deinitialized; 
int    AutShift;
double LineEnd;
int    Chart_Scale;
datetime levRTime = 0;
double   Poinsht,Digi;
int    TimeA;

string dayString[];
int idxfirstbar[];
int idxlastbar[];
double day_open[];
double day_close[];
double day_high[];
double day_low[];

double PeT15[];
double PeT14[];
double PeT13[];
double PeT12[];
double PeT11[];
double PeT10[];
double PeT09[];
double PeT08[];
double PeT07[];
double PeT06[];
double PeT05[];
double PeT04[];
double PeT03[];
double PeT02[];
double PeT01[];

double PeB01[];	
double PeB02[];
double PeB03[];
double PeB04[];
double PeB05[];
double PeB06[];	
double PeB07[];
double PeB08[];
double PeB09[];
double PeB10[];
double PeB11[];	
double PeB12[];
double PeB13[];
double PeB14[];
double PeB15[];
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init()
{
   pts = MarketInfo( Symbol(), MODE_POINT  ); 
   if (Digits == 5 || (Digits == 3 && StringFind(Symbol(), "JPY") != -1))
	{ pts = Point*10; }
	else if (Digits == 6 || (Digits == 4 && StringFind(Symbol(), "JPY") != -1))
	{ pts = Point*100; }
	else{ pts = Point; }
	if (Ask>10) digits=2; else digits=4;
	
	  if ( Digits == 0 )      { Digi = 0 ;  Poinsht = 1 ;     } 
        if ( Digits == 1 )      { Digi = 1 ;  Poinsht = 1 ;     }      
        if ( Digits == 2 )      { Digi = 2 ;  Poinsht = 10 ;    }
        if ( Digits == 3 )      { Digi = 3 ;  Poinsht =100 ;    }
        if ( Digits == 4 )      { Digi = 4 ;  Poinsht = 1000 ;  }
        if ( Digits == 5 )      { Digi = 5 ;  Poinsht = 10000 ; }   
        
//----------------------------------------------------------------
     Deinitialized = false; 
  Chart_Scale = ChartScaleGet();
        if(Chart_Scale == 0) {LineEnd = 5000 + Line_adj;   AutShift = TXT_shift + 240; }
  else {if(Chart_Scale == 1) {LineEnd = 3000 + Line_adj;   AutShift = TXT_shift + 120; }     
  else {if(Chart_Scale == 2) {LineEnd = 1500 + Line_adj;   AutShift = TXT_shift + 60;  }
  else {if(Chart_Scale == 3) {LineEnd = 700  + Line_adj;   AutShift = TXT_shift + 28;  }
  else {if(Chart_Scale == 4) {LineEnd = 500  + Line_adj;   AutShift = TXT_shift + 18;  }
  else                       {LineEnd = 300  + Line_adj;   AutShift = TXT_shift + 10;   }
   }}}}    
//------------------------------------------------------------  
//-------------------------------------------------------------	
  Titem00 = CusNam + "TiN000";  
	mod = 1;
	
   return(0);
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int deinit()
{   
   int obj_total= ObjectsTotal(); 
   for (int i= obj_total; i>=0; i--)
   {
      string name= ObjectName(i);   
      if ((StringSubstr(name,0,7)==ObjPivot) || (StringSubstr(name,0,6)==ObjSeparator)) ObjectDelete(name);
      if ((StringSubstr(name,0,7) == ObjDeslev))  ObjectDelete(name);
      if ( StringSubstr(name,0,6) == CusNam )    {ObjectDelete(name);}
   }    
   return(0);
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
   if (Indicator_On == false) {deinit();return(0);}
   if (Period() > PERIOD_H4) {deinit();return(0);}
  
   static datetime timelastupdate= 0;
   static datetime lasttimeframe= 0;  
   
   datetime startofday= 0,
            startline= 0,
            endline=0,
            startlabel= 0;
            
    int HHE,HVE;
    if  (WINDOA==0||1||2||3||4)
        {   HHE = 600 + Adj_LtRt;  HVE = 5 + Adj_UpDn ;
        }
                      
   ArrayResize(dayString,Days+1);
   ArrayResize(day_open,Days+1);
   ArrayResize(day_close,Days+1);
   ArrayResize(day_high,Days+1);
   ArrayResize(day_low,Days+1);
   ArrayResize(idxfirstbar,Days+1);//cs4[idx]
   ArrayResize(idxlastbar,Days+1);
   
   ArrayResize(PeT15,Days+1);
   ArrayResize(PeT14,Days+1);
   ArrayResize(PeT13,Days+1);
   ArrayResize(PeT12,Days+1);
   ArrayResize(PeT11,Days+1);
   ArrayResize(PeT10,Days+1);
   ArrayResize(PeT09,Days+1);
   ArrayResize(PeT08,Days+1);
   ArrayResize(PeT07,Days+1);
   ArrayResize(PeT06,Days+1);
   ArrayResize(PeT05,Days+1);
   ArrayResize(PeT04,Days+1);
   ArrayResize(PeT03,Days+1);
   ArrayResize(PeT02,Days+1);
   ArrayResize(PeT01,Days+1);
   
   ArrayResize(PeB01,Days+1);
   ArrayResize(PeB02,Days+1);
   ArrayResize(PeB03,Days+1);
   ArrayResize(PeB04,Days+1);
   ArrayResize(PeB05,Days+1);
   ArrayResize(PeB06,Days+1);
   ArrayResize(PeB07,Days+1);
   ArrayResize(PeB08,Days+1);
   ArrayResize(PeB09,Days+1);
   ArrayResize(PeB10,Days+1);
   ArrayResize(PeB11,Days+1);
   ArrayResize(PeB12,Days+1);
   ArrayResize(PeB13,Days+1);
   ArrayResize(PeB14,Days+1);
   ArrayResize(PeB15,Days+1);
          
   lasttimeframe= Period();
   timelastupdate= CurTime();   
 
   //-----let's find out which bars mark the beginning and end going back the user specified days -----
   ComputeDayIndices(Local_HrsFromGMT, Dest_HrsFromGMT, Days);   
   GetOHLC(idxfirstbar,idxlastbar, day_open, day_high, day_low, day_close);

   //----clear all objects before redrawing screen
   int obj_total= ObjectsTotal(); 
   for (int x= obj_total; x>=0; x--)
   {  string name= ObjectName(x);   
      if(StringSubstr(name,0,7)==ObjPivot) ObjectDelete(name);
   }    

//=====================================================================================================
   if(DaySeperator_Show == true)
   {
      int DZ = Dest_HrsFromGMT;
      string GMT = "(GMT +0)  ";
      for (int dy = 0; dy < Days; dy++)
      {  SetTimeLine("Day "+DoubleToStr(dy,0), dayString[dy] + GMT, idxfirstbar[dy]+0, 0, 0);
   }  }
//================================================================================================================= 
   {
   
     for (int idx = 1; idx <= Days; idx++)
   { 
     double A15 = 1.875 * mod;
     double A14 = 1.750 * mod;
     double A13 = 1.625 * mod;
     double A12 = 1.500 * mod;
     double A11 = 1.375 * mod;
     double A10 = 1.250 * mod;
     double A09 = 1.125 * mod;
     double A08 = 1.000 * mod;
     double A07 = 0.875 * mod;
     double A06 = 0.750 * mod;
     double A05 = 0.625 * mod;
     double A04 = 0.500 * mod;
     double A03 = 0.375 * mod;
     double A02 = 0.250 * mod;
     double A01 = 0.125 * mod;

       PeT15[idx] = day_open[idx-1] + (day_open[idx-1] * A15 / 100) ;
       PeT14[idx] = day_open[idx-1] + (day_open[idx-1] * A14 / 100) ;
       PeT13[idx] = day_open[idx-1] + (day_open[idx-1] * A13 / 100) ;
       PeT12[idx] = day_open[idx-1] + (day_open[idx-1] * A12 / 100) ;
       PeT11[idx] = day_open[idx-1] + (day_open[idx-1] * A11 / 100) ;
       PeT10[idx] = day_open[idx-1] + (day_open[idx-1] * A10 / 100) ;
       PeT09[idx] = day_open[idx-1] + (day_open[idx-1] * A09 / 100) ;
       PeT08[idx] = day_open[idx-1] + (day_open[idx-1] * A08 / 100) ;
       PeT07[idx] = day_open[idx-1] + (day_open[idx-1] * A07 / 100) ;
       PeT06[idx] = day_open[idx-1] + (day_open[idx-1] * A06 / 100) ;
       PeT05[idx] = day_open[idx-1] + (day_open[idx-1] * A05 / 100) ;
       PeT04[idx] = day_open[idx-1] + (day_open[idx-1] * A04 / 100) ;
       PeT03[idx] = day_open[idx-1] + (day_open[idx-1] * A03 / 100) ;
       PeT02[idx] = day_open[idx-1] + (day_open[idx-1] * A02 / 100) ;
       PeT01[idx] = day_open[idx-1] + (day_open[idx-1] * A01 / 100) ;
 
       PeB01[idx] = day_open[idx-1] - (day_open[idx-1] * A01 / 100) ;
       PeB02[idx] = day_open[idx-1] - (day_open[idx-1] * A02 / 100) ;
       PeB03[idx] = day_open[idx-1] - (day_open[idx-1] * A03 / 100) ;
       PeB04[idx] = day_open[idx-1] - (day_open[idx-1] * A04 / 100) ;
       PeB05[idx] = day_open[idx-1] - (day_open[idx-1] * A05 / 100) ;
       PeB06[idx] = day_open[idx-1] - (day_open[idx-1] * A06 / 100) ;
       PeB07[idx] = day_open[idx-1] - (day_open[idx-1] * A07 / 100) ;
       PeB08[idx] = day_open[idx-1] - (day_open[idx-1] * A08 / 100) ;
       PeB09[idx] = day_open[idx-1] - (day_open[idx-1] * A09 / 100) ;
       PeB10[idx] = day_open[idx-1] - (day_open[idx-1] * A10 / 100) ;
       PeB11[idx] = day_open[idx-1] - (day_open[idx-1] * A11 / 100) ;
       PeB12[idx] = day_open[idx-1] - (day_open[idx-1] * A12 / 100) ;
       PeB13[idx] = day_open[idx-1] - (day_open[idx-1] * A13 / 100) ;
       PeB14[idx] = day_open[idx-1] - (day_open[idx-1] * A14 / 100) ;
       PeB15[idx] = day_open[idx-1] - (day_open[idx-1] * A15 / 100) ;
       
//===========================================================================================================
   }}
   if(FullScreenLines==false&&A==0) //lines start at separators, no margin labels in this mode
       {   startline = Time[idxfirstbar[0]+1];  //was "+1", "+0" stops line at Separator
           if (Time[0] > Time[idxfirstbar[0]]){startline = Time[idxfirstbar[0]];}
       }
   if(FullScreenLines==false&&A==1) //lines started at separators, but switched to full screen, value of B governs margin labels
       { startline = WindowFirstVisibleBar();
       }      
   if(FullScreenLines==true) 
      {     startline = WindowFirstVisibleBar();
      } 
//================================================================================================================================      
      for ( idx = 1; idx <= Days; idx++)
      {    startline = Time[idxlastbar[idx]-1];  //was "+1", "+0" stops line at Separator
           endline   = Time[idxlastbar[idx-1]-1]; 
           TimeA = (int) Time[0]+(Period()*(int)LineEnd);   
  
   SetLevel(" PET15 ["+DoubleToStr(idx,0)+"] ", PeT15[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET14 ["+DoubleToStr(idx,0)+"] ", PeT14[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET13 ["+DoubleToStr(idx,0)+"] ", PeT13[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET12 ["+DoubleToStr(idx,0)+"] ", PeT12[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET11 ["+DoubleToStr(idx,0)+"] ", PeT11[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET10 ["+DoubleToStr(idx,0)+"] ", PeT10[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET09 ["+DoubleToStr(idx,0)+"] ", PeT09[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET08 ["+DoubleToStr(idx,0)+"] ", PeT08[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET07 ["+DoubleToStr(idx,0)+"] ", PeT07[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET06 ["+DoubleToStr(idx,0)+"] ", PeT06[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET05 ["+DoubleToStr(idx,0)+"] ", PeT05[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET04 ["+DoubleToStr(idx,0)+"] ", PeT04[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET03 ["+DoubleToStr(idx,0)+"] ", PeT03[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PET02 ["+DoubleToStr(idx,0)+"] ", PeT02[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PET01 ["+DoubleToStr(idx,0)+"] ", PeT01[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   
   SetLevel(" Open ["+DoubleToStr(idx,0)+"] ", day_open[idx-1],TodayOpen_Col,TodayOpen_Style, TodayOpen_Size, startline, 0,TimeA);
   
   SetLevel(" PEB01 ["+DoubleToStr(idx,0)+"] ", PeB01[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB02 ["+DoubleToStr(idx,0)+"] ", PeB02[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB03 ["+DoubleToStr(idx,0)+"] ", PeB03[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB04 ["+DoubleToStr(idx,0)+"] ", PeB04[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB05 ["+DoubleToStr(idx,0)+"] ", PeB05[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB06 ["+DoubleToStr(idx,0)+"] ", PeB06[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB07 ["+DoubleToStr(idx,0)+"] ", PeB07[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB08 ["+DoubleToStr(idx,0)+"] ", PeB08[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB09 ["+DoubleToStr(idx,0)+"] ", PeB09[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB10 ["+DoubleToStr(idx,0)+"] ", PeB10[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB11 ["+DoubleToStr(idx,0)+"] ", PeB11[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB12 ["+DoubleToStr(idx,0)+"] ", PeB12[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB13 ["+DoubleToStr(idx,0)+"] ", PeB13[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);
   SetLevel(" PEB14 ["+DoubleToStr(idx,0)+"] ", PeB14[idx], Main_color,Main_style,Main_Size,startline, 0, TimeA);
   SetLevel(" PEB15 ["+DoubleToStr(idx,0)+"] ", PeB15[idx], Mid_Color, Mid_style, Mid_Size, startline, 0, TimeA);

  //=============================================================================== 
    levRTime = Time[0]+Period()*60*AutShift;     
   if (ShowCamRight == true) 
   
       LevelRight("NAA15", DoubleToStr(A15,3)+"   "+ DoubleToStr(PeT15[idx],(int)Digi), PeT15[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA14", DoubleToStr(A14,3)+"   "+ DoubleToStr(PeT14[idx],(int)Digi), PeT14[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA13", DoubleToStr(A13,3)+"   "+ DoubleToStr(PeT13[idx],(int)Digi), PeT13[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA12", DoubleToStr(A12,3)+"   "+ DoubleToStr(PeT12[idx],(int)Digi), PeT12[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA11", DoubleToStr(A11,3)+"   "+ DoubleToStr(PeT11[idx],(int)Digi), PeT11[idx], Text_Col, levRTime, LevSize) ;
     
       LevelRight("NAA10", DoubleToStr(A10,3)+"   "+ DoubleToStr(PeT10[idx],(int)Digi), PeT10[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA09", DoubleToStr(A09,3)+"   "+ DoubleToStr(PeT09[idx],(int)Digi), PeT09[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA08", DoubleToStr(A08,3)+"   "+ DoubleToStr(PeT08[idx],(int)Digi), PeT08[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA07", DoubleToStr(A07,3)+"   "+ DoubleToStr(PeT07[idx],(int)Digi), PeT07[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA06", DoubleToStr(A06,3)+"   "+ DoubleToStr(PeT06[idx],(int)Digi), PeT06[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA05", DoubleToStr(A05,3)+"   "+ DoubleToStr(PeT05[idx],(int)Digi), PeT05[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA04", DoubleToStr(A04,3)+"   "+ DoubleToStr(PeT04[idx],(int)Digi), PeT04[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA03", DoubleToStr(A03,3)+"   "+ DoubleToStr(PeT03[idx],(int)Digi), PeT03[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NAA02", DoubleToStr(A02,3)+"   "+ DoubleToStr(PeT02[idx],(int)Digi), PeT02[idx], Text_Col, levRTime, LevSize) ;   
       LevelRight("NAA01", DoubleToStr(A01,3)+"   "+ DoubleToStr(PeT01[idx],(int)Digi), PeT01[idx], Text_Col, levRTime, LevSize) ;
   
       LevelRight("NAA00", "Open     "+ DoubleToStr(day_open[idx-1],(int)Digi), day_open[idx-1], Text_Col, levRTime, LevSize) ;
     
       LevelRight("NBA01", DoubleToStr(A01,3)+"   "+ DoubleToStr(PeB01[idx],(int)Digi), PeB01[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA02", DoubleToStr(A02,3)+"   "+ DoubleToStr(PeB02[idx],(int)Digi), PeB02[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA03", DoubleToStr(A03,3)+"   "+ DoubleToStr(PeB03[idx],(int)Digi), PeB03[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA04", DoubleToStr(A04,3)+"   "+ DoubleToStr(PeB04[idx],(int)Digi), PeB04[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA05", DoubleToStr(A05,3)+"   "+ DoubleToStr(PeB05[idx],(int)Digi), PeB05[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA06", DoubleToStr(A06,3)+"   "+ DoubleToStr(PeB06[idx],(int)Digi), PeB06[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA07", DoubleToStr(A07,3)+"   "+ DoubleToStr(PeB07[idx],(int)Digi), PeB07[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA08", DoubleToStr(A08,3)+"   "+ DoubleToStr(PeB08[idx],(int)Digi), PeB08[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA09", DoubleToStr(A09,3)+"   "+ DoubleToStr(PeB09[idx],(int)Digi), PeB09[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA10", DoubleToStr(A10,3)+"   "+ DoubleToStr(PeB10[idx],(int)Digi), PeB10[idx], Text_Col, levRTime, LevSize) ;
       
       LevelRight("NBA11", DoubleToStr(A11,3)+"   "+ DoubleToStr(PeB11[idx],(int)Digi), PeB11[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA12", DoubleToStr(A12,3)+"   "+ DoubleToStr(PeB12[idx],(int)Digi), PeB12[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA13", DoubleToStr(A13,3)+"   "+ DoubleToStr(PeB13[idx],(int)Digi), PeB13[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA14", DoubleToStr(A14,3)+"   "+ DoubleToStr(PeB14[idx],(int)Digi), PeB14[idx], Text_Col, levRTime, LevSize) ;
       LevelRight("NBA15", DoubleToStr(A15,3)+"   "+ DoubleToStr(PeB15[idx],(int)Digi), PeB15[idx], Text_Col, levRTime, LevSize) ;
       
       LevelRight("YHA01", "YD Hi                  ", day_high[idx], Yesterday_HiLoCol, levRTime, LevSize) ;   
       LevelRight("YLA01", "YD Lo                  ", day_low[idx] , Yesterday_HiLoCol, levRTime, LevSize) ;
   
   }    
    
//===========================================================================
for ( idx = 1; idx <= Days; idx++)
  { 
   string message;
   double PerA =  iClose(NULL,0,0);
   double PerB = (iClose(NULL,0,0) - day_open[idx-1]) ;
   double PerC = (day_open[idx-1] *100) ;
   double PerD = 0 ;
      message = Symbol()+"CROSSAA OPEN AT = " +   DoubleToStr( day_open[idx-1],Digits);
      
     if     ( PerB != 0 )   { PerD = (PerB / PerC)*10000 ; }
     else   { PerD = (PerB / PerC + 0.0000001)*10000 ;
            Alert(message); }
     string PerE  = DoubleToStr(PerD,3);
 
   //----------------------------------------
       
                              { ObjectCreate (Titem00, OBJ_LABEL,WINDOA, 0, 0);
 if  (iClose(NULL,0,0) > day_open[idx-1] ){ObjectSetText(Titem00,"("+PerE+" %)", TextSize, "Tahoma Bold", Lime);}
 if  (iClose(NULL,0,0) < day_open[idx-1] ){ObjectSetText(Titem00,"("+PerE+" %)", TextSize, "Tahoma Bold", Red);}
                                ObjectSet    (Titem00, OBJPROP_CORNER,1);
                                ObjectSet    (Titem00, OBJPROP_XDISTANCE, HHE);
                                ObjectSet    (Titem00, OBJPROP_YDISTANCE, HVE ); 
   }}    
//==============================================================================================================================================
   //---- Yesterday High/Low
   if (Yesterday_Show == true)
   { for ( idx = 1; idx <= Days; idx++)
      {   startline = Time[idxlastbar[idx]-1];  //was "+1", "+0" stops line at Separator
          endline   = Time[idxlastbar[idx-1]-1];
        
      if(Yesterday_Style>0){Yesterday_Size=0;}
      SetLevel(" yHigh ["+DoubleToStr(idx,0)+"] ",day_high[idx],Yesterday_HiLoCol,Yesterday_Style, Yesterday_Size, startline, 0, TimeA);      
      SetLevel(" yLow ["+DoubleToStr(idx,0)+"] ",day_low[idx],  Yesterday_HiLoCol,Yesterday_Style, Yesterday_Size, startline, 0, TimeA);
   }}
   return(0);
} 
//+-------------------------------------------------------------------------------------+
//| Get Open, High, Low, Close of the day                                               |
//+-------------------------------------------------------------------------------------+
void GetOHLC(int &idxfirstbar2[], int &idxlastbar2[], double &open[], double &high[], double &low[], double &close[])
{
   for (int d = 0; d <= Days; d++)
   {  high[d] = -99999; 
      low[d] =  +99999; 
      for (int k = idxfirstbar2[d]; k>=idxlastbar2[d]; k--)
      {  if (open[d]==0)  // grab first value for open
         open[d]  = Open[k];                           
         high[d]  = MathMax(High[k], high[d]);
         low[d]   = MathMin(Low[k], low[d]);      
         close[d] = Close[k];
  }  } }

//+-------------------------------------------------------------------------------------+
//| Compute index of first/last bar of Yesterday and today                              |
//+-------------------------------------------------------------------------------------+
void ComputeDayIndices(int tzlocal, int tzdest, int days)
{     
   int tzdiff= tzlocal - tzdest,
       tzdiffsec= tzdiff*3600,
       dayminutes= 24 * 60,
       barsperday= dayminutes/Period();
   
   int dayofweek= TimeDayOfWeek(Time[0] - tzdiffsec),  // what day is today in the dest timezone?
       dayofweektofind= -1; 
    
   idxfirstbar[0]= 0; 
   for (int z = 0; z <= days; z++)
   { switch (dayofweek) 
      {  case 6: // sat
         case 0: // sun
         case 1: // mon
               dayofweektofind = 5; // Yesterday in terms of trading was previous friday
               break;           
         default:
               dayofweektofind = dayofweek -1;
               break;
      }
      //----search  backwards for the last occurrence (backwards) of the day today (today's first bar)-----------
      for (int i=(z*barsperday)+1; i<=(z+1)*barsperday+1; i++) 
      {
         datetime timec= Time[i] - tzdiffsec;
         if (TimeDayOfWeek(timec)!=dayofweek) 
         {
            idxfirstbar[z]= i-1;
            idxlastbar[z+1] = i;
            break;
   }  } } }

//+-----------------------------------------------------------------------------------------+
//| Helper sub-routine that creates lines and their labels                                  |                                                                                  |
//+-----------------------------------------------------------------------------------------+
void SetLevel(string text, double level, color col1, int linestyle,
        int thickness, datetime startline, int CC, datetime endline = 0, int type = 0)
{
          digits= Digits; 
   string labelname, linename;
   
   if (endline==0) endline = Time[0];
   {  labelname = ObjPivot+" " + text + " Label";
      linename= ObjPivot + " " + text + " Line";
   }

   //----create or move the horizontal line-------------------------------------------------      
   int Z;
   if (CC == 0){Z = OBJ_TREND;}
   if (CC == 1){Z = OBJ_HLINE;}  
     if (  ObjectFind  (linename) != 0) 
        {
           ObjectCreate(linename, Z, 0, startline, level, endline, level);
           ObjectSet   (linename, OBJPROP_RAY, false);
           ObjectSet   (linename, OBJPROP_STYLE, linestyle);
           ObjectSet   (linename, OBJPROP_COLOR, col1);
           ObjectSet   (linename, OBJPROP_WIDTH, thickness);
           ObjectSet   (linename, OBJPROP_BACK, true); 
   }
   else{   ObjectMove  (linename, 1, endline, level);
           ObjectMove  (linename, 0, startline, level);
  }    }
//+-------------------------------------------------------------------------------------------+
//| Helper=draws vertical timelines & gets "Yesterday/today" from elsewhere and displays them.|                                                        
//+-------------------------------------------------------------------------------------------+
void SetTimeLine(string objname, string text, int idx, color col1, double vleveltext) 
{
    string name= "[TIME] " + objname; int x= Time[idx];
      if (  ObjectFind   (name) != 0)
         { 
            ObjectCreate(name, OBJ_TREND, 0, x, 0, x, 100);
            ObjectSet   (name, OBJPROP_STYLE, DaySeperator_Style);
            ObjectSet   (name, OBJPROP_COLOR, DaySeperator_Col);
            ObjectSet   (name, OBJPROP_WIDTH, DaySeperator_Size); 
         }
   else  {  ObjectMove  (name, 0, x, 0); 
            ObjectMove  (name, 1, x, 100);
         }  
   }   
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+         
void LevelRight(string labelname4, string des4,  double level4,   color col4,   datetime startlabel4, int Size4)
  {
   string name4= "[LEVDO]" + labelname4; 
    if (      ObjectFind   (name4) == -1      )
          {   ObjectCreate (name4,OBJ_TEXT,0,0,0);
              ObjectSetText(name4, des4,LevSize,"Arial",col4);
              ObjectSet    (name4,OBJPROP_TIME1,startlabel4); 
              ObjectSet    (name4,OBJPROP_PRICE1, level4);
             
              ObjectSet    (name4,OBJPROP_ANCHOR,ANCHOR_RIGHT);
              ObjectSet    (name4,OBJPROP_SELECTABLE,false);
          }
  else    {   ObjectCreate (name4,OBJ_TEXT,0,0,0);
              ObjectSetText(name4, des4,LevSize,"Arial",col4);
              ObjectSet    (name4,OBJPROP_TIME1,startlabel4);
              ObjectSet    (name4,OBJPROP_PRICE1, level4);
             
              ObjectSet    (name4,OBJPROP_ANCHOR,ANCHOR_RIGHT);
              ObjectSet    (name4,OBJPROP_SELECTABLE,false);
  }      }
//+-------------------------------------------------------------------------------------------+                           
//+------------------------l   
//+-------------------------------------------------------------------------------------------+                           
//+------------------------line description-------------------------------------------------+  
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)                                                    
  {
  Chart_Scale = ChartScaleGet();
  init();  
  }
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+
int ChartScaleGet()
  {
  long result = -1;
  ChartGetInteger(0,CHART_SCALE,0,result);
  return((int)result);
  }    
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+


