//+------------------------------------------------------------------+
//|                                      FXPT_DayHighestVolume_v1.mq4 |
//|                                         Developed by fxprotrader |
//|                                     http://www.fxpro-trader.com" |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, fxprotrader"
#property description "Day Highest Volume"
#property link      "http://www.fxpro-trader.com"
#property strict
#property indicator_chart_window

 int NumberOfDays    = 5; 

 int TextPos=5;
 string DailyBegin   = "03:00";   
 string DailyEnd     = "20:00";   

 string ID="FXPTVol_";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {

  DeleteObjects(ID);
 
 return;
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {

 DeleteObjects(ID);
  
 Comment("");
  
 return;  
}
//+------------------------------------------------------------------+
//                                                                   +
//+------------------------------------------------------------------+
void DeleteObjects(string label) {
 
 string name;
 int ObjectNum=ObjectsTotal()-1;
   
 for(int cnt=ObjectNum;cnt>=0;cnt--){
 name=ObjectName(cnt);
 if (StringFind(name,label,0)>-1) ObjectDelete(name);
 WindowRedraw();
 }
   
 return;
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start(){

  datetime dt=CurTime();

  for (int i=0; i<NumberOfDays; i++) {
    DrawObjects(dt, ID+"DL"+IntegerToString(i), DailyBegin, DailyEnd,i);
    dt=decDateTradeDay(dt);
    while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
  }
  
 return;
}
//+------------------------------------------------------------------+
//                                                                   +
//+------------------------------------------------------------------+
void DrawObjects(datetime dt, string name, string tb, string te,int thisi){

 datetime t1, t2;
 int      b1, b2;
 string sObjName;
 int vol1;

 t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);
 t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);
 b1=iBarShift(NULL, 0, t1);
 b2=iBarShift(NULL, 0, t2);
 vol1= Volume[Highest(NULL, 0, MODE_VOLUME,((b1-b2)+3),b2-3)];


for (int shift = b2; shift < b1; shift++) {
 if(Volume[shift] == vol1){
sObjName= name+"_botarrow";
 ObjectDelete(sObjName);
 ObjectCreate(sObjName, OBJ_ARROW, 0,Time[shift],Low[shift]);
 ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
 ObjectSet(sObjName,OBJPROP_WIDTH,2);
 ObjectSet(sObjName, OBJPROP_ARROWCODE, 225);
 ObjectSet(sObjName, OBJPROP_COLOR,Aqua);
 }
 }
 
return;
}
//+------------------------------------------------------------------+
//                                                                   +
//+------------------------------------------------------------------+
datetime decDateTradeDay (datetime dt){

 int ty=TimeYear(dt);
 int tm=TimeMonth(dt);
 int td=TimeDay(dt);
 int th=TimeHour(dt);
 int ti=TimeMinute(dt);

 td--;
 if (td==0) {
  tm--;
  if (tm==0) {
   ty--;
   tm=12;
  }
  if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
  if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28;
   if (tm==4 || tm==6 || tm==9 || tm==11) td=30;
 }
 
 return(StrToTime(IntegerToString(ty)+"."+IntegerToString(tm)+"."+IntegerToString(td)+" "+IntegerToString(th)+":"+IntegerToString(ti)));
}
//+------------------------------------------------------------------+

