//+----------------------------------------------------------------------+
//|                                                        Timer PIN.mq4 |
//|  Developed by JoeBelCoding for Hanxyork, following his instructions. |
//|                                                Joelrbeltre@gmail.com |
//+----------------------------------------------------------------------+
#property copyright "JoeBelCoding / Hanxyork, free to use as it is, without warranty, not to be sold, contribution to the EAX Dashboard thread"
#property link      "Joelrbeltre@gmail.com"
#property version   "2.5"
#property strict
#property indicator_chart_window
//
//
 bool usePin=true;//Use EAX PIN
input int SignalPin= 19; // EAX Signal PIN Channel
 int copSigPin= 11;  // Signal Source
//
input string tses="::::::Trading Sessions::::::";//Local Time  
//
enum DOW
{
 Sun=0,//Sunday
 Mon=1,//Monday
 Tue=2,//Tuesday
 Wed=3,//Wednesday	
 Thu=4,//Thursday	
 Fri=5,//Friday	
 Sat=6,//Saturday
 Tod=7,//Today
 Off=8,//Off
};
//
//
input DOW day1=7;//Day s1
input string StartHour1="19:00";//Start Hour S1
input string EndHour1="16:00";//End Hour S1
//
input DOW day2=8;//Day s2
input string StartHour2="19:00";//Start Hour S2
input string EndHour2="16:00";//End Hour S2
//
input DOW day3=8;//Day s3
input string StartHour3="19:00";//Start Hour S3
input string EndHour3="16:00";//End Hour S3
//
input DOW day4=8;//Day s4
input string StartHour4="19:00";//Start Hour S4
input string EndHour4="16:00";//End Hour S4
//
input DOW day5=8;//Day s5
input string StartHour5="20:00";//Start Hour S5
input string EndHour5="16:00";//End Hour S5
//
input DOW day6=8;//Day s6
input string StartHour6="19:00";//Start Hour S6
input string EndHour6="16:00";//End Hour S6
//
input DOW day7=8;//Day s7
input string StartHour7="19:00";//Start Hour S7
input string EndHour7="16:00";//End Hour S7
//
input DOW day8=8;//Day s8
input string StartHour8="19:00";//Start Hour S8
input string EndHour8="16:00";//End Hour S8
//
input DOW day9=8;//Day s9
input string StartHour9="19:00";//Start Hour S9
input string EndHour9="16:00";//End Hour S9
//
input DOW day10=8;//Day s10
input string StartHour10="19:00";//Start Hour S10
input string EndHour10="16:00";//End Hour S10
//
input DOW day11=8;//Day s11
input string StartHour11="19:00";//Start Hour S11
input string EndHour11="16:00";//End Hour S11
//
input DOW day12=8;//Day s12
input string StartHour12="19:00";//Start Hour S12
input string EndHour12="16:00";//End Hour S12
//
input DOW day13=8;//Day s13
input string StartHour13="19:00";//Start Hour S13
input string EndHour13="16:00";//End Hour S13
//
input string weeksettings="::::::Weekly Schedule::::::";//  ********
//
input DOW dayStart=8;//Day Start
input string StartHourW="19:00";//Start Hour SW
input DOW dayEnd=8;  //Day End
input string EndHourW="10:50";//End Hour SW
//
input color actColor=clrAqua;//Color Active
input color inactColor=clrGold;//Color Inactive
//
input string pnl="::::::Panel::::::";//  ********
input double xDist=957;//X Distance (L/R)
input double yDist=529;//Y Distance (U/D)
//////////////////////////////////////////
input string eInstance="1";//Instance
string Instance="JBC-"+eInstance+"Timer_EAX";
//
//  Internal Variables
static bool trading=false;
//
//
bool usePanel=true;
color tim_clr[14];
//
int cor=4;double xdis=xDist+2;double ydis=yDist;int xsiz=144;int ysiz=179;
//
int dist=11;
int ystart=18;
//
//  Positions of signals
int sigStart=62,sigPos=27;//Signal Use = sigStart+sigPos; // Multiply sigPos
//
//  Colors and Font size
color titClr=clrLavender;
color timClr=clrLavender;
color arrup=clrAqua;
color arrdown=clrViolet;
double symDis=14;//Distance between symbols
int symFontS=8;//Font Size for Symbols And Sygnal
//
void label(string name,//Name of lable
int corner,
            double xd,double yd,string tx,int fnts,color clr)
{
      ObjectCreate(0,Instance+name,OBJ_LABEL,0,0,0);
      ObjectSet(Instance+name,OBJPROP_CORNER,corner);
      ObjectSet(Instance+name,OBJPROP_XDISTANCE,xd+2);
      ObjectSet(Instance+name,OBJPROP_YDISTANCE, yd+1);
      ObjectSet(Instance+name,OBJPROP_SELECTABLE,false);
      ObjectSetText(Instance+name,tx,fnts,"Arial",clr);
//
}
//
void signal(string name,//Name of lable
int corner,
            double xd,double yd,string tx,string fnts,color clr)
{
      ObjectCreate(0,Instance+name,OBJ_LABEL,0,0,0);
      ObjectSet(Instance+name,OBJPROP_CORNER,corner);
      ObjectSet(Instance+name,OBJPROP_XDISTANCE,xd+2);
      ObjectSet(Instance+name,OBJPROP_YDISTANCE, yd+1);
      ObjectSet(Instance+name,OBJPROP_SELECTABLE,false);
      ObjectSetText(Instance+name,tx,symFontS,fnts,clr);
//
}
//
void createPanel()
{
//  Panel
      ObjectCreate(0,Instance+"box",OBJ_RECTANGLE_LABEL,0,0,0,0);
      ObjectSet(Instance+"box",OBJPROP_CORNER,cor);
      ObjectSet(Instance+"box",OBJPROP_BGCOLOR,clrMidnightBlue);
//ObjectSet(Instance+"box",OBJPROP_BGCOLOR,clrGray);
      ObjectSet(Instance+"box",OBJPROP_XDISTANCE,xDist);
      ObjectSet(Instance+"box",OBJPROP_YDISTANCE, ydis);
      ObjectSet(Instance+"box",OBJPROP_XSIZE, xsiz);
      ObjectSet(Instance+"box",OBJPROP_YSIZE, ysiz);
      ObjectSet(Instance+"box",OBJPROP_BACK,false);
      ObjectSet(Instance+"box",OBJPROP_BORDER_TYPE,1);
//ObjectSet(Instance+"box",OBJPROP_BORDER_COLOR,clrRed);
//  Time
      label(Instance+"Firm",cor,xdis+5,ydis+5,"JBC",6,clrDimGray);
      label(Instance+"Pin",cor,xdis+90,ydis+2,"Pin "+string(SignalPin),symFontS,clrSilver);  
      label(Instance+"timeloc",cor,xdis+25,ydis+2," "+TimeToString(TimeLocal(),TIME_SECONDS),symFontS,titClr);       
//      
      ChartGetInteger(0,CHART_COLOR_BACKGROUND,0); 
//
//
       label(Instance+" timer d"+string(0),cor,xdis+1,ydis+ystart+(dist*0),EnumToString(day1),symFontS,clrLavender);
       label(Instance+" timer d"+string(1),cor,xdis+1,ydis+ystart+(dist*1),EnumToString(day2),symFontS,clrLavender);
       label(Instance+" timer d"+string(2),cor,xdis+1,ydis+ystart+(dist*2),EnumToString(day3),symFontS,clrLavender);
       label(Instance+" timer d"+string(3),cor,xdis+1,ydis+ystart+(dist*3),EnumToString(day4),symFontS,clrLavender);
       label(Instance+" timer d"+string(4),cor,xdis+1,ydis+ystart+(dist*4),EnumToString(day5),symFontS,clrLavender);
       label(Instance+" timer d"+string(5),cor,xdis+1,ydis+ystart+(dist*5),EnumToString(day6),symFontS,clrLavender);
       label(Instance+" timer d"+string(6),cor,xdis+1,ydis+ystart+(dist*6),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(7),cor,xdis+1,ydis+ystart+(dist*7),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(8),cor,xdis+1,ydis+ystart+(dist*8),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(9),cor,xdis+1,ydis+ystart+(dist*9),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(10),cor,xdis+1,ydis+ystart+(dist*10),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(11),cor,xdis+1,ydis+ystart+(dist*11),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(12),cor,xdis+1,ydis+ystart+(dist*12),EnumToString(day7),symFontS,clrLavender);
       label(Instance+" timer d"+string(13),cor,xdis+1,ydis+ystart+(dist*13),EnumToString(dayStart),symFontS,clrLavender);//Week

       label(Instance+" timer t"+string(0),cor,xdis+30,ydis+ystart+(dist*0),StartHour1+" - "+EndHour1+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(1),cor,xdis+30,ydis+ystart+(dist*1),StartHour2+" - "+EndHour2+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(2),cor,xdis+30,ydis+ystart+(dist*2),StartHour3+" - "+EndHour3+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(3),cor,xdis+30,ydis+ystart+(dist*3),StartHour4+" - "+EndHour4+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(4),cor,xdis+30,ydis+ystart+(dist*4),StartHour5+" - "+EndHour5+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(5),cor,xdis+30,ydis+ystart+(dist*5),StartHour6+" - "+EndHour6+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(6),cor,xdis+30,ydis+ystart+(dist*6),StartHour7+" - "+EndHour7+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(7),cor,xdis+30,ydis+ystart+(dist*7),StartHour8+" - "+EndHour8+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(8),cor,xdis+30,ydis+ystart+(dist*8),StartHour9+" - "+EndHour9+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(9),cor,xdis+30,ydis+ystart+(dist*9),StartHour10+" - "+EndHour10+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(10),cor,xdis+30,ydis+ystart+(dist*10),StartHour11+" - "+EndHour11+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(11),cor,xdis+30,ydis+ystart+(dist*11),StartHour12+" - "+EndHour12+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(12),cor,xdis+30,ydis+ystart+(dist*12),StartHour13+" - "+EndHour13+" ",symFontS,clrLavender);
       label(Instance+" timer t"+string(13),cor,xdis+30,ydis+ystart+(dist*13),StartHourW+" - "+EndHourW+" "+EnumToString(dayEnd)+" ",symFontS,clrLavender);//Week
//
//
}
//
string tfToString(ENUM_TIMEFRAMES tfs)
{
  string tf = "";
//  
switch (tfs)
  {
    case PERIOD_CURRENT:return("CUR");break;
    case PERIOD_D1:return("D1");break;
    case PERIOD_H1:return("H1");break;
    case PERIOD_H4:return("H4");break;
    case PERIOD_M1:return("M1");break;
    case PERIOD_M15:return("M15");break;
    case PERIOD_M30:return("M30");break;
    case PERIOD_M5:return("M5");break;
    case PERIOD_MN1:return("MN1");break;
    case PERIOD_W1:return("W1");break;
//
  }
//    
//    
  return (tf);
}
//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
if(!usePin){usePanel=false;};
//
if(usePanel)
   {
      createPanel();
    };  
   if(usePin){EventSetMillisecondTimer(300);};
