Vahrokh-Gann-ICWR v0.1.1 beta5_alert





//+------------------------------------------------------------------+
//|                                   ICWR                           |
//|                                   Copyright © 2005, John Lotoski |
//|                                   mailto:john@fayandjohn.com     |
//|                                                                  |
//|                         Gann-ICWR v0.1.1 beta5                   |
//|                         update code Alex.Piech.FinGeR 23.01.2006 |
//|                         mailto:regnif@gmx.net                    |
//|                         minor bugfixes Vahrokh Vain 15.09.2009   |
//+------------------------------------------------------------------+
#property copyright "Alex.Piech.FinGeR"
#property link      "regnif@gmx.net"

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Magenta
#property indicator_color2 Magenta
//#property indicator_color3 Magenta
//#property indicator_color4 Magenta
//#property indicator_color5 Magenta
//#property indicator_color6 Magenta
//#property indicator_color7 Magenta
//#property indicator_color8 Magenta

//---- input parameters
extern string Parameters_1= "Gann ZigZag";
extern int GannSwing=2;
extern string Parameters_2 = "ActiveWave";
extern int calc.NumBars=100;
extern int RequiredWaveHeight=40;
string buff_str;
string buff_str2;
string buff_str3;
string buff_str4;
string buff_str5;
string buff_str6;
string buff_str7;
string buff_str8;
int GSv_tend;
//---- buffers
double Upz[];
double Dnz[];
double sH[];
double sL[];
double aH[];
double aL[];
double fB[];
double lB[];
//----------
double CurH,CurL;
int lb,sp,lbars;
bool draw_up,draw_dn;
int oldWaveIndex = 1;
extern bool SoundON=true;
 bool TurnedUp = false;
bool TurnedDown = false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(8);
   SetIndexStyle(0,DRAW_ZIGZAG,STYLE_SOLID);
   SetIndexStyle(1,DRAW_ZIGZAG,STYLE_SOLID);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   SetIndexStyle(4,DRAW_NONE);
   SetIndexStyle(5,DRAW_NONE);
   SetIndexStyle(6,DRAW_NONE);
   SetIndexStyle(7,DRAW_NONE);
   SetIndexBuffer(0,Upz);
   SetIndexBuffer(1,Dnz);
   SetIndexBuffer(2,sH);
   SetIndexBuffer(3,sL);
   SetIndexBuffer(4,aH);
   SetIndexBuffer(5,aL);
   SetIndexBuffer(6,fB);
   SetIndexBuffer(7,lB);
   SetIndexEmptyValue(0,0);
   SetIndexEmptyValue(1,0);
   SetIndexEmptyValue(2,0);
   SetIndexEmptyValue(3,0);
   SetIndexEmptyValue(4,-1);
   SetIndexEmptyValue(5,-1);
   SetIndexEmptyValue(6,-1);
   SetIndexEmptyValue(7,-1);
   SetIndexLabel(0,"z1");
   SetIndexLabel(1,"z2");
   SetIndexLabel(2,"sH");
   SetIndexLabel(3,"sL");
   SetIndexLabel(4,"aH");
   SetIndexLabel(5,"aL");
   SetIndexLabel(6,"fB");
   SetIndexLabel(7,"lB");
//----
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
//---- 

Comment("");
GSv_tend= GannSwing;
    for(int ix=0;ix<=Bars;ix++) {
    buff_str = "ActiveWave"+ix;
    ObjectDelete(buff_str);
   }


    buff_str2 = "Fibo";
    ObjectDelete(buff_str2);
   
   
for(int iii=0;iii<=Bars;iii++) {
    buff_str4 = "text"+iii;
  
    ObjectDelete(buff_str4);
   }   
   
for(int iiii=0;iiii<=Bars;iiii++) {
    buff_str5 = "V"+iiii;
  
    ObjectDelete(buff_str5);
   }   
   
for(int iiiii=0;iiiii<=Bars;iiiii++) {
    buff_str6 = "rc"+iiiii;
  
    ObjectDelete(buff_str6);
   }      
   
