//+------------------------------------------------------------------+
//|                   PSAR_FastReporter_MultiSymbol_MultiTF_Ver1.mq4 |
//|                                   Copyright 2017, Made by EEECAD |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Made by EEECAD"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
extern string Symbol_Set = "Symbol Setting";
extern int    MaximumSymbol   = 30;
extern bool   SymbolListFilter = false;
extern string SymbolList = "EURUSD,GBPUSD,AUDUSD,GBPJPY";
extern string TF_Set = "Time Frame Setting";
extern bool   TF_M1_Enable = true; 
extern int    M1_Signals_Valid_Before = 6;
//...
extern bool   TF_M5_Enable = true; 
extern int    M5_Signals_Valid_Before = 10;
//...
extern bool   TF_M15_Enable = true; 
extern int    M15_Signals_Valid_Before = 10;
//...
extern bool   TF_M30_Enable = true; 
extern int    M30_Signals_Valid_Before = 10;
//...
extern bool   TF_H1_Enable = true; 
extern int    H1_Signals_Valid_Before = 10;
//...
extern bool   TF_H4_Enable = true; 
extern int    H4_Signals_Valid_Before = 10;
//...
extern bool   TF_D1_Enable = true;  
extern int    D1_Signals_Valid_Before = 10;
//...
extern string Panel_Set = "Panel Setting";
extern int    XPos=10;
extern int    YPos=18;
extern int    XSize=650;
extern int    YSize=150;
extern int    ArrowSize = 13;
extern string Color_Set = "Color Setting";
extern color   Table_BGColor=clrTeal;
extern color   Header_BGColor=clrOrange;
extern color   BuySignalColor  = clrLime;
extern color   SellSignalColor = clrRed; 
extern color   NoSignalColor = clrNavy;  
extern color   FontColor=clrNavy;
extern string PASR_Set = "Parabolic SAR Setting";
extern double Step = 0.02;
extern double Maximum = 0.2;
extern string Alert_Set = "Alert Setting";
extern bool   PopUp_Alert_Enable = true;
extern bool   Email_Alert_Enable = false;
extern bool   Notification_Alert_Enable = false;
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES TimeFrame1 = PERIOD_M1; 
ENUM_TIMEFRAMES TimeFrame2 = PERIOD_M5; 
ENUM_TIMEFRAMES TimeFrame3 = PERIOD_M15; 
ENUM_TIMEFRAMES TimeFrame4 = PERIOD_M30; 
ENUM_TIMEFRAMES TimeFrame5 = PERIOD_H1; 
ENUM_TIMEFRAMES TimeFrame6 = PERIOD_H4; 
ENUM_TIMEFRAMES TimeFrame7 = PERIOD_D1; 
ENUM_TIMEFRAMES TimeFrame8 = PERIOD_W1; 
ENUM_TIMEFRAMES TimeFrame9 = PERIOD_MN1; 
int    StartSignalScroll = 0;
int    ActualTotalSymbol = 0;
int    TotalValidSymbols = 0;
datetime LastCalcTime;
bool   initial = true;
datetime LastDrawTime;
//+------------------------------------------------------------------+
bool     Refresh_M1_Enable = true;
bool     Refresh_M5_Enable = true;
bool     Refresh_M15_Enable = true;
bool     Refresh_M30_Enable = true;
//+------------------------------------------------------------------+
datetime Last_M1_ScanTime;
datetime Last_M5_ScanTime;
datetime Last_M15_ScanTime;
datetime Last_M30_ScanTime;
datetime Last_H1_ScanTime;
datetime Last_H4_ScanTime;
datetime Last_D1_ScanTime;
datetime LastReportTime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping   
   ActualTotalSymbol = SymbolsTotal(true);
   if(ActualTotalSymbol>MaximumSymbol)
    ActualTotalSymbol = MaximumSymbol;
   EventSetTimer(1);
   Comment("");
   IndicatorShortName("EEECAD.V10");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+  
void OnDeinit(const int reason)
  {
//---
   for(int i=0; i<=12; i++)
    ObjectDelete(ChartID(),"LLL"+IntegerToString(i));
   ObjectsDeleteAll();
   EventKillTimer();
//---  
  }  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   RefreshRates();
   Dashboard();  
