_TRO_Dashboard_3LZZ





//+------------------------------------------------------------------+
//|                                        _TRO_Dashboard_3LZZ.mq4   |
//|                                        Copyright © 2008, "TRO"   |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2008, Avery T. Horton, Jr. aka TheRumpledOne"
#property link      "therumpledone@gmail.com"
 

#property indicator_separate_window  

#property indicator_buffers 0
#property indicator_minimum 0
#property indicator_maximum 1

extern bool   Sound.Alert    = true ;



extern  double Period1=5; 
extern  double Period2=13; 
extern  double Period3=34; 

 string   Dev_Step_1="1,3";
 string   Dev_Step_2="8,5";
 string   Dev_Step_3="13,8";
 int Symbol_1_Kod=140;//129
 int Symbol_2_Kod=141;//130
 int Symbol_3_Kod=142;//131
 
 string sSymbol_1_Kod =     "Œ"; 
 string sSymbol_2_Kod =     "‚"; 
 string sSymbol_3_Kod =     "Ž"; 
  
 string  note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
 string  Arrow_Codes = "140(129)=1; 141(130)=2; 142(131)=3";





extern string _            = "PAIRS";
//extern string pairs        = "GBPUSD;";

extern string pairs        = "GBPUSD;EURUSD;USDCHF;USDJPY;USDCAD;GBPJPY;";
//extern string pairs        = "GBPUSD;EURUSD;USDCHF;USDJPY;USDCAD;GBPJPY;EURJPY;GBPCHF;";
extern string timeFrames   = "H1;H4;D1;W1";
//extern string timeFrames   = "M1;M5;M15;H1;H4;D1;W1";
extern int    myUp         = 1;
extern int    myEq         = -1;
extern int    myDn         = 0;

extern color  ColorUp      = Blue;
extern color  ColorNeutral = DimGray ;
extern color  ColorDn      = Red ;
extern color  ValueColor   = DodgerBlue;
extern int    ValueSize    = 10;
extern string ValueFont    = "Verdana";



bool show.SCORE = false ; 

int      window;  
int      totalPairs;
int      totalTimeFrames;
int      totalLabels;
int      aTimes[];
string   aPairs[];
string   sTimes[];
color    ColorLabels  = White;
color    MA_color;
color    srsi_color;
color    cad_color;
string   MA_arrow;
string   srsi_arrow;
string   cad_arrow;
string   labelNames;
string   shortName;
int      corner;
int       INC_UP ;
int       INC_UC ;
int       INC_DN;
int       MAMode;
int       PRMode;
int       RSIMode;
string    strMAType;
string    strRSIType;
bool   ShowCount    = true;



string Pair0    = ""      ;
string Pair1    = ""      ;
string Pair2    = ""      ;
string Pair3    = ""      ;
string Pair4    = ""      ;
string Pair5    = ""      ; 
string Pair6    = ""      ;
string Pair7    = ""      ;
string Pair8    = ""      ;
string Pair9    = ""      ;
string Pair10   = ""      ;
string Pair11   = ""      ;
string Pair12   = ""      ;
string Pair13   = ""      ;
string Pair14   = ""      ;
string Pair15   = ""      ;
string Pair16   = ""      ;
string Pair17   = ""      ;
string Pair18   = ""      ;
string Pair19   = ""      ;
string Pair20   = ""      ;

double cVal = 0, pVal = 0;

double cdayClose;
double cdayOpen;
color  ColorPrice ; 
double point  ;
int    xPoint ;



//---- buffers 
double FP_BuferUp;
double FP_BuferDn; 
double NP_BuferUp;
double NP_BuferDn; 
double HP_BuferUp;
double HP_BuferDn;

 

int OldBars = -1 ;

bool Trigger[21][9];

string tAlert ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