for(int iiiiii=0;iiiiii<=Bars;iiiiii++) {
    buff_str7 = "b"+iiiiii;
  
    ObjectDelete(buff_str7);
   }    

for(int iiiiiii=0;iiiiiii<=Bars;iiiiiii++) {
    buff_str8 = "bb"+iiiiiii;
  
    ObjectDelete(buff_str8);
   }    
      
 for( int ia=0; ia<=6; ia++ ){
  for(int iiiiiiii=0;iiiiiiii<=Bars;iiiiiiii++) {
    buff_str3 = "mml"+ia+iiiiiiii;
  
    ObjectDelete(buff_str3);
   }   

}
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  
  
   
   for(int ix=0;ix<=Bars;ix++) {
    buff_str = "ActiveWave"+ix;
    ObjectDelete(buff_str);
   }


    buff_str2 = "Fibo";
    ObjectDelete(buff_str2);
 
   
for(int iii=0;iii<=Bars;iii++) {
    buff_str4 = "text"+iii;
  
    ObjectDelete(buff_str4);
   }   
   
for(int iiii=0;iiii<=Bars;iiii++) {
    buff_str5 = "V"+iiii;
  
    ObjectDelete(buff_str5);
   }   
   
for(int iiiii=0;iiiii<=Bars;iiiii++) {
    buff_str6 = "rc"+iiiii;
  
    ObjectDelete(buff_str6);
   }      
   
for(int iiiiii=0;iiiiii<=Bars;iiiiii++) {
    buff_str7 = "b"+iiiiii;
  
    ObjectDelete(buff_str7);
   }    

for(int iiiiiii=0;iiiiiii<=Bars;iiiiiii++) {
    buff_str8 = "bb"+iiiiiii;
  
    ObjectDelete(buff_str8);
   }    
      
 for( int ia=0; ia<=6; ia++ ){
  for(int iiiiiiii=0;iiiiiiii<=Bars;iiiiiiii++) {
    buff_str3 = "mml"+ia+iiiiiiii;
  
    ObjectDelete(buff_str3);
   }   

}
  
   int    shift,back,lasthighpos,lastlowpos,LastActivePos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow,LastActive;
   
   int AWStartPos, AWEndPos;
   double AWStart, AWEnd;
   
   double FiboL, FiboH, FiboLC, FiboLR, FiboHR, FiboHC;
   int counted_bars=IndicatorCounted();
   int cb,index,limit,ai,i;
  
//---- 
   if( !counted_bars<0 )
   {
      index=Bars-1;
      if( index-counted_bars<2 )
      {
         limit=0;
      }
      else
      {
         limit=index-counted_bars-1;
      }
   }
   else
   {
      Alert("");
      return(-1);
   }
//----
for( cb=limit; cb>=0; cb-- )
{
   
   double nsb=iBarShift(NULL, PERIOD_D1, Time[cb]);
   double RSI=iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,nsb);
   
   ai=index-cb;
   if( lbars!=Bars && lb==ai )
   {
      lbars=Bars;
      continue;
   }
   if( lb!=ai )
   {
      lb=ai;
      if( Upz[cb+1]>0 || Dnz[cb+1]>0 )
      {
         aH[cb]=High[cb+1];
         aL[cb]=Low[cb+1];
      }
      else
      {
         if( High[cb+1]<=aH[cb+1] && Low[cb+1]>=aL[cb+1] )
         {
            aH[cb]=aH[cb+1];
            aL[cb]=aL[cb+1];
            sH[cb]=sH[cb+1];
            sL[cb]=sL[cb+1];
         }
         else
         {
            if( High[cb+1]>aH[cb+1] )
            {
               aH[cb]=High[cb+1];
            }
            else
            {
               aH[cb]=aH[cb+1];
            }
            if( aL[cb+1]>0 )
            {
               if( Low[cb+1]<aL[cb+1] )
               {
                  aL[cb]=Low[cb+1];
               }
               else
               {
                  aL[cb]=aL[cb+1];
               }
            }
            else
            {
               aL[cb]=Low[cb+1];
            }
         }
      }
      if( draw_up!=0 )
      {
         if( fB[cb+1]==1 )
         {
            sH[cb]=sH[cb+1]+1;
            if( lB[cb+1]==0 )
            {
               sH[cb]=0;
               sL[cb]=1;
            }
         }
         else
         {
            if( fB[cb+1]==0 )
            {
               sL[cb]=sL[cb+1]+1;
               if( lB[cb+1]==1 )
               {
                  sH[cb]=1;
                  sL[cb]=0;
               }
            }
         }
      }
      else
      {
         if( draw_dn!=0 )
         {
            if( fB[cb+1]==0 )
            {
               sL[cb]=sL[cb+1]+1;
               if( lB[cb+1]==1 )
               {
                  sH[cb]=1;
                  sL[cb]=0;
               }
            }
            else
            {
               if( fB[cb+1]==1 )
               {
                  sH[cb]=sH[cb+1]+1;
                  if( lB[cb+1]==0 )
                  {
                     sH[cb]=0;
                     sL[cb]=1;
                  }
               }
            }
         }
         else
         {
            if( fB[cb+1]==1 )
            {
               sH[cb]=sH[cb+1]+1;
               sL[cb]=sL[cb+1];
               if( lB[cb+1]==0 )
               {
                  sL[cb]++;
               }
            }
            else
            {
               if( fB[cb+1]==0 )
               {
                  sH[cb]=sH[cb+1];
                  sL[cb]=sL[cb+1]+1;
                  if( lB[cb+1]==1 )
                  {
                     sH[cb]++;
                  }
               }
            }
         }
      }
      if( GSv_tend>1 )
      {
         
         if( sH[cb]==GSv_tend && Upz[cb+1]>0 && High[cb+1]>High[cb+2] && Low[cb+1]<Low[cb+2] && fB[cb+1]==1 )
         {
            sL[cb]=1;
         }
         else 
         {
            
            if( sL[cb]==GSv_tend && Dnz[cb+1]>0 && High[cb+1]>High[cb+2] && Low[cb+1]<Low[cb+2] && fB[cb+1]==0 )
            {
               sH[cb]=1;
            }
         }
      }
     
      CurH=0;
      CurL=Low[cb];
   }
   if( High[cb]<=aH[cb] && Low[cb]>=aL[cb] )
   {
      continue;
   }
   if( High[cb]<=CurH && Low[cb]>=CurL )
   {
      continue;
   }
   if( High[cb]>CurH ) CurH=High[cb];
   if( Low[cb] <CurL ) CurL=Low[cb];
   Extr_seq(cb);
   
   if( GSv_tend>1 )
   {
      if( fB[cb]>0 && sH[cb]==GSv_tend-1 && sL[cb]>0 )
      {
         sL[cb]=0;
      }
      else
      {
         if( fB[cb]>-1 && sL[cb]==GSv_tend-1 && sH[cb]>0 )
         {
            sH[cb]=0;
         }
      }
   }
   if( draw_up!=0 )
   {
      if( fB[cb]==1 )
      {
         if( sp!=ai )
         {
            Upz[index-sp]=0;
            sp=ai;
         }
         Upz[cb]=High[cb];
         if( lB[cb]==0 && (sL[cb]+1)>=GSv_tend && GSv_tend<2 )
         {
            Dnz[cb]=Low[cb];
            draw_up=0;
            draw_dn=1;
         }
      }
      else
      {
         if( fB[cb]==0 )
         {
            if( (sL[cb]+1)>=GSv_tend )
            {
               Dnz[cb]=Low[cb];
               sp=ai;
               draw_up=0;
               draw_dn=1;
               if( lB[cb]==1 && (sH[cb]+1)>=GSv_tend )
               {
                  Upz[cb]=High[cb];
                  draw_up=1;
                  draw_dn=0;
               }
            }
            else
            {
               if( lB[cb]==1 )
               {
                  Upz[index-sp]=0;
                  sp=ai;
                  Upz[cb]=High[cb];
               }
            }
         }
      }
   }
   else
   {
      if( draw_dn!=0 )
      {
         if( fB[cb]==1 )
         {
            if( (sH[cb]+1)>=GSv_tend )
            {
               Upz[cb]=High[cb];
               sp=ai;
               draw_up=1;
               draw_dn=0;
               if( lB[cb]==0 && (sL[cb]+1)>=GSv_tend )
               {
                  Dnz[cb]=Low[cb];
                  draw_up=0;
                  draw_dn=1;
               }
            }
            else
            {
               if( lB[cb]==0 )
               {
                  Dnz[index-sp]=0;
                  sp=ai;
                  Dnz[cb]=Low[cb];
               }
            }
         }
         else
         {
            if( fB[cb]==0 )
            {
               if( sp!=ai )
               {
                  Dnz[index-sp]=0;
                  sp=ai;
               }
               Dnz[cb]=Low[cb];
               if( lB[cb]==1 && (sH[cb]+1)>=GSv_tend && GSv_tend<2 )
               {
                  Upz[cb]=High[cb];
                  draw_up=1;
                  draw_dn=0;
               }
            }
         }
      }
      else
      {
         if( fB[cb]==1 && (sH[cb]+1)>=GSv_tend )
         {
            Dnz[index]=Low[index];
            Upz[cb]=High[cb];
            draw_up=1;
            sp=ai;
            if( lB[cb]==0 && (sL[cb]+1)>=GSv_tend )
            {
               Dnz[cb]=Low[cb];
               draw_up=0;
               draw_dn=1;
            }
         }
         else
         {
            if( fB[cb]==0 && (sL[cb]+1)>=GSv_tend )
            {
               Upz[index]=High[index];
               Dnz[cb]=Low[cb];
               draw_dn=1;
               sp=ai;
               if( lB[cb]==1 && (sH[cb]+1)>=GSv_tend )
               {
                  Upz[cb]=High[cb];
                  draw_up=1;
                  draw_dn=0;
               }
            }
         }
      }
   }

}

