44 lines
		
	
	
		
			No EOL
		
	
	
		
			1 KiB
		
	
	
	
		
			MQL4
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			No EOL
		
	
	
		
			1 KiB
		
	
	
	
		
			MQL4
		
	
	
	
	
	
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;
 | 
						|
} |