int init()
{

   corner     = 0;
   shortName  = MakeUniqueName("3LZZ ","");
   labelNames = shortName;
   IndicatorShortName(shortName);

    
      pairs = StringUpperCase(StringTrimLeft(StringTrimRight(pairs)));
      if (StringSubstr(pairs,StringLen(pairs),1) != ";")
      pairs = StringConcatenate(pairs,";");
                                  

         bool isMini = IsMini();            
         int  s      = 0;
         int  i      = StringFind(pairs,";",s);
         int time;
         string current;
        
         string temp;
         
            while (i > 0)
            {
               current = StringSubstr(pairs,s,i-s);
               if (isMini) current = StringConcatenate(current,"m");
              time    = stringToTimeFrame(current);
               current = StringSubstr(pairs,s,i-s);
               if (isMini) current = StringConcatenate(current,"m");
               if (iClose(current,0,0) > 0) {
               ArrayResize(aPairs,ArraySize(aPairs)+1);
                aPairs[ArraySize(aPairs)-1] = current; }
                 s = i + 1;
                i = StringFind(pairs,";",s);
                                                                                   
                                     
            }
    

      timeFrames = StringUpperCase(StringTrimLeft(StringTrimRight(timeFrames)));
      if (StringSubstr(timeFrames,StringLen(timeFrames),1) != ";")
       timeFrames = StringConcatenate(timeFrames,";");

                                                  
         s = 0;
         i = StringFind(timeFrames,";",s);
         //int time;
          while (i > 0)
            {
           current = StringSubstr(timeFrames,s,i-s);
           time    = stringToTimeFrame(current);
           if (time > 0) {
           ArrayResize(sTimes,ArraySize(sTimes)+1);
           ArrayResize(aTimes,ArraySize(aTimes)+1);
           sTimes[ArraySize(sTimes)-1] = TimeFrameToString(time); 
           aTimes[ArraySize(aTimes)-1] = time; }
           s = i + 1;
           i = StringFind(timeFrames,";",s);
            }
  

      totalTimeFrames = ArraySize(aTimes);
      totalPairs      = ArraySize(aPairs);
      totalLabels     = 0;
      
      
      
Pair0    = aPairs[0];
Pair1    = aPairs[1];
Pair2    = aPairs[2];
Pair3    = aPairs[3];
Pair4    = aPairs[4];
Pair5    = aPairs[5];
Pair6    = aPairs[6];
Pair7    = aPairs[7];
Pair8    = aPairs[8];
Pair9    = aPairs[9];
Pair10   = aPairs[10];
Pair11   = aPairs[11];
Pair12   = aPairs[12];
Pair13   = aPairs[13];
Pair14   = aPairs[14];
Pair15   = aPairs[15];
Pair16   = aPairs[16];
Pair17   = aPairs[17];
Pair18   = aPairs[18];
Pair19   = aPairs[19];
Pair20   = aPairs[20];   
      
   return(0);
   
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
   while (totalLabels>0) { ObjectDelete(StringConcatenate(labelNames,totalLabels)); totalLabels--;}
     
   return(0);
}


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start()
{


ObjectsDeleteAll(window);

int m,n;
int i,k;


if( Bars != OldBars )
{ 
   for( m = 0, n = 0 ; m < 21 ; m++, n+=9) {Trigger[m][n] = True ; } 
}


   window      = WindowFind(shortName);
   totalLabels = 0;
    for (i=0,m=30; i < totalPairs;      i++, m+=25)
    {
      INC_UP = 0;
      INC_UC = 0;
      INC_DN = 0; 
   
      for (k=0,n=170; k < totalTimeFrames; k++, n+=46)
      {   
          tAlert = "" ;  
          showPair(aPairs[i],aTimes[k],sTimes[k],m,n);
          if ( Trigger[i][k] &&  Sound.Alert ) 
          {
            if( tAlert != "" ) { Trigger[i][k] = False ; Alert(aPairs[i],"  ", sTimes[k], " " , tAlert);  }
          }
          
          
      } // for k

      if (ShowCount)  DoShowCount(m,n); 
      
    } // for i  
               
      if (Pair1 == "") Pair1 = Symbol();
      
   OldBars = Bars ;   
          
   return(0);
}


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+


void DoShowCount( int xdistance, int ydistance )
{

int x_Pair, y_Pair , y_Inc ;

x_Pair = 10;
y_Pair = 40;
y_Inc  = 25;


double PERp,PERC,PER;
int yInc = -125;

  PER = INC_UP; 
  PERC= PER*100;
  PERp= PERC / totalTimeFrames ; // 7
  string PER_Str =DoubleToStr(PERp,Point);
   
color xColor = Yellow ;
 
if( PERp > 50) { xColor = LimeGreen ; }
else if( PERp < 50 ) { xColor = Crimson ; }


 if(ValueSize>12) ValueSize=12;
 
 setObject(next()," FX DASHBOARD 3LZZ © 2008 ",70,5, Gray ,ValueFont,7,0);

  if(show.SCORE){  
  setObject(next(),PER_Str,525,xdistance+10, xColor ,"Arial bold",10,0);}
  
  
  setObject(next(),Pair0,x_Pair,40, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair1,x_Pair,65, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair2,x_Pair,90, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair3,x_Pair,115, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair4,x_Pair,140, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair5,x_Pair,165, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair6,x_Pair,190, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair7,x_Pair,215, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair8,x_Pair,240, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair9,x_Pair,265, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair10,x_Pair,290, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair11,x_Pair,315, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair12,x_Pair,340, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair13,x_Pair,365, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair14,x_Pair,390, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair15,x_Pair,415, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair16,x_Pair,440, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair17,x_Pair,465, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair18,x_Pair,490, ValueColor ,ValueFont,ValueSize);
  setObject(next(),Pair19,x_Pair,515, ValueColor ,ValueFont,ValueSize);

string cTitle = "" ;



   setObject(next(),cTitle,340,3, ValueColor ,"Verdana Bold",ValueSize);
   setObject(next(),"PAIR",x_Pair,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[0],200,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[1],245,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[2],290,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[3],340,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[4],385,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[5],430,18, ValueColor ,ValueFont,ValueSize);
   setObject(next(),sTimes[6],475,18, ValueColor ,ValueFont,ValueSize);

 //  setObject(next(),"%",525,18, ValueColor ,ValueFont,ValueSize);
     

x_Pair = x_Pair + 70 ;

setObject(next(),"Price",x_Pair,18, ValueColor ,ValueFont,ValueSize);
   
if( Pair0 != "" ) { DoPrice( Pair0, x_Pair  , y_Pair ) ; }
if( Pair1 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair1, x_Pair  , y_Pair ) ; }
if( Pair2 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair2, x_Pair  , y_Pair ) ; }
if( Pair3 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair3, x_Pair  , y_Pair ) ; }
if( Pair4 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair4, x_Pair  , y_Pair ) ; }
if( Pair5 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair5, x_Pair  , y_Pair ) ; }
if( Pair6 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair6, x_Pair  , y_Pair ) ; }
if( Pair7 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair7, x_Pair  , y_Pair ) ; }
if( Pair8 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair8, x_Pair  , y_Pair ) ; }
if( Pair9 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair9, x_Pair  , y_Pair ) ; }     
if( Pair10 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair10, x_Pair  , y_Pair ) ; }
if( Pair11 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair11, x_Pair  , y_Pair ) ; }
if( Pair12 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair12, x_Pair  , y_Pair ) ; }
if( Pair13 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair13, x_Pair  , y_Pair ) ; }
if( Pair14 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair14, x_Pair  , y_Pair ) ; }
if( Pair15 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair15, x_Pair  , y_Pair ) ; }
if( Pair16 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair16, x_Pair  , y_Pair ) ; }
if( Pair17 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair17, x_Pair  , y_Pair ) ; }
if( Pair18 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair18, x_Pair  , y_Pair ) ; }
if( Pair19 != "" ) { y_Pair = y_Pair + y_Inc ; DoPrice( Pair19, x_Pair  , y_Pair ) ; }         
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DoPrice( string dpSymbol, int dp_xAxis, int dp_yAxis )
{
   cdayClose      = iClose(dpSymbol,PERIOD_D1,0);
   cdayOpen       = iOpen(dpSymbol,PERIOD_D1,0);
   
   if(cdayClose > cdayOpen) { ColorPrice = LimeGreen ; } else {
   if(cdayClose < cdayOpen) { ColorPrice = Red ; } else {ColorPrice = Yellow ; } }

double xPrice, xPsycho, bid, ask, bidmod, askmod ;

   point   = MarketInfo(dpSymbol,MODE_POINT);  
   bid     = MarketInfo(dpSymbol,MODE_BID);  
   ask     = MarketInfo(dpSymbol,MODE_ASK);  

   if ( point == 0.01 ) { xPsycho = 0.25; xPoint = 2 ; } 
   else { xPsycho = 0.0025; xPoint = 4 ; }

   bidmod = MathMod(bid ,xPsycho) ;         
   askmod = MathMod(ask ,xPsycho) ;         
   xPrice = cdayClose - bidmod ; 

   if(bidmod == 0 || askmod == 0) { ColorPrice = Orange ; }

   setObject(next(),DoubleToStr(cdayClose,xPoint),dp_xAxis, dp_yAxis, ColorPrice ,ValueFont,ValueSize);   
}

//+------------------------------------------------------------------+

void showPair(string pair, int timeFrame,string label, int xdistance, int ydistance)
{


   
   DoWork(pair,timeFrame,0) ;    
   
   if (HP_BuferUp != 0 ) { tAlert = "3-LZZ HI" ; INC_UP = INC_UP +1 ; MA_color = ColorUp; MA_arrow = sSymbol_3_Kod ; } else {
   if (HP_BuferDn != 0 ) { tAlert = "3-LZZ LO" ; INC_DN = INC_DN +1 ; MA_color = ColorDn; MA_arrow = sSymbol_3_Kod ; } else {   
   if (NP_BuferUp != 0 ) { tAlert = "2-LZZ HI" ; INC_UP = INC_UP +1 ; MA_color = ColorUp; MA_arrow = sSymbol_2_Kod ; } else {
   if (NP_BuferDn != 0 ) { tAlert = "2-LZZ LO" ; INC_DN = INC_DN +1 ; MA_color = ColorDn; MA_arrow = sSymbol_2_Kod ; } else {    
   if (FP_BuferUp != 0 ) { tAlert = "1-LZZ HI" ; INC_UP = INC_UP +1 ; MA_color = ColorUp; MA_arrow = sSymbol_1_Kod ; } else {
   if (FP_BuferDn != 0 ) { tAlert = "1-LZZ LO" ; INC_DN = INC_DN +1 ; MA_color = ColorDn; MA_arrow = sSymbol_1_Kod ; } else {   
                                                INC_UC = INC_UC +1 ; MA_color = ColorNeutral; MA_arrow = "Ÿ"; } }}}}}
   
   setLabel(" "  ,xdistance+10,ydistance+30," ",MA_color,MA_arrow);
       
  }

//+------------------------------------------------------------------+
//| Custom functions and procedures                                  |
//+------------------------------------------------------------------+

string next() { totalLabels++; return(totalLabels); }  


//+------------------------------------------------------------------+

void setLabel(string text,int x,int y,string sarv, color theColor, string arrow, bool isADX=true)
{
    
  setObject(next(),arrow                  ,y,x,theColor,"Wingdings",14,0); //"Wingdings"
      
 }              
             

//+------------------------------------------------------------------+
void setObject(string name,string text,int x,int y,color theColor, string font = "Verdana",int size=10,int angle=0)
{
   string labelName = StringConcatenate(labelNames,name);

  
      if (ObjectFind(labelName) == -1)
          {
             ObjectCreate(labelName,OBJ_LABEL,window,0,0);
             ObjectSet(labelName,OBJPROP_CORNER,corner);
             if (angle != 0)
             ObjectSet(labelName,OBJPROP_ANGLE,angle);
          }               
       ObjectSet(labelName,OBJPROP_XDISTANCE,x);
       ObjectSet(labelName,OBJPROP_YDISTANCE,y);
       ObjectSetText(labelName,text,size,font,theColor);
}


//+------------------------------------------------------------------+
int stringToTimeFrame(string tfs)
{
   int tf=0;
       tfs = StringTrimLeft(StringTrimRight(StringUpperCase(tfs)));
         if (tfs=="M1" || tfs=="1")     tf=PERIOD_M1;
         if (tfs=="M5" || tfs=="5")     tf=PERIOD_M5;
         if (tfs=="M15"|| tfs=="15")    tf=PERIOD_M15;
         if (tfs=="M30"|| tfs=="30")    tf=PERIOD_M30;
         if (tfs=="H1" || tfs=="60")    tf=PERIOD_H1;
         if (tfs=="H4" || tfs=="240")   tf=PERIOD_H4;
         if (tfs=="D1" || tfs=="1440")  tf=PERIOD_D1;
         if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1;
         if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1;
         if (tfs=="MN1" || tfs=="43200") tf=PERIOD_MN1;   
  return(tf);
}