//
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                   EAX PIN Code                                   |
//+------------------------------------------------------------------+
string symbols[]={ "AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD",
                   "CADCHF","CADJPY","CHFJPY",
                   "EURAUD","EURCAD","EURCHF","EURGBP","EURJPY","EURNZD","EURUSD",
                   "GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD",
                   "NZDCAD","NZDCHF","NZDJPY","NZDUSD",
                   "USDCAD","USDCHF","USDJPY" };// 28 pairs
string suffix = StringSubstr(Symbol(),6,0);
//
#define NONE 0
#define BUY 1
#define SELL 2
//
void OnTimer() {
//
string IndicatorFileName=WindowExpertName();
//
trading=false;
//
//
      label(Instance+"timeloc",cor,xdis+25,ydis+2," "+TimeToString(TimeLocal(),TIME_SECONDS),symFontS,titClr); 
//
//
//
      if(CheckHour(StartHour1,EndHour1,day1)){trading=true;tim_clr[0]=actColor;
       label(Instance+" timer t"+string(0),cor,xdis+30,ydis+ystart+(dist*0),StartHour1+" - "+EndHour1+" ",symFontS,actColor);
       label(Instance+" timer d"+string(0),cor,xdis+1,ydis+ystart+(dist*0),EnumToString(day1),symFontS,actColor);
       }else{tim_clr[0]=inactColor;  
       label(Instance+" timer t"+string(0),cor,xdis+30,ydis+ystart+(dist*0),StartHour1+" - "+EndHour1+" ",symFontS,inactColor);
       label(Instance+" timer d"+string(0),cor,xdis+1,ydis+ystart+(dist*0),EnumToString(day1),symFontS,inactColor);};
//     
      if(CheckHour(StartHour2,EndHour2,day2)){trading=true;tim_clr[1]=actColor;
       label(Instance+" timer d"+string(1),cor,xdis+1,ydis+ystart+(dist*1),EnumToString(day2),symFontS,actColor);
       label(Instance+" timer t"+string(1),cor,xdis+30,ydis+ystart+(dist*1),StartHour2+" - "+EndHour2+" ",symFontS,actColor);     
       }else{tim_clr[1]=inactColor;
       label(Instance+" timer d"+string(1),cor,xdis+1,ydis+ystart+(dist*1),EnumToString(day2),symFontS,inactColor);
       label(Instance+" timer t"+string(1),cor,xdis+30,ydis+ystart+(dist*1),StartHour2+" - "+EndHour2+" ",symFontS,inactColor);};
//     
      if(CheckHour(StartHour3,EndHour3,day3)){trading=true;tim_clr[2]=actColor;
       label(Instance+" timer d"+string(2),cor,xdis+1,ydis+ystart+(dist*2),EnumToString(day3),symFontS,actColor);
       label(Instance+" timer t"+string(2),cor,xdis+30,ydis+ystart+(dist*2),StartHour3+" - "+EndHour3+" ",symFontS,actColor);     
       }else{tim_clr[2]=inactColor;
       label(Instance+" timer d"+string(2),cor,xdis+1,ydis+ystart+(dist*2),EnumToString(day3),symFontS,inactColor);
       label(Instance+" timer t"+string(2),cor,xdis+30,ydis+ystart+(dist*2),StartHour3+" - "+EndHour3+" ",symFontS,inactColor); };
//     
      if(CheckHour(StartHour4,EndHour4,day4)){trading=true;tim_clr[3]=actColor;
       label(Instance+" timer d"+string(3),cor,xdis+1,ydis+ystart+(dist*3),EnumToString(day4),symFontS,actColor);
       label(Instance+" timer t"+string(3),cor,xdis+30,ydis+ystart+(dist*3),StartHour4+" - "+EndHour4+" ",symFontS,actColor);     
       }else{tim_clr[3]=inactColor;
       label(Instance+" timer d"+string(3),cor,xdis+1,ydis+ystart+(dist*3),EnumToString(day4),symFontS,inactColor);
       label(Instance+" timer t"+string(3),cor,xdis+30,ydis+ystart+(dist*3),StartHour4+" - "+EndHour4+" ",symFontS,inactColor);};     
//     
      if(CheckHour(StartHour5,EndHour5,day5)){trading=true;tim_clr[4]=actColor;
       label(Instance+" timer d"+string(4),cor,xdis+1,ydis+ystart+(dist*4),EnumToString(day5),symFontS,actColor);
       label(Instance+" timer t"+string(4),cor,xdis+30,ydis+ystart+(dist*4),StartHour5+" - "+EndHour5+" ",symFontS,actColor);     
       }else{tim_clr[4]=inactColor;
       label(Instance+" timer d"+string(4),cor,xdis+1,ydis+ystart+(dist*4),EnumToString(day5),symFontS,inactColor);
       label(Instance+" timer t"+string(4),cor,xdis+30,ydis+ystart+(dist*4),StartHour5+" - "+EndHour5+" ",symFontS,inactColor); };
//     
      if(CheckHour(StartHour6,EndHour6,day6)){trading=true;tim_clr[5]=actColor;
       label(Instance+" timer d"+string(5),cor,xdis+1,ydis+ystart+(dist*5),EnumToString(day6),symFontS,actColor);
       label(Instance+" timer t"+string(5),cor,xdis+30,ydis+ystart+(dist*5),StartHour6+" - "+EndHour6+" ",symFontS,actColor);     
       }else{tim_clr[5]=inactColor;
       label(Instance+" timer d"+string(5),cor,xdis+1,ydis+ystart+(dist*5),EnumToString(day6),symFontS,inactColor);
       label(Instance+" timer t"+string(5),cor,xdis+30,ydis+ystart+(dist*5),StartHour6+" - "+EndHour6+" ",symFontS,inactColor);};
//     
      if(CheckHour(StartHour7,EndHour7,day7)){trading=true;tim_clr[6]=actColor;
       label(Instance+" timer d"+string(6),cor,xdis+1,ydis+ystart+(dist*6),EnumToString(day7),symFontS,actColor);
       label(Instance+" timer t"+string(6),cor,xdis+30,ydis+ystart+(dist*6),StartHour7+" - "+EndHour7+" ",symFontS,actColor);     
       }else{tim_clr[6]=inactColor;
       label(Instance+" timer d"+string(6),cor,xdis+1,ydis+ystart+(dist*6),EnumToString(day7),symFontS,inactColor);
       label(Instance+" timer t"+string(6),cor,xdis+30,ydis+ystart+(dist*6),StartHour7+" - "+EndHour7+" ",symFontS,inactColor);};
//
      if(CheckHour(StartHour8,EndHour8,day8)){trading=true;tim_clr[7]=actColor;
       label(Instance+" timer d"+string(7),cor,xdis+1,ydis+ystart+(dist*7),EnumToString(day8),symFontS,actColor);
       label(Instance+" timer t"+string(7),cor,xdis+30,ydis+ystart+(dist*7),StartHour8+" - "+EndHour8+" ",symFontS,actColor);     
       }else{tim_clr[7]=inactColor;
       label(Instance+" timer d"+string(7),cor,xdis+1,ydis+ystart+(dist*7),EnumToString(day8),symFontS,inactColor);
       label(Instance+" timer t"+string(7),cor,xdis+30,ydis+ystart+(dist*7),StartHour8+" - "+EndHour8+" ",symFontS,inactColor);};
//
      if(CheckHour(StartHour9,EndHour9,day9)){trading=true;tim_clr[8]=actColor;
       label(Instance+" timer d"+string(8),cor,xdis+1,ydis+ystart+(dist*8),EnumToString(day9),symFontS,actColor);
       label(Instance+" timer t"+string(8),cor,xdis+30,ydis+ystart+(dist*8),StartHour9+" - "+EndHour9+" ",symFontS,actColor);     
       }else{tim_clr[8]=inactColor;
       label(Instance+" timer d"+string(8),cor,xdis+1,ydis+ystart+(dist*8),EnumToString(day9),symFontS,inactColor);
       label(Instance+" timer t"+string(8),cor,xdis+30,ydis+ystart+(dist*8),StartHour9+" - "+EndHour9+" ",symFontS,inactColor);};
//
      if(CheckHour(StartHour10,EndHour10,day10)){trading=true;tim_clr[9]=actColor;
       label(Instance+" timer d"+string(9),cor,xdis+1,ydis+ystart+(dist*9),EnumToString(day10),symFontS,actColor);
       label(Instance+" timer t"+string(9),cor,xdis+30,ydis+ystart+(dist*9),StartHour10+" - "+EndHour10+" ",symFontS,actColor);     
       }else{tim_clr[9]=inactColor;
       label(Instance+" timer d"+string(9),cor,xdis+1,ydis+ystart+(dist*9),EnumToString(day10),symFontS,inactColor);
       label(Instance+" timer t"+string(9),cor,xdis+30,ydis+ystart+(dist*9),StartHour10+" - "+EndHour10+" ",symFontS,inactColor);};       
//
      if(CheckHour(StartHour11,EndHour11,day11)){trading=true;tim_clr[10]=actColor;
       label(Instance+" timer d"+string(10),cor,xdis+1,ydis+ystart+(dist*10),EnumToString(day11),symFontS,actColor);
       label(Instance+" timer t"+string(10),cor,xdis+30,ydis+ystart+(dist*10),StartHour11+" - "+EndHour11+" ",symFontS,actColor);     
       }else{tim_clr[10]=inactColor;
       label(Instance+" timer d"+string(10),cor,xdis+1,ydis+ystart+(dist*10),EnumToString(day11),symFontS,inactColor);
       label(Instance+" timer t"+string(10),cor,xdis+30,ydis+ystart+(dist*10),StartHour11+" - "+EndHour11+" ",symFontS,inactColor);};
//
      if(CheckHour(StartHour12,EndHour12,day12)){trading=true;tim_clr[11]=actColor;
       label(Instance+" timer d"+string(11),cor,xdis+1,ydis+ystart+(dist*11),EnumToString(day12),symFontS,actColor);
       label(Instance+" timer t"+string(11),cor,xdis+30,ydis+ystart+(dist*11),StartHour12+" - "+EndHour12+" ",symFontS,actColor);     
       }else{tim_clr[11]=inactColor;
       label(Instance+" timer d"+string(11),cor,xdis+1,ydis+ystart+(dist*11),EnumToString(day12),symFontS,inactColor);
       label(Instance+" timer t"+string(11),cor,xdis+30,ydis+ystart+(dist*11),StartHour12+" - "+EndHour12+" ",symFontS,inactColor);};
//
      if(CheckHour(StartHour13,EndHour13,day13)){trading=true;tim_clr[12]=actColor;
       label(Instance+" timer d"+string(12),cor,xdis+1,ydis+ystart+(dist*12),EnumToString(day13),symFontS,actColor);
       label(Instance+" timer t"+string(12),cor,xdis+30,ydis+ystart+(dist*12),StartHour13+" - "+EndHour13+" ",symFontS,actColor);     
       }else{tim_clr[12]=inactColor;
       label(Instance+" timer d"+string(12),cor,xdis+1,ydis+ystart+(dist*12),EnumToString(day13),symFontS,inactColor);
       label(Instance+" timer t"+string(12),cor,xdis+30,ydis+ystart+(dist*12),StartHour13+" - "+EndHour13+" ",symFontS,inactColor);};                     
//
//
//
//  Weekly session
      if(CheckHour(StartHourW,EndHourW,dayStart,dayEnd)){trading=true;tim_clr[13]=actColor;
       label(Instance+" timer d"+string(13),cor,xdis+1,ydis+ystart+(dist*13),EnumToString(dayStart),symFontS,actColor);
       label(Instance+" timer t"+string(13),cor,xdis+30,ydis+ystart+(dist*13),StartHourW+" - "+EndHourW+" "+EnumToString(dayEnd)+" ",symFontS,actColor);
       }else{tim_clr[13]=inactColor;
       label(Instance+" timer d"+string(13),cor,xdis+1,ydis+ystart+(dist*13),EnumToString(dayStart),symFontS,inactColor);
       label(Instance+" timer t"+string(13),cor,xdis+30,ydis+ystart+(dist*13),StartHourW+" - "+EndHourW+" "+EnumToString(dayEnd)+" ",symFontS,inactColor);};
//
//
if(usePin)
{
//
int i;//,g=GlobalVariablesTotal();
double gSignal=0; 
   for (i=0;i<28;i++) {//Symbols loop
//
if(trading){
gSignal=1;GlobalVariableSet(symbols[i]+"pin"+string(SignalPin),BUY);//Set a buy signal
}else{gSignal=0;GlobalVariableSet(symbols[i]+"pin"+string(SignalPin),NONE);};//Set a buy signal}
//
//
//  code to copy another pin
//
//  Copy the signal and set the value
//  gSignal=GlobalVariableGet(symbols[i]+"pin"+string(copSigPin));  
//          GlobalVariableSet(symbols[i]+"pin"+string(SignalPin),gSignal);
//
//
//
//double ydistM=symDis*i;
//string bArr=CharToStr(233);
//string sArr=CharToStr(234);
//string bGArr=" "+CharToStr(233);
//string sGArr=" "+CharToStr(234);
//         
//if(usePanel){
//if (gSignal==1){ signal(Instance+"GSig"+symbols[i],cor,xdis+sigStart+(sigPos*4),ydis+40+ydistM,bGArr,"Wingdings",arrup);}
//if (gSignal==2){ signal(Instance+"GSig"+symbols[i],cor,xdis+sigStart+(sigPos*4),ydis+40+ydistM,sGArr,"Wingdings",arrdown);}
//if (gSignal==0){ signal(Instance+"GSig"+symbols[i],cor,xdis+sigStart+(sigPos*4),ydis+40+ydistM," n","Wingdings 3",clrDarkSlateBlue);};};
//////////////////////////////////////////////////    
      }
   }
  
}
//
void OnDeinit(const int reason)
{
 EventKillTimer();     
   for (int i=0;i<28;i++)
    {
         //if (GlobalVariableCheck(symbols[i]+"pin"+SignalPin)) 
            GlobalVariableDel(symbols[i]+"pin"+string(SignalPin));     
    };
 if(usePin){    for (int i = ObjectsTotal(); i >= 0; i--) 
   {
    string  name = ObjectName(i);
      if (StringFind(name, Instance, 0) > -1) 
      {//Comment(StringFind(name, Instance, 0));
          ObjectDelete(name);
      } 
   };};
//   
}
//
//
bool CheckHour(string sta,string end,int dSta,int dEnd=-1)
{
//
bool     result=false,day=false,time=false;
//
MqlDateTime timeLoc;TimeLocal(timeLoc);//Print(time);
string   hoursandminutes=TimeToString(TimeLocal(),TIME_MINUTES);
int      dow=timeLoc.day_of_week;//Comment(dow);
//
//  
  if(dEnd==-1){
     if(dow==dSta)day=true;}else
      {
         if(dSta==Off||dEnd==Off){day=false;}else
            {
             if(dSta<=dEnd){ if(dow>=dSta && dow<=dEnd){day=true;} else {day=false;}; };
             if(dSta>dEnd){ if(dow>=dSta || dow<=dEnd){day=true;} else {day=false;}; };
//        
//
            };                            
//     
      };if(dSta==7)day=true;
//  
  if(sta<end)
  {
 if(hoursandminutes>=sta && hoursandminutes<=end)
     {time=true;} else {time=false;}; 
  };
//  
  if(sta>end)
     {
      if(hoursandminutes>=sta || hoursandminutes<=end)
     {time=true;} else {time=false;}; 
     };  
//
//
if(dEnd>=0&&dSta<7){if(dow != dEnd && dow > dSta)time=true;};//If weekly, use the time filter only the last day.

      if(day&&time){result=true;}else{result=false;};
//
//Print(result,hoursandminutes);
//
//
   return (result);
}