//---  
  }
//+------------------------------------------------------------------+
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[])
  {
//---
  Dashboard();  
//---   
   if(LastDrawTime!=Time[1])
    {
      int bars = iBars(Symbol(),PERIOD_CURRENT)-10;          
      LastDrawTime = Time[1];
      for(int i=0; i<bars-1; i++)
       {
          double spotvalue  = iSAR(Symbol(),PERIOD_CURRENT,Step,Maximum,i);//iCustom(Symbol(),PERIOD_CURRENT,"Parabolic_Well",Step,Maximum,0,i);
          //double spotvalue1 = iSAR(Symbol(),PERIOD_CURRENT,Step,Maximum,i+1);
          //spot[i] = spotvalue; 
          DrawArrow("Spot"+TimeToString(Time[i]),Time[i],spotvalue,clrOrange,108);                     
       }  
    }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
void DrawArrow(string name, datetime time, double price, color cl, int code)
  {
//---
      ObjectDelete(ChartID(),name);
      ObjectCreate(ChartID(),name,OBJ_ARROW,0,time,price);
      ObjectSet(name,OBJPROP_COLOR,cl);
      ObjectSet(name,OBJPROP_WIDTH,1);
      ObjectSet(name,OBJPROP_ARROWCODE,code);            
      ObjectSet(name,OBJPROP_SELECTABLE,false);      
//---  
  }
//+------------------------------------------------------------------+
long DiffTime(datetime time1, datetime time2)
  {
//---
      long result = time1-time2;
      return(MathAbs(result));      
//---  
  }
//+------------------------------------------------------------------+  
void Dashboard()
   {                           
         //---         
         string OBJName="LLL0";                        
         //---
         string DetailLine1  = "Instrument";                  
         string DetailLine2  = "Current Price";                  
         string DetailLine3  = "Price Difference";                  
         string DetailLine4  = "Conversion";                  
         string DetailLine5  = "Lot";                  
         string DetailLine6  = "Value";                  
         string DetailLine7  = "Margin";                  
         string DetailLine8  = "Price";                  
         string DetailLine9  = "LST : "+TimeToString(TimeCurrent());                  
         string DetailLine10 = "_--10--_";                  
         string SymName      = "";
         int    ColumnDiff   = 0;
         string helptext1     = "@ : Made by EN.hamed dehghani (EEECAD)";                               
         string helptext2     = "H2 : Up arrow show us buy opportnity";                               
         string helptext3     = "H3 : Up arrow show us sell opportnity";                               
         string helptext4     = "H4 : Horizental arrow show us no signal";
         string helptext5     = "H5 : Open trade by click on symbol name";
         string helptext6     = "H6 : Open buy trade if buy arrow be more than sell arrow";
         string helptext7     = "In Future : I will add more selectable strategies";         
         string helptext8     = "Time : "+TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS);         
         int    colwidth      = 60;
         //---Help Display         
         /*OBJName = "Help_LLL0";
         ObjectCreate(ChartID(),OBJName,OBJ_RECTANGLE_LABEL,0,0,0);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+15);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+30);
         ObjectSet(OBJName,OBJPROP_XSIZE,350);
         ObjectSet(OBJName,OBJPROP_YSIZE,150);
         ObjectSet(OBJName,OBJPROP_BGCOLOR,clrWhite);         
         //----
         OBJName = "Help_LLL1";
         ObjectCreate(ChartID(),OBJName,OBJ_RECTANGLE_LABEL,0,0,0);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+15);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos);
         ObjectSet(OBJName,OBJPROP_XSIZE,350);
         ObjectSet(OBJName,OBJPROP_YSIZE,30);
         ObjectSet(OBJName,OBJPROP_BGCOLOR,Header_BGColor);                  
         //---
         OBJName = "Help_LLL2";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,"EEECAD_NIKA_PROGRAM_HELP",12,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+65);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);         
         //---
         OBJName = "Help_LLL3";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext1,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+40);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);                  
         //---
         OBJName = "Help_LLL4";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext2,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+55);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);                  
         //---
         OBJName = "Help_LLL5";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext3,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+70);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);                           
         //---
         OBJName = "Help_LLL6";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext4,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+85);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);                           
         //---
         OBJName = "Help_LLL7";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext5,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+100);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);                           
         //---
         OBJName = "Help_LLL8";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext6,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+115);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);    
         //---
         OBJName = "Help_LLL9";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext7,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+20);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+130);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);  
         //---
         OBJName = "Help_LLL10";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,helptext8,10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XSize+100);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+155);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);  */                                       
         //---Signal Display              
         int subwindow = ChartWindowOnDropped();
         OBJName = "Signal_LLL0";
         //if(ObjectFind(ChartID(),OBJName)<0)
          //{
            //ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_RECTANGLE_LABEL,subwindow,0,0);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(GetColumnNum()*ColumnDiff));
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+30);
            ObjectSet(OBJName,OBJPROP_XSIZE,GetColumnNum()*75);         
            ObjectSet(OBJName,OBJPROP_BGCOLOR,Table_BGColor);                   
            //----
            OBJName = "Signal_LLL1";
            //ObjectDelete(ChartID(),OBJName);            
            ObjectCreate(ChartID(),OBJName,OBJ_RECTANGLE_LABEL,subwindow,0,0);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff));
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos);
            ObjectSet(OBJName,OBJPROP_XSIZE,GetColumnNum()*75);         
            ObjectSet(OBJName,OBJPROP_YSIZE,30);
            ObjectSet(OBJName,OBJPROP_ZORDER,0);
            ObjectSet(OBJName,OBJPROP_BGCOLOR,Header_BGColor);           
          //}       
         //---
         OBJName = "Signal_LLL2";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
         ObjectSetText(OBJName,"Time : "+TimeToString(TimeCurrent(),TIME_SECONDS),8,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+30);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
         ObjectSet(OBJName,OBJPROP_ZORDER,1);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
         //---           
         int StartPos = 150;            
         if(TF_M1_Enable==true)
          {
            OBJName = "Signal_TF1";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame1)+":"+GetRemain(TimeFrame1),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //---                                      
         if(TF_M5_Enable==true)
          {
            OBJName = "Signal_TF2";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame2)+":"+GetRemain(TimeFrame2),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //---                  
         if(TF_M15_Enable==true)
          {
            OBJName = "Signal_TF3";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame3)+":"+GetRemain(TimeFrame3),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //--- 
         if(TF_M30_Enable==true)
          {
            OBJName = "Signal_TF4";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame4)+":"+GetRemain(TimeFrame4),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //---
         if(TF_H1_Enable==true)
          {
            OBJName = "Signal_TF5";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame5)+":"+GetRemain(TimeFrame5),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);            
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //--- 
         if(TF_H4_Enable==true)
          {
            OBJName = "Signal_TF6";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame6)+":"+GetRemain(TimeFrame6),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);            
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //---         
         if(TF_D1_Enable==true)
          {
            OBJName = "Signal_TF7";
            ObjectDelete(ChartID(),OBJName);
            ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
            ObjectSetText(OBJName,GetTFString(TimeFrame7)+":"+GetRemain(TimeFrame7),8,"Arial",FontColor);         
            ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
            ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
            ObjectSet(OBJName,OBJPROP_ZORDER,1);            
            ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
            StartPos+=colwidth;
          }
         //---                 
         /*OBJName = "Signal_TF8";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,GetTFString(TimeFrame8),10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+500);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);
         //---      
         OBJName = "Signal_TF9";
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
         ObjectSetText(OBJName,GetTFString(TimeFrame9),10,"Arial",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+550);
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+8);
         ObjectSet(OBJName,OBJPROP_COLOR,clrNavy);*/
         //---                                  
         OBJName="SignalUpScroll";         
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
         ObjectSetText(OBJName,CharToString(217),20,"WingDings",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+GetColumnNum()*(colwidth+10));
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+35);
         ObjectSet(OBJName,OBJPROP_SELECTABLE,false);            
         ObjectSet(OBJName,OBJPROP_COLOR,FontColor);            
         //....                                       
         OBJName="SignalDnScroll";         
         ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
         ObjectSetText(OBJName,CharToString(218),20,"WingDings",FontColor);         
         ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+GetColumnNum()*(colwidth+10));
         ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+65);
         ObjectSet(OBJName,OBJPROP_SELECTABLE,false);            
         ObjectSet(OBJName,OBJPROP_COLOR,FontColor);            
         //....     
         string SignalEmail1 = "";
         string SignalEmail2 = "";                                                 
         string SignalEmail3 = ""; 
         int    poscounter   = 0; 
         //....                                                        
         /*if(LastCalcTime != iTime(Symbol(),PERIOD_M1,1))// && TimeSeconds(TimeCurrent())<=15)
          {
            Comment("");    
            initial = false;        
            LastCalcTime = iTime(Symbol(),PERIOD_M1,1);
          }         
         else
          {
            if(initial==false)
             return;
          }*/
         //.... 
         //Comment("Last Calculation was : "+TimeToString(TimeCurrent(),TIME_SECONDS));        
         bool RefreshAlert = false;
         if(StartSignalScroll<ActualTotalSymbol)
         for(int j=StartSignalScroll; j<=ActualTotalSymbol; j++)     
          {
            SymName = SymbolName(j,true);
            int SignalArrowCode1 = 0;
            int SignalArrowCode2 = 0;
            color ArrowColor = clrWhite;
            StartPos = 150;
            //...
            if(SymbolListFilter==true)
            if(StringFind(SymbolList,SymName,0)<0)
             continue;
            //...
            if(StringLen(SymName)>0 && StartSignalScroll<=poscounter)
             {
               OBJName = "Signal_"+SymName;
               ObjectCreate(ChartID(),OBJName,OBJ_BUTTON,subwindow,0,0);
               ObjectSetText(OBJName,SymName,10,"Arial",FontColor);         
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_XSIZE,115);
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_YSIZE,25);
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+35);
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_COLOR,FontColor);
               ObjectSetInteger(ChartID(),OBJName,OBJPROP_BGCOLOR,Header_BGColor);               
               //---           
               if(TF_M1_Enable==true)                            
               if(Last_M1_ScanTime!=iTime(Symbol(),PERIOD_M1,1))
                {
                  if(RefreshAlert==true)
                     Alert("Last M1 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                
                  OBJName = SymName+"Signal-TF1";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame1);//,MA_Period1,MA_Method1,MACandle1,MAStatus1);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame1,SignalArrowCode1,MA_Period1,MA_Method1,MACandle1,MAStatus12);
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                  
                  //SignalEmail1 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame1)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);             
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;
                }
               //---                                      
               if(TF_M5_Enable==true)
               if(Last_M5_ScanTime!=iTime(Symbol(),PERIOD_M5,1))
                {
                  if(RefreshAlert==true)                
                     Alert("Last M5 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                
                  OBJName = SymName+"Signal-TF2";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame2);//GetSignalCode(SymName,TimeFrame2,MA_Period2,MA_Method2,MACandle2,MAStatus2);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame2,SignalArrowCode1,MA_Period2,MA_Method2,MACandle2,MAStatus22);
                  //SignalEmail2  += "\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame2)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                                  
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;                  
                }
               //---                  
               if(TF_M15_Enable==true)
               if(Last_M15_ScanTime!=iTime(Symbol(),PERIOD_M15,1))
                {
                  if(RefreshAlert==true)                
                     Alert("Last M15 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                
                  OBJName = SymName+"Signal-TF3";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame3);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
                  //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                               
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;                  
                }
               //--- 
               if(TF_M30_Enable==true)
               if(Last_M30_ScanTime!=iTime(Symbol(),PERIOD_M30,1))
                {
                  if(RefreshAlert==true)                
                     Alert("Last M30 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                
                  OBJName = SymName+"Signal-TF4";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame4);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
                  //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                                 
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;                  
                }
               //---   
               if(TF_H1_Enable==true)
               if(Last_H1_ScanTime!=iTime(Symbol(),PERIOD_H1,1))
                {
                  if(RefreshAlert==true)                
                     Alert("Last H1 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                
                  OBJName = SymName+"Signal-TF5";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame5);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
                  //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                               
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;                  
                }
               //---  
               if(TF_H4_Enable==true)
               if(Last_H4_ScanTime!=iTime(Symbol(),PERIOD_H4,1))
                {    
                  if(RefreshAlert==true)                            
                     Alert("Last H4 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));                  
                  OBJName = SymName+"Signal-TF6";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame6);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
                  //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                             
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                  StartPos+=colwidth;                  
               }
               //---   
               if(TF_D1_Enable==true)
               if(Last_D1_ScanTime!=iTime(Symbol(),PERIOD_D1,1))
                {    
                  if(RefreshAlert==true)                            
                     Alert("Last D1 Scan Time Was : "+TimeToString(TimeCurrent(),TIME_SECONDS));
                  OBJName = SymName+"Signal-TF7";
                  SignalArrowCode1 = GetSignalCode(SymName,TimeFrame7);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
                  SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
                  //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
                  if(SignalArrowCode1==233)
                   ArrowColor = BuySignalColor;
                  if(SignalArrowCode1==234)
                   ArrowColor = SellSignalColor; 
                  if(SignalArrowCode1==243)
                   ArrowColor = NoSignalColor;                                 
                  ObjectCreate(ChartID(),OBJName,OBJ_LABEL,subwindow,0,0);
                  ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
                  ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+StartPos);
                  ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
                  ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
                }
               //---        
               /*OBJName = SymName+"Signal-TF8";
               SignalArrowCode1 = GetSignalCode(SymName,TimeFrame8);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
               SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
               //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
               if(SignalArrowCode1==233)
                ArrowColor = BuySignalColor;
               if(SignalArrowCode1==234)
                ArrowColor = SellSignalColor; 
               if(SignalArrowCode1==243)
                ArrowColor = NoSignalColor;                              
               ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
               ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
               ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+500);
               ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
               ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);
               //---       
               OBJName = SymName+"Signal-TF9";
               SignalArrowCode1 = GetSignalCode(SymName,TimeFrame9);//GetSignalCode(SymName,TimeFrame3,MA_Period3,MA_Method3,MACandle3,MAStatus3);
               SignalArrowCode2 = 0;//GetSignalCode2(SymName,TimeFrame3,SignalArrowCode1,MA_Period3,MA_Method3,MACandle3,MAStatus32);
               //SignalEmail3 +="\n Symbol Signal : "+SymName+" Signal Time Frame : "+GetTFString(TimeFrame3)+" Direction Status1 : "+GetDirectionText(SignalArrowCode1)+" Direction Status2 : "+GetDirectionText(SignalArrowCode2);                            
               if(SignalArrowCode1==233)
                ArrowColor = BuySignalColor;
               if(SignalArrowCode1==234)
                ArrowColor = SellSignalColor; 
               if(SignalArrowCode1==243)
                ArrowColor = NoSignalColor;                    
               ObjectCreate(ChartID(),OBJName,OBJ_LABEL,0,0,0);
               ObjectSetText(OBJName,CharToString(uchar(SignalArrowCode1))+CharToString(uchar(SignalArrowCode2)),ArrowSize,"WingDings",ArrowColor);         
               ObjectSet(OBJName,OBJPROP_XDISTANCE,XPos+(8*ColumnDiff)+550);
               ObjectSet(OBJName,OBJPROP_YDISTANCE,YPos+(poscounter-StartSignalScroll+1)*35);
               ObjectSet(OBJName,OBJPROP_COLOR,ArrowColor);*/
               //--- 
               RefreshAlert = false;                                                                                                     
             }
             poscounter++;
          }
          TotalValidSymbols = poscounter;
          ObjectSet("Signal_LLL0",OBJPROP_YSIZE,(poscounter+1)*30);
          initial = false;
          /*if(Last_M1_ScanTime!=iTime(Symbol(),PERIOD_M1,1))
           Last_M1_ScanTime  = iTime(Symbol(),PERIOD_M1,1);
           
          if(Last_M5_ScanTime!=iTime(Symbol(),PERIOD_M5,1))                           
           Last_M5_ScanTime  = iTime(Symbol(),PERIOD_M5,1);
           
          if(Last_M15_ScanTime!=iTime(Symbol(),PERIOD_M15,1))                           
           Last_M15_ScanTime = iTime(Symbol(),PERIOD_M15,1);                
            
          if(Last_M30_ScanTime!=iTime(Symbol(),PERIOD_M30,1))            
           Last_M30_ScanTime = iTime(Symbol(),PERIOD_M30,1);    
            
          if(Last_H1_ScanTime!=iTime(Symbol(),PERIOD_H1,1))            
           Last_H1_ScanTime  = iTime(Symbol(),PERIOD_H1,1);    
            
          if(Last_H4_ScanTime!=iTime(Symbol(),PERIOD_H4,1))            
           Last_H4_ScanTime  = iTime(Symbol(),PERIOD_H4,1); 
               
          if(Last_D1_ScanTime!=iTime(Symbol(),PERIOD_D1,1))            
           Last_D1_ScanTime  = iTime(Symbol(),PERIOD_D1,1);                                  */
         
   }   