//Alert
//--------

   if(SoundON==true && draw_up == 0 && !TurnedUp )
   {
   Alert("New Zigzag starting on Downtrend"," on ",Symbol()," - ",Period());
            TurnedUp = true;
            TurnedDown = false;
   }
    if(SoundON==true && draw_dn == 0 && !TurnedDown )
   {
   Alert("New Zigzag starting on Uptrend"," on ",Symbol()," - ",Period());
            TurnedDown = true;
            TurnedUp = false;
   }  

//--------

for(int shifta=0; shifta<=calc.NumBars; shifta++)
   {
  LastActive = -1;
   LastActivePos = -1;
   for(shift=shifta; shift<=Bars-10; shift++)
   {
    
    
      if(Dnz[shift]!=0.0 || Upz[shift]!=0.0 )
      {
         if(LastActive > 0)
         {
            if(  (Upz[shift]==0.0  && MathAbs(LastActive - Dnz[shift]) >= RequiredWaveHeight*Point)  || (Dnz[shift]==0.0  && MathAbs(LastActive - Upz[shift] ) >= RequiredWaveHeight*Point)   )
            {
               
               AWStartPos = shift;
               if(Dnz[shift]!=0.0) AWStart = Dnz[shift];
               if(Upz[shift]!=0.0) AWStart = Upz[shift];
               
               AWEndPos = LastActivePos;
               AWEnd = LastActive;
               buff_str = "ActiveWave"+shift;
               buff_str2 = "Fibo";
               buff_str4 = "text"+shift;
               buff_str5 = "V"+shift;
               buff_str6 = "rc"+shift;
               buff_str7 = "b"+shift;
               buff_str8 = "bb"+shift;
               //if(ObjectFind("ActiveWave") != 0)
              // {
              
              
            
              
                 ObjectCreate(buff_str, OBJ_TREND, 0, Time[AWStartPos], AWStart, Time[AWEndPos], AWEnd);
                  ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
                             
                  ObjectSet(buff_str, OBJPROP_WIDTH, 3);
                  ObjectSet(buff_str, OBJPROP_RAY, false);  
              // }
             //  else
               //{
                 // ObjectCreate("ActiveWave", OBJ_TREND, 0, Time[AWStartPos], AWStart, Time[AWEndPos], AWEnd);
                 // ObjectSet("ActiveWave", OBJPROP_STYLE, STYLE_SOLID);
                //  ObjectSet("ActiveWave", OBJPROP_COLOR, Red);               
                //  ObjectSet("ActiveWave", OBJPROP_WIDTH, 3);
               //   ObjectSet("ActiveWave", OBJPROP_RAY, false);  
             //  }
            
               if(AWStart < AWEnd)
               {
                  FiboL = AWStart;
                  FiboH = AWEnd;
                   ObjectSet(buff_str, OBJPROP_COLOR,  Blue);    
          
           //ObjectCreate(buff_str2, OBJ_FIBO, 0, Time[AWEndPos], AWStart, Time[AWEndPos], AWEnd);
                                       
           ObjectCreate(buff_str5, OBJ_TREND, 0, Time[AWEndPos], AWStart, Time[AWEndPos], AWEnd);
           ObjectSet(buff_str5, OBJPROP_STYLE, STYLE_SOLID);
            ObjectSet(buff_str5, OBJPROP_COLOR, Blue);                  
           ObjectSet(buff_str5, OBJPROP_WIDTH, 2);
           ObjectSet(buff_str5, OBJPROP_RAY, false); 
           ObjectSet(buff_str5, OBJPROP_BACK,true); 
              
               }
               else
               {
                  ObjectSet(buff_str, OBJPROP_COLOR,Red); 
                  FiboL = AWEnd;
                  FiboH = AWStart;
              //  ObjectCreate(buff_str2, OBJ_FIBO, 0, Time[AWEndPos], AWStart, Time[AWEndPos], AWEnd);
                ObjectCreate(buff_str5, OBJ_TREND, 0, Time[AWEndPos], AWStart, Time[AWEndPos], AWEnd);
           ObjectSet(buff_str5, OBJPROP_STYLE, STYLE_SOLID);
            ObjectSet(buff_str5, OBJPROP_COLOR, Red);                  
           ObjectSet(buff_str5, OBJPROP_WIDTH, 2);
           ObjectSet(buff_str5, OBJPROP_RAY, false);  
             
               }
               
          
               FiboLC = FiboL + (FiboH - FiboL)*0.25;
               FiboLR = FiboL + (FiboH - FiboL)*0.382;
               FiboHR = FiboL + (FiboH - FiboL)*0.618;
               FiboHC = FiboL + (FiboH - FiboL)*0.75;
            
               if(1==1 || ObjectFind("Fibo") != 0 )
               {
                  
                  
                  
                  
                  ObjectCreate("Fibo", OBJ_FIBO, 0,Time[AWEndPos], AWStart, Time[AWEndPos], AWEnd);
                  ObjectSet("Fibo", OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet("Fibo", OBJPROP_COLOR, Aqua);               
                  ObjectSet("Fibo", OBJPROP_WIDTH, 2);
                  ObjectSet("Fibo", OBJPROP_FIBOLEVELS, 6);
/*                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+0, FiboL);
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+1, FiboLC);
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+2, FiboLR);
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+3, FiboHR);
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+4, FiboHC);
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+6, FiboH); */
                  
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+0, 0);ObjectSetFiboDescription("Fibo", 0, "0.0");
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+1, 0.25);ObjectSetFiboDescription("Fibo", 1, "25.0");
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+2, 0.382);ObjectSetFiboDescription("Fibo", 2, "38.2");
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+3, 0.618);ObjectSetFiboDescription("Fibo", 3, "61.8");
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+4, 0.75);ObjectSetFiboDescription("Fibo", 4, "75.0");
                  ObjectSet("Fibo", OBJPROP_FIRSTLEVEL+5, 1);ObjectSetFiboDescription("Fibo", 5, "100.0");

                  
                  
                  
                  
                  
                  ObjectSet(buff_str2, OBJPROP_STYLE, STYLE_DOT);
                  ObjectSet(buff_str2, OBJPROP_COLOR, Aqua);               
                  ObjectSet(buff_str2, OBJPROP_WIDTH, 1);
                  ObjectSet(buff_str2, OBJPROP_FIBOLEVELS, 6);
                  ObjectSet(buff_str2, OBJPROP_RAY, True);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+0, 0);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+1, 0.25);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+2, 0.382);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+3, 0.618);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+4, 0.75);
                  ObjectSet(buff_str2, OBJPROP_FIRSTLEVEL+5, 1);
               
               
               //
  
   
    
   if (RSI == 50.0)
   Comment("\n","ICWR: Daily RSI is Flat ",RSI,"\n","ICWR: ActiveWave Height= ",RequiredWaveHeight);
   else if (RSI > 50.0)
   Comment("\n","ICWR: Daily RSI is Long ",RSI,"\n","ICWR: ActiveWave Height= ",RequiredWaveHeight);
   else if (RSI < 50.0)
   Comment("\n","ICWR: Daily RSI is Short ",RSI,"\n","ICWR: ActiveWave Height= ",RequiredWaveHeight);

   
       if(RSI == 50.0)  
       {
        ObjectCreate(buff_str4, OBJ_TEXT, 0, Time[shifta+5], AWEnd+3*Point);
        ObjectSetText(buff_str4,"Daily RSI is Flat ", 8, "Arial", Gray);
       }
     
              if(RSI > 50)    
       {
        ObjectCreate(buff_str4, OBJ_TEXT, 0, Time[shifta+5], AWEnd+3*Point);
        ObjectSetText(buff_str4,"Daily RSI is Long ", 8, "Arial", Aqua);
       }
          if(RSI < 50)  
          {
           ObjectCreate(buff_str4, OBJ_TEXT, 0, Time[shifta+5], AWEnd+3*Point);
        ObjectSetText(buff_str4, "Daily RSI is Short ", 8, "Arial", Red);
          }
          
          
               
   for( int yi=0; yi<=6; yi++ ){
        buff_str3 = "mml"+yi+shift;
     
    if  (yi==1)      {
   
   ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  FiboLC, Time[shifta]+100*Period(), FiboLC);
   //ObjectMove(buff_str3, 0, Time[AWEndPos],  FiboLC ); 
   
   //ObjectMove(buff_str3, 0, Time[shifta]+100*Period(),  FiboLC );               
   }
    if  (yi==2)          
   ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  FiboLR, Time[shifta]+100*Period(),  FiboLR);      
   
    if  (yi==3)          
    ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  FiboHR, Time[shifta]+100*Period(),  FiboHR);      
            
                          
     if  (yi==4)          
      ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  FiboHC, Time[shifta]+100*Period(),  FiboHC);      
            
      if  (yi==5)          
      ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  AWStart, Time[shifta]+100*Period(),  AWStart);      
       
       if  (yi==6)          
      ObjectCreate(buff_str3, OBJ_TREND, 0, Time[AWEndPos],  AWEnd, Time[shifta]+100*Period(),  AWEnd);      
                               
                 
                 
                 
             ObjectSet(buff_str3, OBJPROP_STYLE, STYLE_SOLID);
                  ObjectSet(buff_str3, OBJPROP_COLOR, Gold);               
                  ObjectSet(buff_str3, OBJPROP_WIDTH, 1);
                  ObjectSet(buff_str3, OBJPROP_RAY, False);  
    ObjectSet(buff_str5, OBJPROP_BACK,true);
   
        
         ObjectCreate(buff_str6,OBJ_RECTANGLE, 0, Time[AWEndPos], FiboLR, Time[shifta]+100*Period(), FiboHR);
         ObjectSet(buff_str6, OBJPROP_COLOR, Gray);
      
         ObjectCreate(buff_str7,OBJ_RECTANGLE, 0, Time[AWEndPos], FiboLC, Time[shifta]+100*Period(), FiboL);
         ObjectSet(buff_str7, OBJPROP_COLOR, IndianRed);
                  
         ObjectCreate(buff_str8,OBJ_RECTANGLE, 0, Time[AWEndPos], FiboHC, Time[shifta]+100*Period(), FiboH);
         ObjectSet(buff_str8, OBJPROP_COLOR, Aqua);
            
           
            
             }  
                  
 
               
               }
               else
               {
                      ObjectMove("Fibo", 0, Time[AWStartPos], AWStart);
                  ObjectMove("Fibo", 1, Time[AWEndPos], AWEnd);
               }
               break;
            }
         }
          if(Dnz[shift]!=0.0)   LastActive = Dnz[shift];
          if(Upz[shift]!=0.0)   LastActive = Upz[shift];
               
        
         LastActivePos = shift;
      }
   }
}

}


void Extr_seq(int curb)
  {
//---- 
   if( fB[curb]<0 )
   {
     
      if( High[curb]>aH[curb] && Low[curb]<aL[curb] )
      {
     
         if( Open[curb]>aH[curb] )
         {
            fB[curb]=1;
            lB[curb]=0;
         }
         else 
         {
           
            if( Open[curb]<aL[curb] )
            {
               fB[curb]=0;
               lB[curb]=1;
            }
            else
            {
              
               if( Close[curb]>aH[curb] && Close[curb]>=Open[curb] )
               {
                  fB[curb]=0;
                  lB[curb]=1;
               }
               else 
               {
                  
                  if( Close[curb]>aL[curb] && Close[curb]<=Open[curb] )
                  {
                     fB[curb]=1;
                     lB[curb]=0;
                  }
                  else 
                  {
                     
                     if( Close[curb]>Open[curb] )
                     {
                        fB[curb]=0;
                        lB[curb]=1;
                     }
                     else 
                     {
                        
                        if( Close[curb]<Open[curb] )
                        {
                           fB[curb]=1;
                           lB[curb]=0;
                        }
                        else 
                        {
                           
                           if( MathAbs(Open[curb]-aL[curb])<MathAbs(Open[curb]-aH[curb]) )
                           {
                              fB[curb]=0;
                              lB[curb]=1;
                           }
                           else
                           {
                              
                              if( MathAbs(Open[curb]-aL[curb])>MathAbs(Open[curb]-aH[curb]) )
                              {
                                 fB[curb]=1;
                                 lB[curb]=0;
                              }
                              else 
                              {
                                
                                 if( MathAbs(Open[curb]-Low[curb])>=MathAbs(Open[curb]-High[curb]) )
                                 {
                                    fB[curb]=0;
                                    lB[curb]=1;
                                 }
                                 else
                                 {
                                    fB[curb]=1;
                                    lB[curb]=0;
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      else
      {
         if( High[curb]>aH[curb] )
         {
            fB[curb]=1;
         }
         else
         {
            fB[curb]=0;
         }
      }
   }
   else
   {
     
      if( (Low[curb]>=aL[curb] || Close[curb]==High[curb] ) && High[curb]>aH[curb] )
      {
         lB[curb]=1;
      }
      else
      {
         
         if( (High[curb]<=aH[curb] || Close[curb]==Low[curb]) && Low[curb]<aL[curb] )
         {
            lB[curb]=0;
         }
      }
   }
}






Sample





Analysis



Market Information Used:

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


Indicator Curves created:

Implements a curve of type DRAW_ZIGZAG
Implements a curve of type DRAW_NONE


Indicators Used:

Relative strength index


Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen