input int inMinPips = 0; // Минимальное колено ЗЗ (в пипсах) input int inPeriodAvg = 0; // Период усреднения середины канала input int inPeriodSize = 0; // Период усреднения отклонения ЗЗ от середины канала input double inMultSize = 1; // Во сколько увеличиваем размер канала input int inAddSize = 0; // На сколько увеличиваем размер канала (в пипсах) #include "ZigZag.mqh" #include "Channel_EMA.mqh" #include "TradeChannel.mqh" CHANNEL* const Channel = new CHANNEL_EMA(inPeriodAvg, inPeriodSize); void System() { static ZIGZAG ZigZag(inMinPips); static TRADECHANNEL TradeChannel; static CHANNEL_UNIT ChannelUnit; MqlTick Tick; if (SymbolInfoTick(_Symbol, Tick) && ZigZag.Calc(Tick)) { static const double AddSize = inAddSize * _Point; ChannelUnit = Channel.Get(ZigZag.GetLastZZ()); ChannelUnit *= inMultSize; ChannelUnit += AddSize; ChannelUnit.Normalize(); } TradeChannel.Trade(ChannelUnit); } void OnTick() { System(); } void OnDeinit( const int ) { delete Channel; }