#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); } };