//+------------------------------------------------------------------+
string GetTFString(ENUM_TIMEFRAMES TimeFrame)
   {
//---
         if(TimeFrame==PERIOD_CURRENT)
          {
               if(TimeFrame==1)
                return("M1");
               if(TimeFrame==5)
                return("M5");          
               if(TimeFrame==15)
                return("M15");          
               if(TimeFrame==30)
                return("M30");
               if(TimeFrame==60)
                return("H1");
               if(TimeFrame==240)
                return("H4");                              
               if(TimeFrame==1440)
                return("D1");
               if(TimeFrame==100800)
                return("W1");
               if(TimeFrame==43200)
                return("MN1");                        
          }
         if(TimeFrame==PERIOD_M1)
          return("M1");
         if(TimeFrame==PERIOD_M5)
          return("M5");          
         if(TimeFrame==PERIOD_M15)
          return("M15");          
         if(TimeFrame==PERIOD_M30)
          return("M30");
         if(TimeFrame==PERIOD_H1)
          return("H1");
         if(TimeFrame==PERIOD_H4)
          return("H4");                              
         if(TimeFrame==PERIOD_D1)
          return("D1");
         if(TimeFrame==PERIOD_W1)
          return("W1");
         if(TimeFrame==PERIOD_MN1)
          return("MN1");                              
//---   
         return("M1");
   }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // Event ID 
                  const long& lparam,   // Parameter of type long event 
                  const double& dparam, // Parameter of type double event 
                  const string& sparam  // Parameter of type string events
                  )
    {
         //....
         if(id==CHARTEVENT_OBJECT_CLICK)
          {                        
             //--------------------
             if(sparam=="SignalUpScroll")
              {
                  //---                     
                     UpSignalScrollAct();     
                  //---                  
              }
             if(sparam=="SignalDnScroll")
              {
                  //---                     
                     DnSignalScrollAct();     
                  //---                  
              } 
             //---------------------                           
             for(int i=0; i<=SymbolsTotal(true); i++)
              {
               string symname = SymbolName(i,true);
               if("Signal_"+symname==sparam)
                {
                  string chartname = StringSubstr(sparam,7,StringLen(sparam)-6);                  
                  ChartOpen(chartname,PERIOD_CURRENT);
                  ObjectSet(sparam,OBJPROP_STATE,false);
                  Alert(symname+" Chart has been opened");
                  break;
                }
              }  
             //---------------------                                                                
          }
        //....
     }
//+------------------------------------------------------------------+
void UpSignalScrollAct()
  {
      //...               
         StartSignalScroll++;         
         if(StartSignalScroll>TotalValidSymbols)
          {
            StartSignalScroll = TotalValidSymbols;
            Alert("Scroll is in end position");
          }         
         DeleteObjectContain("Signal");
      //...
          Last_M1_ScanTime  = iTime(Symbol(),PERIOD_M1,2);                
          Last_M5_ScanTime  = iTime(Symbol(),PERIOD_M5,2);                
          Last_M15_ScanTime = iTime(Symbol(),PERIOD_M15,2);                
          Last_M30_ScanTime = iTime(Symbol(),PERIOD_M30,2);    
          Last_H1_ScanTime  = iTime(Symbol(),PERIOD_H1,2);    
          Last_H4_ScanTime  = iTime(Symbol(),PERIOD_H4,2);    
          Last_D1_ScanTime  = iTime(Symbol(),PERIOD_D1,2);          
      //...      
         initial = true;      
         Dashboard();
      //...
  }
//+------------------------------------------------------------------+
void DnSignalScrollAct()
  {
      //...         
         StartSignalScroll--;   
         if(StartSignalScroll<0)
          {
            StartSignalScroll = 0;      
            Alert("Scroll is in start position");
          }         
         DeleteObjectContain("Signal");
      //...
          Last_M1_ScanTime  = iTime(Symbol(),PERIOD_M1,2);                
          Last_M5_ScanTime  = iTime(Symbol(),PERIOD_M5,2);                
          Last_M15_ScanTime = iTime(Symbol(),PERIOD_M15,2);                
          Last_M30_ScanTime = iTime(Symbol(),PERIOD_M30,2);    
          Last_H1_ScanTime  = iTime(Symbol(),PERIOD_H1,2);    
          Last_H4_ScanTime  = iTime(Symbol(),PERIOD_H4,2);    
          Last_D1_ScanTime  = iTime(Symbol(),PERIOD_D1,2);          
      //...
         initial = true;
         Dashboard();
      //...
  }
//+------------------------------------------------------------------+
void DeleteObjectContain(string Contain)
  {
//---
      for(int j=0; j<=6; j++)
      for(int i=0; i<=ObjectsTotal(ChartID(),ChartWindowOnDropped()); i++)
       {
            string Name = ObjectName(ChartID(),i,ChartWindowOnDropped());
            if(StringFind(Name,Contain,0)>=0)
             ObjectDelete(ChartID(),Name);               
       }      
//---  
  }
//+------------------------------------------------------------------+  
int GetSignalCode(string sym, ENUM_TIMEFRAMES timeframe)
  {
//---       
       int    shift       = 0;
       double spotvalue   = iSAR(sym,timeframe,Step,Maximum,shift);
       double spotvalue1  = iSAR(sym,timeframe,Step,Maximum,shift+1);
       double highvalue0  = iHigh(sym,timeframe,shift);
       double highvalue1  = iHigh(sym,timeframe,shift+1);
       double lowvalue0   = iLow(sym,timeframe,shift);
       double lowvalue1   = iLow(sym,timeframe,shift+1); 
       /*if(timeframe==PERIOD_M1 && sym=="AUDUSD"){
          Comment("AUDUSD\nSpot_0 : "+DoubleToString(spotvalue,_Digits)+"\nSpot_1 : "+DoubleToString(spotvalue1,_Digits)+"\nTime : "+TimeCurrent());
       }*/
//---
      if(spotvalue>0 && spotvalue<200000 && spotvalue1>0 && spotvalue1<200000)
       {
         if(lowvalue0>0 && highvalue1>0)
         if(spotvalue<=lowvalue0 && spotvalue1>=highvalue1)
          {SendAlert(sym,GetTFString(timeframe)+"_"+sym+" direction has changed to buy side",timeframe,0);
          return(233);}
         //...
         if(lowvalue1>0 && highvalue0>0)               
         if(spotvalue>=highvalue0 && spotvalue1<=lowvalue1)
          {SendAlert(sym,GetTFString(timeframe)+"_"+sym+" direction has changed to sell side",timeframe,1);
          return(234);}
         //...
         /*if(highvalue0>0 && spotvalue<lowvalue0 && highvalue0>spotvalue1)
         {SendAlert(sym,GetTFString(timeframe)+"_"+sym+" direction has breaked to buy direction",timeframe);
          return(233);}
         //...
         if(lowvalue0>0 && spotvalue>highvalue0 && lowvalue0<spotvalue1)
         {SendAlert(sym,GetTFString(timeframe)+"_"+sym+" direction has breaked to sell direction",timeframe);
          return(234);}
         //...*/
        }
//---  
      return(243);
  }
//+------------------------------------------------------------------+    
void SendAlert(string Sym, string text,ENUM_TIMEFRAMES timeframe, int type)
  {
//---
      long lastalertsym = long(GlobalVariableGet(Sym+GetTFString(timeframe)));
      if(TimeDiff(lastalertsym,TimeCurrent())<timeframe*2*60)
       return;
      GlobalVariableSet(Sym+GetTFString(timeframe),TimeCurrent());
//---
      if((timeframe*60)-StringToInteger(GetRemain(timeframe))>GetFreshSignalSecond(timeframe))
       {
         //Alert(GetTFString(timeframe)+"_"+Sym+"_Diff Was : "+((timeframe*60)-StringToInteger(GetRemain(timeframe))));
         return;
       }
      text = "AT : "+TimeToString(TimeCurrent(),TIME_SECONDS)+text;
      if(type==0)
       {
       GlobalVariableSet("V9PSAR_"+Sym,100);
       GlobalVariableSet("V9PSAR_"+Sym+"_TF",IntegerToString(timeframe));       
       }
      if(type==1)
       {
       GlobalVariableSet("V9PSAR_"+Sym,101);       
       GlobalVariableSet("V9PSAR_"+Sym+"_TF",IntegerToString(timeframe));       
       }
      if(PopUp_Alert_Enable==true)
       Alert(text);
      if(Email_Alert_Enable==true)
       SendMail("PSAR_Faster_Signal",text);
      if(Notification_Alert_Enable==true)
       SendNotification(text);      
//---  
  }
//+------------------------------------------------------------------+ 
int GetFreshSignalSecond(ENUM_TIMEFRAMES timeframe)     
  {
//---
      if(timeframe==1)
       return(M1_Signals_Valid_Before);
      if(timeframe==5)
       return(M5_Signals_Valid_Before);      
      if(timeframe==15)
       return(M15_Signals_Valid_Before);             
      if(timeframe==30)
       return(M30_Signals_Valid_Before);             
      if(timeframe==60)
       return(H1_Signals_Valid_Before);             
      if(timeframe==240)
       return(H4_Signals_Valid_Before);             
      if(timeframe==1440)
       return(D1_Signals_Valid_Before);             
//---  
      return(10);
  }
//+------------------------------------------------------------------+   
string GetRemain(ENUM_TIMEFRAMES tf)
  {
      int remainsecond = GetTFSecond(tf)-DiffTime(TimeCurrent(),iTime(Symbol(),tf,0));
      if(remainsecond<0)
       remainsecond = GetTFSecond(tf) - TimeSeconds(TimeCurrent());
      return(IntegerToString(remainsecond));
  }
//+------------------------------------------------------------------+        
int GetTFSecond(ENUM_TIMEFRAMES tf)
  {
//---
      if(tf==PERIOD_CURRENT)
       return(Period());
      if(tf==PERIOD_M1)
       return(60);
      if(tf==PERIOD_M5)
       return(5*60);       
      if(tf==PERIOD_M15)
       return(15*60);
      if(tf==PERIOD_M30)
       return(30*60);
      if(tf==PERIOD_H1)
       return(60*60);
      if(tf==PERIOD_H4)
       return(240*60);                            
      if(tf==PERIOD_D1)
       return(1440*60);     
      if(tf==PERIOD_W1)
       return(10080*60);     
      if(tf==PERIOD_MN1)
       return(43200*60);                          
//---  
      return(0);
  }
//+------------------------------------------------------------------+          
int GetColumnNum()
  {
//---
      int counter=  0;
      if(TF_M1_Enable==true)
       counter++;
      if(TF_M5_Enable==true)
       counter++;
      if(TF_M15_Enable==true)
       counter++;
      if(TF_M30_Enable==true)
       counter++;                     
      if(TF_H1_Enable==true)
       counter++;       
      if(TF_H4_Enable==true)
       counter++;
      if(TF_D1_Enable==true)
       counter++;                    
//---  
      return(counter+1);
  }
//+------------------------------------------------------------------+  
long TimeDiff(datetime time1, datetime time2)
  {
//---
      long diff = time1-time2;
      return(MathAbs(diff));
//---  
  }
//+------------------------------------------------------------------+  