Negociação usando canais Donchian

Alexander Fedosov | 10 maio, 2017


Conteúdo

Introdução

O canal Donchian é um indicador técnico desenvolvido no início de 1970. Então ele era chamado Canal de média, mas foi mais tarde renomeado em homenagem ao seu criador, Richard Donchian. Este indicador determina o grau de volatilidade do mercado com base numa determinada faixa de preço, aplicando máximos e mínimos recentes. Visualmente o canal Donchian consiste em duas linhas em cujo interior ocorrem flutuações de preço. Os sinais para comprar ou vender consistem em saídas do preço fora dos limites inferior ou superior do canal, respectivamente. Ao plotar o canal, o autor recomenda o uso da faixa de preço de 20 (o número estimado de dias úteis por mês) e o timeframe D1.

Princípio de funcionamento e aplicação do canal Donchian

Como decidi não reinventar a roda, não fiz mais uma implementação informática deste indicador, pelo contrário, usei como base uma modificação dele que carateriza o estilo de negociação segundo este sistema, isto é, Donchian Channels System. Na figura 1, nas velas azuis e rosas, podem ser visualizados facilmente os locais onde ocorre o rompimento dos limites do canal, ou seja, os lugares onde sugerido entrar no mercado.


Fig.1. Princípio de funcionamento e pontos de entrada no mercado do canal Donchian

Preste atenção nas zonas vermelhas marcadas no gráfico. Pois, trata-se da principal desvantagem do canal Donchian, isto é, fugas falsas após as quais o preço novamente volta para sua faixa. Portanto, sem confirmação adicional seria temerário entrar no mercado segundo o canal Donchian. Para apresentar mais claramente a essência do indicador, examinemos os parâmetros e implementação da modificação utilizada:

//+----------------------------------------------+
//|  Parâmetros de entrada do indicador          |
//+----------------------------------------------+
input uint           DonchianPeriod=20;            // Período de média
input Applied_Extrem Extremes=HIGH_LOW;            // Tipo de extremos
input uint           Shift=2;                      // Deslocamento horizontal nas barras 
//+----------------------------------------------+
  • Período de média — faixa de preço utilizada.
  • Tipo de extremos — tipos de valores de preços que serão utilizados nos cálculos. Por padrão, é usada a definição clássica para valores de mínimos e máximos de velas.
  • Deslocamento horizontal nas barras — em quantas barras será movido o canal.

Aqui vale a pena prestar atenção aos tipos de extremos, já que, na modificação que escolhi, é possível usar não só os valores High e Low. A seguir apresentadas as variantes e a implementação informática:

//+----------------------------------------------+
//|  Declaração de enumeração                    |
//+----------------------------------------------+
enum Applied_Extrem //Tipo de extremos
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };
  • HIGH_LOW — implementação clássica de High e Low de velas.
  • HIGH_LOW_OPEN — nesta interpretação, para a construção da borda superior do canal, é utilizada a média entre o máximo do preço de abertura e os máximos das velas, numa determinada faixa de preços. Para a borda inferior, são usados os mínimos.
  • HIGH_LOW_CLOSE — para a construção da borda superior do canal, o valor médio entre o máximo do preço de fechamento e os máximos das velas, na faixa de preços especificada. Para a borda inferior, são usados os mínimos.
  • OPEN_HIGH_LOW — para construção da borda superior, é usado o máximo dos preços de abertura na faixa de preço definida, enquanto para a borda inferior, o mínimo.
  • CLOSE_HIGH_LOW — para construção da borda superior, é usado o máximo dos preços de fechamento na faixa de preço definida, enquanto para a borda inferior, o mínimo.

A seguir apresentada uma listagem da implementação de vários tipos de extremos:

for(bar=first; bar<rates_total && !IsStopped(); bar++)
     {
      switch(Extremes)
        {
         case HIGH_LOW:
            SsMax=high[ArrayMaximum(high,bar,DonchianPeriod)];
            SsMin=low[ArrayMinimum(low,bar,DonchianPeriod)];
            break;

         case HIGH_LOW_OPEN:
            SsMax=(open[ArrayMaximum(open,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(open[ArrayMinimum(open,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case HIGH_LOW_CLOSE:
            SsMax=(close[ArrayMaximum(close,bar,DonchianPeriod)]+high[ArrayMaximum(high,bar,DonchianPeriod)])/2;
            SsMin=(close[ArrayMinimum(close,bar,DonchianPeriod)]+low[ArrayMinimum(low,bar,DonchianPeriod)])/2;
            break;

         case OPEN_HIGH_LOW:
            SsMax=open[ArrayMaximum(open,bar,DonchianPeriod)];
            SsMin=open[ArrayMinimum(open,bar,DonchianPeriod)];
            break;

         case CLOSE_HIGH_LOW:
            SsMax=close[ArrayMaximum(close,bar,DonchianPeriod)];
            SsMin=close[ArrayMinimum(close,bar,DonchianPeriod)];
            break;
        }


Desenvolvimento do sistema de negociação

Durante o desenvolvimento da estratégia, vale a pena levar em conta não só as fugas falsas, más também o fato de o canal Donchian ser mais frequentemente utilizado em estratégias de tendência. Como os sinais de entrada no mercado são fugas para além das bordas do canal, para excluir a desvantagem quanto às saídas falsas fora das margens, é necessário escolher pelo menos mais um indicador de tendência que confirme o sinal. Além disso, deve-se identificar as condições exatas de entrada, acompanhamento de posição aberta e saída, gestão do dinheiro. Portanto, vamos formular as condições a serem impostas.

1. Sinal de confirmação

O objetivo do artigo consiste em não só mostrar exemplos do uso de canais Donchian, mas também fazer alguma pesquisa sobre o tema da "sobrevivência" deste sistema no mercado atual. Portanto, escolheremos alguns indicadores de confirmação. Cada um deles trabalhará em conjunto com o canal Donchian. Assim, teremos um diferentes estratégias de negociação, com base na que estudamos. Para o trabalho em equipe com o canal, escolhi três sinais de confirmação na forma dos indicadores a seguir:

  • Average Directional Movement Index(ADX)  — Índice de direção média do movimento. O trabalho em equipe com este indicador será uma oportunidade para avaliar o estado e a força da tendência atual durante a fuga de canal.
  • Moving Average Convergence/Divergence(MACD) — oscilador de Convergência/Divergência de Médias Móveis. Neste sistema o MACD seguirá a tendência atual. Imediatamente após a fuga do canal, verificaremos se ele corresponde à direção do mercado ou se se trata de uma exibição acidental do preço (fuga falsa).
  • Decidiu-se escolher apenas dois como sinais de confirmação: Average Speed (taxa de variação média do preço em pontos/minutos) e X4Period_RSI_Arrows (indicador de semáforo a partir de quatro RSI com diferentes timeframes).

2. Formalização dos sistemas de negociação

Primeiro, é necessário escolher os parâmetros gerais para todas as três futuras estratégias de negociação: nós selecionamo-los de modo que a faixa de teste seja máxima quanto possível. Portanto, formulamos os parâmetros que controlaremos durante o teste:

  • Timeframe. A possibilidade de selecionar o timeframe é necessária para testar em diferentes períodos que podem caracterizar diferentes fases de mercado, desde movimentos fracos e ajustes até tendências longas que são vistas mais claramente em períodos maiores.
  • Gestão do dinheiro. Vários tamanhos de posição, dependendo dos resultados da negociação, ajudarão a entender se é melhor reinvestir os fundo ou é mais conveniente negociar usando lotes constantes.
  • Acompanhamento da posição aberta. Várias maneiras de trabalhar com a posição já aberta permitirá entender qual a percentagem do atual movimento favorável podemos tomar como lucro.
  • Parâmetros dos indicadores. O teste de estratégias selecionadas em diferentes modos aclarará sob quais as configurações nosso sistema será eficaz ou ineficiente.

Logo, é preciso formular as condições de entrada para as três estratégias de negociação:

#1. Canal Donchian + ADX.

Condições deste sistema:

  • Rompimento da borda superior ou inferior do canal Donchian.
  • A linha principal de força de tendência ADX deve estar acima do nível predefinido ADX Level.
  • Se houver rompimento da linha superior, DI+ deve ser superior a DI-. Por conseguinte, se o rompimento ocorrer para baixo, DI- superior a DI+.

Fig.2. Condições de entrada no mercado para estratégia canal Donchian+ADX

#2. Canal Donchian + MACD.  

Condições deste sistema:

  • Rompimento da borda superior ou inferior do canal Donchian.
  • Ao acontecer isto, o valor do histograma é superior a zero e à linha de sinal durante a compra.
  • O valor do histograma é inferior a zero e à linha de sinal durante a venda.

Fig.3. Condições de entrada no mercado para estratégia canal Donchian+MACD

#3. Canal Donchian + (Average Speed e X4Period_RSI_Arrows).

As condições deste sistema são as seguintes:

  • Rompimento da borda superior ou inferior do canal Donchian.
  • Ao acontecer isto, o Average Speed deve ser superior a 1, enquanto o RSI de semáforo deve exibir pelo menos 2 pontos sobre a vela durante a compra, e sob a vela durante a venda.

Fig.4. Condições de entrada no mercado para estratégia canal Donchian+(Average Speed e X4Period_RSI_Arrows)

Implementação do sistema de negociação

Para comodidade ao testar e otimizar, decidiu-se implementar esses tipos de estratégias num Expert Advisor. Portanto, os parâmetros apresentam uma escolha de quatro estratégias:

//+------------------------------------------------------------------+
//|  Declaração de enumeração de tipos de estratégia                 |
//+------------------------------------------------------------------+
enum Strategy
  {
   Donchian=0,
   Donchian_ADX,
   Donchian_MACD,
   Donchian_AvrSpeed_RSI
  };
  • Donchian — estratégia de rompimento com uso apenas de canais Donchian.
  • Donchian_ADX — estratégia com filtro como força de tendência do indicador ADX.
  • Donchian_MACD — estratégia com filtro como sinais do oscilador MACD.
  • Donchian_AvrSpeed_RSI — estratégia com filtro como sinais de taxa de variação de preço e RSI semáforo multi-período.

A seguir, declaramos os tipos de extremos dos canais de Donchian que serão testados:

//+------------------------------------------------------------------+
//| Declaração de enumerações de tipos de extremos                   |
//+------------------------------------------------------------------+
enum Applied_Extrem
  {
   HIGH_LOW,
   HIGH_LOW_OPEN,
   HIGH_LOW_CLOSE,
   OPEN_HIGH_LOW,
   CLOSE_HIGH_LOW
  };

Além disso, deve-se levar em conta que poderão ser utilizados três sistemas de gestão do dinheiro:

//+------------------------------------------------------------------+
//|  Enumeração para variantes de cálculo de lote                    |
//+------------------------------------------------------------------+
enum MarginMode
  {
   FREEMARGIN=0,     //MM Free Margin
   BALANCE,          //MM Balance
   LOT               //Constant Lot
  };
  • FREEMARGIN — cálculo do lote base a partir da margem livre.
  • BALANCE — cálculo a partir do balanço atual na conta.
  • LOT — sem alterações. Usa-se o lote base definido manualmente.

A classe CTrailing - localizada no arquivo Trailing.mqh - foi desenvolvida como sistema de acompanhamento de posições abertas com base no Expert Advisor Trailing-Stop Universal.

Abaixo estão os métodos de acompanhamento de posições, bem como os parâmetros de entrada:

enum   TrallMethod
  {
   b=1,     //Segundo extremos de velas
   c=2,     //Segundo fractais
   d=3,     //Segundo indicadores ATR
   e=4,     //Segundo o indicador Parabolic
   f=5,     //Segundo o indicador MA
   g=6,     //% a partir do lucro
   i=7,     //Segundo pontos
  };


//--- Parâmetros de Trailing-Stop

input bool                 UseTrailing=true;                            //Uso de Trailing-Stop
input bool                 VirtualTrailingStop=false;                   //Trailing-Stop virtual
input TrallMethod          parameters_trailing=7;                       //Método de Trailing-Stop

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Timeframe dos indicadores

input int                  StepTrall=50;                                //Passo de deslocamento de Stop-Loss (em pontos)
input int                  StartTrall=100;                              //Lucro mínimo de trailing stop (em pontos)

input int                  period_ATR=14;                               //Período ATR (método 3)

input double               step_PSAR=0.02;                              //Passo PSAR (método 4)
input double               maximum_PSAR=0.2;                            //Máximo PSAR (método 4)

input int                  ma_period=34;                                //Período MA (método 5)
input ENUM_MA_METHOD       ma_method=MODE_SMA;                          //Método de média  (método 5)
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;                   //Tipo de preço  (método 5)

input double               PercentProfit=50;                            //Percentual do lucro (método 6)

Além disso, para facilitar a exibição dos parâmetros selecionados durante o teste demo e o modo de teste visual, eu adicionei um painel informativo usando a série de artigos Interfaces gráficas do usuário. Ele contém os tipos básicos de configurações selecionadas:

  • tipo de estratégia;
  • tipo de Trailing-Stop;
  • tipo de gestão do dinheiro;
  • Take-Profit;
  • Stop-Loss.

A classe CDonchianUI - localizada no arquivo DonchianUI.mqh - foi desenvolvida para exibição. Se desejar, é possível adicionar seus próprios valores. O painel pode ser visto na figura 5.

Fig.5. Painel de informações de modos principais Donchian Expert.

Teste

Antes do teste, devem-se definir suas condições. Os principais estão resumidos na tabela a seguir:

Parâmetros Valor
Intervalo de teste 01.03.2016 — 01.03.2017
Mercado EURUSD/GOLD-6.17
Modo de negociação Cada tick baseado em ticks reais
Depósito inicial 1000 USD
Alavancagem  1:500
Servidor MetaQuotes

Como o Expert Advisor é apresentado no formato 4 em 1, não faz sentido falar sobre toda a riqueza da lista de possíveis combinações de configurações, isso será deixado para o leitor. No entanto, selecionamos os blocos básicos de configurações que combinaremos no teste, enquanto os parâmetros privados dos blocos serão otimizados. Para maior clareza, na tabela dada abaixo, estão os modos de Expert Advisor que mudarão durante o teste:

Bloco de Expert Advisor Modos de teste
Gestão do dinheiro Lote constante/ a partir do balanço
Timeframe em execução M30 - D1
Acompanhamento de posição aberta Trailing-Stop/ Sem acompanhamento
Tipo de estratégia Donchian/Donchian+ADX/Donchian+MACD/Donchian+Avr.Speed+RSI

Passo explicar por que na Gestão do dinheiro são selecionados apenas 2 modos: durante o teste a carga no depósito utilizado será apenas da parte do nosso Expert Advisor, enquanto, no mercado, haverá apenas uma posição, de modo que o modo A partir do balanço e A partir da margem livre, na verdade, é o mesmo. 

1. Estratégia de negociação Canal Donchian.

Primeiro, testamos a estratégia apenas nos canais Donchian.


Fig. 6 Estratégia de negociação Donchian em EURUSD.

Durante o teste e otimização em EURUSD, chegou-se às seguintes conclusões:

  • Na faixa definida, os melhores resultados foram em M30-H1.
  • Ao mesmo tempo, o período de trabalho do indicador foi 10-12.
  • Do ponto de vista do preços aplicado no indicador, o melhor foi o modo CLOSE_HIGH_LOW.
  • O Trailing-Stop mostrou-se ineficaz em comparação com o modo sem ele.
  • Conclusão geral: a estratégia baseada só no canal Donchian provou ser uma estratégia de tendência clássica com uma série de operações rentáveis ​​durante os movimentos fortes do mercado.
//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Timeframe em execução
input bool                 InfoPanel=false;                             //Exibição do painel informativo
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=10;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian;                        //Estratégia selecionada

//--- Parâmetros de Trailing-Stop

input bool                 UseTrailing=false;                           //Uso de Trailing-Stop


Em comparação com o par de moedas, durante o teste em futuros GOLD-6.17, com o mesmo período e nos mesmos intervalos de tempo como para EURUSD - M30-H1, o resultado foi melhor. 


Fig.7. Estratégia de negociação Donchian em GOLD-6.17.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Timeframe em execução
input bool                 InfoPanel=false;                             //Exibição do painel informativo
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=12;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian;                        //Estratégia selecionada
....

//--- Parâmetros de Trailing-Stop

input bool                 UseTrailing=true;                            //Uso de Trailing-Stop
input bool                 VirtualTrailingStop=false;                   //Trailing-Stop virtual
input TrallMethod          parameters_trailing=7;                       //Método de Trailing-Stop

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Timeframe dos indicadores

input int                  StepTrall=50;                                //Passo de deslocamento de Stop-Loss (em pontos)
input int                  StartTrall=100;                              //Lucro mínimo de trailing stop (em pontos)

2. Estratégia de negociação Canal Donchian e ADX.

De acordo com os resultados ao testar as estratégias com filtro ADX de sinais do canal Donchian as conclusões foram as seguintes:

  • O número de transações diminuiu, o que era esperado. 
  • O melhor timeframe para trabalhar ainda é M30.
  • A percentagem de transações rentáveis foi maior.
  • O período de canal mais eficaz foi 18, enquanto o período ADX — 10.
  • O CLOSE_HIGH_LOW continua a ser a aplicação de preço mai eficaz no canal Donchian.


Fig.8. Estratégia de negociação Donchian + ADX em EURUSD.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Timeframe em execução
input bool                 InfoPanel=false;                             //Exibição do painel informativo
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=18;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian_ADX;                    //Estratégia selecionada
//--- Parâmetros do indicador ADX

input int                  ADX_period=10;
input double               ADX_level=20;

Os resultados em futuros mostraram que no timeframe H1 com período de canal Donchian 18 e ADX 8, os resultados são semelhantes com os da estratégia anterior. Neste caso, mais uma vez os melhores resultados foram ao usar o canal nos preços de fechamento.


Fig.9. Estratégia de negociação Donchian + ADX em GOLD-6.17.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Timeframe em execução
input bool                 InfoPanel=false;                             //Exibição do painel informativo
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=18;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian_ADX;                    //Estratégia selecionada
//--- Parâmetros do indicador ADX

input int                  ADX_period=8;
input double               ADX_level=20;

//--- Parâmetros de Trailing-Stop

input bool                 UseTrailing=true;                            //Uso de Trailing-Stop
input bool                 VirtualTrailingStop=false;                   //Trailing-Stop virtual
input TrallMethod          parameters_trailing=7;                       //Método de Trailing-Stop

input ENUM_TIMEFRAMES      TF_Tralling=PERIOD_CURRENT;                  //Timeframe dos indicadores

input int                  StepTrall=50;                                //Passo de deslocamento de Stop-Loss (em pontos)
input int                  StartTrall=100;                              //Lucro mínimo de trailing stop (em pontos)

3. Estratégia de negociação Canal Donchian e MACD.

De acordo com os resultados ao testar as estratégias com filtro MACD de sinais do canal Donchian as conclusões foram as seguintes:

  • Os melhores resultados são mostrados novamente no timeframe H1.
  • A alteração dos parâmetros do indicador MACD não fez quaisquer alterações importantes.


Fig. 10. Estratégia de negociação Donchian + MACD em EURUSD.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Timeframe em execução
input bool                 InfoPanel=true;                              //Exibição de paneis informativos
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=16;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian_MACD;                   //Estratégia selecionada

//--- Parâmetros do indicador MACD

input int                  InpFastEMA=12;                               //Fast EMA period
input int                  InpSlowEMA=26;                               //Slow EMA period
input int                  InpSignalSMA=9;                              //Signal SMA period
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //Applied price

Ao testar futuros, como na estratégia anterior, o melhor período do canal Donchian foi o 10. A variante com uso de Trailing-Stop era mais eficaz do que a sem ele.


Fig.11. Estratégia de negociação Donchian + MACD em GOLD-6.17.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_M30;                 //Timeframe em execução
input bool                 InfoPanel=true;                              //Exibição de paneis informativos
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=10;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian_MACD;                   //Estratégia selecionada

//--- Parâmetros do indicador MACD

input int                  InpFastEMA=12;                               //Fast EMA period
input int                  InpSlowEMA=26;                               //Slow EMA period
input int                  InpSignalSMA=9;                              //Signal SMA period
input ENUM_APPLIED_PRICE   InpAppliedPrice=PRICE_CLOSE;                 //Applied price

Antes de testar a seguinte estratégia com filtro complexo, vale a pena fazer um ressumo provisório sobre o fato de, nas três estratégias examinadas, terem sido utilizados indicadores clássicos. Na verdade, não foi identificada uma grande diferença entre as estratégias testadas em EURUSD, no entanto os filtros na forma de ADX e MACD reduziram o número de entradas no mercado e aumentaram o resultado final. Se considerarmos os testes sobre futuros, e, dada a especificidade deste mercado e a volatilidade - que se diferencia fortemente - em comparação com os pares de moedas, a filtração de sinais do canal de Donchian não se altera. Mas o resultado final acabou por ser muito melhor aqui do que no par de moedas.

4 Estratégia de negociação Canal Donchian e Average Speed+X4Period_RSI_Arrows.

Após otimizar a estratégia de filtragem de sinais do canal Donchian usando o filtro complexo, confirmamos todas as conclusões anteriores sobre o uso de diferentes condições de negociação. Devido à baixa volatilidade dos futuros, a seletividade desta estratégia provou ser muito alta.


Fig. 12. Estratégia de negociação Donchian + Average Speed+X4Period_RSI_Arrows em EURUSD.

//+------------------------------------------------------------------+
//| Parâmetros de entrada do Expert Advisor                          |
//+------------------------------------------------------------------+
sinput string              Inp_EaComment="Donchian Expert";             //EA de comentários
input double               Inp_Lot=0.01;                                //Lote base
input MarginMode           Inp_MMode=LOT;                               //Gestão do dinheiro
input int                  Inp_MagicNum=555;                            //Magic
input int                  Inp_StopLoss=400;                            //Stop-Loss (em pontos)
input int                  Inp_TakeProfit=600;                          //Take-Profit (em pontos)
input int                  Inp_Deviation = 20;                          //Slippage (derrapagem)
input ENUM_TIMEFRAMES      InpInd_Timeframe=PERIOD_H1;                  //Timeframe em execução
input bool                 InfoPanel=true;                              //Exibição de paneis informativos
//--- Parâmetros do indicador Donchian Channel System

input uint                 DonchianPeriod=12;                           //Período de canal
input Applied_Extrem       Extremes=CLOSE_HIGH_LOW;                     //Tipo de extremos
//--- Seleção de estratégia aplicada

input Strategy             CurStrategy=Donchian_AvrSpeed_RSI;           //Estratégia selecionada

//--- Parâmetros do indicador Average Speed

input int                  Inp_Bars=1;                                  //Número de barras
input ENUM_APPLIED_PRICE   Price=PRICE_CLOSE;                           //Preço aplicado
input double               Trend_lev=2;                                 //Nível de tendência
//--- Parâmetros do indicador x4period_rsi_arrows

input uint                 RSIperiod1=7;                                //Período RSI_1
input uint                 RSIperiod2=12;                               //Período RSI_2
input uint                 RSIperiod3=18;                               //Período RSI_3
input uint                 RSIperiod4=32;                               //Período RSI_4
input ENUM_APPLIED_PRICE   Applied_price=PRICE_WEIGHTED;                //Preço aplicado
input uint                 rsiUpperTrigger=62;                          //Nível de sobrecompra
input uint                 rsiLowerTrigger=38;                          //Nível de sobrevenda
//--- Parâmetros de Trailing-Stop

input bool                 UseTrailing=false;                           //Uso de Trailing-Stop

Conclusões

Com base no teste do sistema de negociação segundo o canal Donchian foram feitas as seguintes conclusões e observações sobre suas características:

  • A negociação sobre os canais provou ser uma clássica estratégia de tendência, e para melhorá-la, é necessário introduzir filtros de movimento lateral.
  • Os resultados do teste foram melhores no mercado de futuros.
  • Ao contrário do cálculo clássico de limites máximos e mínimos dos canais, o modo CLOSE_HIGH_LOW (segundo os preços de fechamento) mostrou ser melhor. Isto é devido ao fato de que para o EURUSD testado, são típicas as emissões de preço na forma de longas sombras, no mercado de hoje. Elas distorceram fortemente as bordas do canal, enquanto os preços de fechamento foram mais objetivos.
  • Além disso, os melhores resultados foram observados quando se trabalha não nos gráficos diários e timeframes M30 — H1.
  • Ao fazer isto, o período eficaz varia de 10 a 20 velas.

Conclusão

No final do artigo é anexado um arquivo com todos os ficheiros listados, classificados em pastas. Portanto, para uma correta operação é suficiente colocar a pasta MQL5 na raiz do terminal. Ao fazer isto, é usada a biblioteca gráfica da interface gráfica do usuário EasyAndFastGUI, que pode ser tomada a partir do artigo.

Programas utilizados no artigo:

#
 Nome
Tipo
Descrição
1
DonchianExpert.mq5 Expert Advisor
 Expert Advisor complexo, incluindo 4 estratégias baseadas em canais Donchian.
2
DonchianUI.mqh Biblioteca  Classe Interface do usuário
3
TradeFunctions.mqh Biblioteca  Classe de funções de negociação.
4
Trailing.mqh Biblioteca  Classe de acompanhamento de posições abertas.
5
average_speed.mq5 Indicador  Indicador de rapidez média de alteração do preço.
6
donchian_channels_system.mq5 Indicador  Indicador Canal Donchian com exibição de velas que rompem as bordas do canal.
7 x4period_rsi_arrows.mq5 Indicador  Indicador de semáforo de quatro RSI multi-períodos.