//+------------------------------------------------------------------+
//|                                            FXPT_DailyHiLoBox.mq4 |
//|                                         Developed by fxprotrader |
//|                                     http://www.fxpro-trader.com" |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, fxprotrader"
#property link      "http://www.fxpro-trader.com"
//-------- HISTORY----------------
// v0.1 Initial release(112411)
//Modified dayHL.mq4 | Written by: Ice 
//--------------------------------

#property indicator_chart_window
#property indicator_buffers 2

#property indicator_color1 LimeGreen
#property indicator_color2 Red

extern color Rect1Color=Orange;
extern color Rect2Color=Magenta;

extern int BarsInBox=4;
extern int StartTime=12;
extern bool ShowHiLoLines=TRUE;
//---- input parameters\

datetime BT[];
double YesterdayHigh[50];
double YesterdayLow[50];
double YesterdayClose[50];
//---- buffers

double HighArray[];
double LowArray[];

datetime thisbartime=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
// Pivot
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,HighArray);
IndicatorShortName("High Line");

// Resistance 1
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,LowArray);
SetIndexLabel(3,"Low Line");

return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
DeleteObjects();

return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int DeleteObjects()
  {
//---- 

for (int shift=0; shift<Bars; shift++) {
ObjectDelete("RECTH_"+shift);
ObjectDelete("RECTD_"+shift);

  }
  
  return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

int counted_bars=IndicatorCounted();
string sObjName;

//added this because of ArrayResize error
if(ArraySize(BT) != Bars) ArrayResize(BT, Bars);

// Print("Bars = " + Bars);
// Fill BT with bar open TIME
ArrayCopySeries(BT, MODE_TIME);

// Fill temp arrays with High, Low and Close prices per day
ArrayCopySeries(YesterdayHigh, MODE_HIGH, Symbol(), PERIOD_D1);
ArrayCopySeries(YesterdayLow, MODE_LOW, Symbol(), PERIOD_D1);
ArrayCopySeries(YesterdayClose, MODE_CLOSE, Symbol(), PERIOD_D1);

int od = 0;
int dd = 0;


double HighLine;
double LowLine;

//Cycle through all the bars and fill the indicator bars with the Pivot point values
for (int i = 0; i <= Bars; i++) {

if (TimeDay(BT[i]) != od) {
dd++;
HighLine = YesterdayHigh[dd-1];
LowLine = YesterdayLow[dd-1];
od = TimeDay(BT[i]);
}

double PeriodHighest = High[iHighest(NULL,0,MODE_HIGH,BarsInBox,i)];
double PeriodLowest  =  Low[iLowest(NULL,0,MODE_LOW,BarsInBox,i)];


if (TimeHour(Time[i])== StartTime && TimeMinute(Time[i])<=1){  
//if (TimeHour(Time[i])== StartTime){  
// if(thisbartime!=Time[i]){
// thisbartime=Time[i]; 

sObjName= "RECTH_"+i;
 ObjectCreate(sObjName, OBJ_RECTANGLE, 0, Time[i], PeriodLowest,Time[i+BarsInBox],PeriodHighest);
 ObjectSet(sObjName, OBJPROP_STYLE, STYLE_DOT);
  ObjectSet(sObjName, OBJPROP_COLOR,Rect1Color);//GreenYellow
  ObjectSet(sObjName, OBJPROP_BACK, FALSE);

sObjName= "RECTD_"+i;
ObjectCreate(sObjName, OBJ_RECTANGLE, 0, Time[i],LowLine ,Time[i+BarsInBox],HighLine);
 ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
 ObjectSet(sObjName, OBJPROP_COLOR,Rect2Color);
 ObjectSet(sObjName, OBJPROP_BACK, FALSE);
}


if(ShowHiLoLines){
HighArray[i]=HighLine;
LowArray[i]=LowLine;
}
}
//}
//----
return(0);
}
//+------------------------------------------------------------------+