52 lines
		
	
	
		
			No EOL
		
	
	
		
			905 B
		
	
	
	
		
			MQL5
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			No EOL
		
	
	
		
			905 B
		
	
	
	
		
			MQL5
		
	
	
	
	
	
#include "Tick.mqh"
 | 
						|
 | 
						|
struct ZIGZAG
 | 
						|
{
 | 
						|
private:
 | 
						|
  bool FlagUP;
 | 
						|
  int MinMax;
 | 
						|
 | 
						|
public:
 | 
						|
  const int MinPips;
 | 
						|
 | 
						|
  ZIGZAG ( const int iMinPips = 0 ) : FlagUP(true), MinMax(0), MinPips(iMinPips)
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  bool Calc( const MqlTick &tick )
 | 
						|
  {
 | 
						|
    bool Res = false;
 | 
						|
 | 
						|
    const TICK Tick = tick;
 | 
						|
 | 
						|
    if (this.FlagUP)
 | 
						|
    {
 | 
						|
      if (Tick.bid > this.MinMax)
 | 
						|
        this.MinMax = Tick.bid;
 | 
						|
      else if (Res = (this.MinMax - Tick.ask >= this.MinPips))
 | 
						|
      {
 | 
						|
        this.MinMax = Tick.ask;
 | 
						|
 | 
						|
        this.FlagUP = false;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      if (Tick.ask < this.MinMax)
 | 
						|
        this.MinMax = Tick.ask;
 | 
						|
      else if (Res = (Tick.bid - this.MinMax >= this.MinPips))
 | 
						|
      {
 | 
						|
        this.MinMax = Tick.bid;
 | 
						|
 | 
						|
        this.FlagUP = true;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return(Res);
 | 
						|
  }
 | 
						|
 | 
						|
  double GetLastZZ( void ) const
 | 
						|
  {
 | 
						|
    return(this.MinMax * _Point);
 | 
						|
  }
 | 
						|
}; |