//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
   string tfs;
   switch(tf) {
      case PERIOD_M1:  tfs="M1"  ; break;
      case PERIOD_M5:  tfs="M5"  ; break;
      case PERIOD_M15: tfs="M15" ; break;
      case PERIOD_M30: tfs="M30" ; break;
      case PERIOD_H1:  tfs="H1"  ; break;
      case PERIOD_H4:  tfs="H4"  ; break;
      case PERIOD_D1:  tfs="D1"  ; break;
      case PERIOD_W1:  tfs="W1"  ; break;
      case PERIOD_MN1: tfs="MN1";
   }
   return(tfs);
}

//+------------------------------------------------------------------+
string StringUpperCase(string str)
{
   string   s = str;
   int      lenght = StringLen(str) - 1;
   int      char;
   
   while(lenght >= 0)
      {
         char = StringGetChar(s, lenght);
                 
         if((char > 96 && char < 123) || (char > 223 && char < 256))
                  s = StringSetChar(s, lenght, char - 32);
          else 
              if(char > -33 && char < 0)
                  s = StringSetChar(s, lenght, char + 224);
         lenght--;
   }
  
   
   return(s);
}

//+------------------------------------------------------------------+
string MakeUniqueName(string first, string rest)
{
   string result = first+(MathRand()%1001)+rest;

   while (WindowFind(result)> 0)
          result = first+(MathRand()%1001)+rest;
   return(result);
}

//+------------------------------------------------------------------+
bool IsMini()
{
   if (StringFind(Symbol(),"m") > -1)
         return(true);
   else  return(false);    
}


  
//+------------------------------------------------------------------+

void DoWork( string myPair, int TimeFrame , int myShift  )  
{

   datetime TimeArray[];
   int    i,limit,y=0,counted_bars=IndicatorCounted();
 
// Plot defined time frame on to current time frame

   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);  
   
   limit=1;     
   
   for(i=0,y=0;i<limit;i++)
   {
 
   if (Time[i]<TimeArray[y]) y++;   

 FP_BuferUp=iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,0,y);
 FP_BuferDn =iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,1,y); 
 NP_BuferUp =iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,2,y);   
 NP_BuferDn =iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,3,y);    
 HP_BuferUp =iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,4,y);    
 HP_BuferDn =iCustom(myPair,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,5,y);   


   } // for

                                       
}

/*


 FP_BuferUp[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,0,y);
 FP_BuferDn[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,1,y); 
 NP_BuferUp[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,2,y);   
 NP_BuferDn[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,3,y);    
 HP_BuferUp[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,4,y);    
 HP_BuferDn[i]=iCustom(NULL,TimeFrame,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,5,y);   


 // +++++++++++++++++++++++++++++++++++++ Refresh buffers 
   if (TimeFrame>Period()) {
     int PerINT=TimeFrame/Period()+1;
     datetime TimeArr[]; ArrayResize(TimeArr,PerINT);
     ArrayCopySeries(TimeArr,MODE_TIME,Symbol(),Period()); 
     for(i=0;i<PerINT+1;i++) {if (TimeArr[i]>=TimeArray[0]) {
 /********************************************************     
    Refresh buffers:         buffer[i] = buffer[0];
 ********************************************************/  
 /*
   FP_BuferUp[i]=FP_BuferUp[0];
   FP_BuferDn[i]=FP_BuferDn[0];
   NP_BuferUp[i]=NP_BuferUp[0];
   NP_BuferDn[i]=NP_BuferDn[0];
   HP_BuferUp[i]=HP_BuferUp[0];
   HP_BuferDn[i]=HP_BuferDn[0];


 } }
 
 

double zu =iCustom("GBPUSD",15,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,2,y);   
double zd =iCustom("GBPUSD",15,"3_Level_ZZ_Semafor",Period1,Period2,Period3,
                                      Dev_Step_1,Dev_Step_2,Dev_Step_3,
                                      Symbol_1_Kod,Symbol_2_Kod,Symbol_3_Kod,3,y);  
                                      
Comment( "zu=", DoubleToStr(zu, Digits),  "\n", "zd=", DoubleToStr(zd, Digits),  "\n" ) ;
 
*/



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains open prices of each bar
Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen