O MQL5 Wizard permite criar EAs prontos baseados nas classes da biblioteca padrão que vem junto com o terminal cliente (veja Criando EAs Prontos no MQL5 Wizard para mais detalhes). Ele possibilita checar rapidamente suas ideias de trading, basta criar sua própria classe de sinais de trading. A estrutura dessa classe e um exemplo podem ser encontrados no artigo MQL5 Wizard: Como Criar um Módulo de Sinais de Trading.
A ideia básica é a seguinte: a classe de sinais de trading é derivada de CExpertSignal, e é necessário sobrescrever os métodos virtuais LongCondition() e ShortCondition() com os seus próprios métodos.
Há um livro chamado "Estratégias dos Melhores Traders" (em russo), onde muitas estratégias de trading são discutidas, e nosso foco será nos padrões de candlestick de reversão, confirmados pelo Estocástico, CCI, MFI e RSI osciladores.
A melhor abordagem é criar uma classe separada, derivada de CExpertSignal, para verificar a formação dos padrões de candlestick. Para confirmar os sinais de trading gerados pelos padrões de candlestick, é suficiente escrever a classe, derivada de CCandlePattern, e adicionar as funcionalidades necessárias (por exemplo, confirmação por osciladores).
Aqui, vamos considerar os sinais baseados no padrão de candlestick de reversão "Dark Cloud Cover/Piercing Line", confirmados pelo indicador CCI. O módulo de sinais de trading é baseado na classe CCandlePattern, que é um exemplo simples de seu uso para criar sinais de trading com padrões de candlestick.
1. Padrões de Candlestick: "Dark Cloud Cover" e "Piercing Line"
1.1. Dark Cloud Cover
É um padrão de reversão de alta que ocorre no final de uma tendência de alta. Um longo candlestick branco é formado no primeiro dia e um gap de alta é criado no segundo dia. No entanto, o segundo dia fecha abaixo do ponto médio do primeiro dia.

Fig. 1. Padrão de Candlestick 'Dark Cloud Cover'
O reconhecimento do padrão "Dark Cloud Cover" é implementado no método CheckPatternDarkCloudCover() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Verifica a formação do padrão de candlestick "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover if((Close(2)-Open(2)>AvgBody(1)) && // (longo branco) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (fechar dentro do corpo anterior) (MidOpenClose(2)>CloseAvg(1)) && // (tendência de alta) (Open(1)>High(2))) // (abertura em nova alta) return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) da classe CCandlePattern é usado para verificar a formação do padrão de candlestick "Dark Cloud Cover".
1.2. Piercing Line
O gap de baixa no segundo dia perpetua a tendência de baixa. No entanto, o fechamento do segundo dia é acima do ponto médio do corpo do primeiro dia. Isso sugere aos ursos que um fundo pode estar se formando. Essa ação de preço não é tão discernível usando gráficos de barras como é com gráficos de candlestick. Quanto mais penetração do fechamento no segundo dia para o corpo do primeiro dia, mais provável será o sucesso do sinal de reversão.

Fig. 2. Padrão de Candlestick 'Piercing Line'
O reconhecimento do padrão "Piercing Line" é implementado no método CheckPatternPiercingLine() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Verifica a formação do padrão de candlestick "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (longo branco) (Open(2)-Close(2)>AvgBody(1)) && // (longo preto) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (fechar dentro do corpo anterior) (MidOpenClose(2)<CloseAvg(2)) && // (tendência de baixa) (Open(1)<Low(2))) // (abertura abaixo da baixa anterior) return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) da classe CCandlePattern é usado para verificar a formação do padrão de candlestick "Piercing Line".
2. Sinais de Trading Confirmados pelo Indicador CCI
Os sinais de trading para abrir posições longas ou curtas devem ser confirmados pelo indicador CCI. O valor do CCI deve ser maior/menor que os níveis críticos (-50 para posição longa e 50 para posição curta).
O fechamento das posições abertas depende dos valores do CCI. Isso pode ser feito em 2 casos:
- se a linha do CCI atingir o nível crítico oposto (80 para posição longa e -80 para posição curta)
- se o sinal reverso não for confirmado (quando o CCI atinge os níveis seguintes: -80 para posição longa e 80 para posição curta)

Fig. 3. Padrão 'Dark Cloud Cover', confirmado pelo indicador CCI
- int CDC_PL_CCI::LongCondition() - verifica as condições para abrir posição longa (retorna 80) e fechar a posição curta (retorna 40);
- int CDC_PL_CCI::ShortCondition() - verifica as condições para abrir posição curta (retorna 80) e fechar a posição longa (retorna 40).
2.1. Abrir Posição Longa/Fechar Posição Curta
A formação do padrão "Piercing Line" deve ser confirmada pelo indicador CCI: CCI(1)<-50 (o valor do CCI da última barra concluída deve ser menor que -50).
A posição curta deve ser fechada se o indicador CCI cruzar para cima o nível crítico -80 ou cruzar para baixo o nível crítico 80.
//+------------------------------------------------------------------+ //| Verifica as condições para entrada e saída do mercado | //| 1) Entrada no mercado (abrir posição longa, resultado=80) | //| 2) Saída do mercado (fechar posição curta, resultado=40) | //+------------------------------------------------------------------+ int CDC_PL_CCI::LongCondition() { int result=0; //--- idx pode ser usado para determinar o modo de trabalho do Expert Advisor //--- idx=0 - nesse caso o EA verifica as condições de trading a cada tick //--- idx=1 - nesse caso o EA verifica as condições de trading apenas em novas barras int idx =StartIndex(); //--- verificação das condições para abrir posição longa //--- formação do padrão Piercing Line e CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50)) result=80; //--- verificação das condições para fechar a posição curta //--- crossover da linha de sinal dos níveis de sobrecompra/sobrevenda (para baixo -80, para baixo -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- retorno do resultado return(result); }
2.2. Abrir Posição Curta/Fechar Posição Longa
A formação do padrão "Dark Cloud Cover" deve ser confirmada pelo indicador CCI: CCI(1)>50 (o valor do indicador CCI da última barra concluída deve ser maior que 50).
A posição longa deve ser fechada se o indicador CCI cruzar para baixo os níveis -80 ou 80.
//+------------------------------------------------------------------+ //| Verifica as condições para entrada e saída do mercado | //| 1) Entrada no mercado (abrir posição curta, resultado=80) | //| 2) Saída do mercado (fechar posição longa, resultado=40) | //+------------------------------------------------------------------+ int CDC_PL_CCI::ShortCondition() { int result=0; //--- idx pode ser usado para determinar o modo de trabalho do Expert Advisor //--- idx=0 - nesse caso o EA verifica as condições de trading a cada tick //--- idx=1 - nesse caso o EA verifica as condições de trading apenas em novas barras int idx =StartIndex(); //--- verificação das condições para abrir posição curta //--- formação do padrão Dark Cloud Cover e CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50)) result=80; //--- verificação das condições para fechar posição longa //--- crossover da linha de sinal dos níveis de sobrecompra/sobrevenda (para baixo -80, para baixo 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- retorno do resultado return(result); }
2.3. Criando um Expert Advisor Usando MQL5 Wizard
A classe CDC_PL_CCI não está incluída nas classes da Biblioteca Padrão, para usá-la, é necessário baixar o arquivo acdc_pl_cci.mqh (veja os anexos) e salvá-lo no diretório client_terminal_data\MQL5\Include\Expert\Signal\MySignals. O mesmo deve ser feito com o arquivo candlepatterns.mqh. Você pode usá-lo no MQL5 Wizard após reiniciar o MetaEditor.
Para criar um Expert Advisor, inicie o MQL5 Wizard:

Fig. 4. Criando um Expert Advisor usando MQL5 Wizard
Vamos especificar o nome do Expert Advisor:

Fig. 5. Propriedades gerais do Expert Advisor
Após isso, precisamos selecionar os módulos de sinais de trading utilizados.

Fig. 6. Propriedades de sinal do Expert Advisor
No nosso caso, usamos apenas um módulo de sinais de trading.
Adicionando o módulo de sinais "Sinais baseados em Dark Cloud Cover/Piercing Line confirmados por CCI":

Fig. 7. Propriedades de sinal do Expert Advisor
Módulo de sinais de trading adicionado:

Fig. 8. Propriedades de sinal do Expert Advisor
Você pode selecionar quaisquer propriedades de trailing, mas usaremos "Trailing Stop não utilizado":

Fig. 9. Propriedades de trailing do Expert Advisor
Quanto às propriedades de gerenciamento de dinheiro, usaremos "Trading com volume fixo":

Fig. 10. Propriedades de gerenciamento de dinheiro do Expert Advisor
Ao pressionar o botão "Finalizar", receberemos o código do Expert Advisor gerado, localizado em Expert_ADC_PL_CCI.mq5, que será salvo em terminal_data_folder\MQL5\Experts\.
Os parâmetros de entrada padrão do Expert Advisor gerado:
//--- entradas para sinal principal input int Signal_ThresholdOpen =10; // Valor do limite de sinal para abrir [0...100] input int Signal_ThresholdClose =10; // Valor do limite de sinal para fechar [0...100] input double Signal_PriceLevel =0.0; // Nível de preço para executar um negócio input double Signal_StopLevel =50.0; // Nível de Stop Loss (em pontos) input double Signal_TakeLevel =50.0 // Nível de Take Profit (em pontos)
devem ser substituídos por:
//--- entradas para sinal principal input int Signal_ThresholdOpen =40; // Valor do limite de sinal para abrir [0...100] input int Signal_ThresholdClose =20; // Valor do limite de sinal para fechar [0...100] input double Signal_PriceLevel =0.0; // Nível de preço para executar um negócio input double Signal_StopLevel =0.0 // Nível de Stop Loss (em pontos) input double Signal_TakeLevel =0.0 // Nível de Take Profit (em pontos)
Os parâmetros de entrada Signal_ThresholdOpen/Signal_ThresholdClose permitem especificar os níveis de limite para abertura e fechamento de posições.
No código dos métodos LongCondition() e ShortCondition() da classe de sinais de trading, especificamos os valores fixos do limite:
- Abrir posição: 80;
- Fechar posição: 40.
O Expert Advisor, gerado pelo MQL5 Wizard, abre e fecha posições usando os "votos" dos módulos de sinais de trading. O voto do módulo principal (como um container, que consiste em todos os módulos adicionados) também é usado, mas seus métodos LongCondition() e ShortCondition() sempre retornam 0.
Os resultados dos votos do módulo principal também são utilizados na média dos "votos". No nosso caso, temos: módulo principal + 1 módulo de sinais de trading, então precisamos levar isso em consideração ao definir os valores de limite. Devido a esse fato, os ThresholdOpen e ThresholdClose devem ser definidos como 40=(0+80)/2 e 20=(0+40)/2.
Os valores dos parâmetros de entrada Signal_StopLevel e Signal_TakeLevel estão definidos como 0, o que significa que o fechamento das posições será feito apenas quando as condições de fechamento forem verdadeiras.
2.4. Resultados de Backtesting Histórico
Vamos considerar o backtesting do Expert Advisor em dados históricos (EURUSD H1, período de teste: 01/01/2010 a 16/03/2011, PeriodCCI=15, MA_period=19).
Na criação do Expert Advisor, usamos o volume fixo (Trading Fixed Lot, 0.1), e o algoritmo de Trailing Stop não foi utilizado (Trailing não utilizado).

Fig. 11. Resultados do teste do Expert Advisor com base em Dark Cloud Cover/Piercing Line + CCI
O melhor conjunto de parâmetros de entrada pode ser encontrado usando o Strategy Tester do terminal cliente MetaTrader 5.
O código do Expert Advisor, criado pelo MQL5 Wizard, está anexado em expert_adc_pl_cci.mq5.
Publicações relacionadas
- MACD Sample: Um Guia Prático para o Expert Advisor no MetaTrader 5
- Como Criar Sinais de Negociação com MQL5 Wizard Usando Estrelas da Manhã e da Noite + Estocástico
- MQL5 Wizard: Sinais de Negociação com Padrões Candlestick e RSI no MetaTrader 5
- Como Criar um Expert Advisor Usando MQL5 Wizard para Sinais de Negociação com Padrões de Candlestick 'Hammer' e 'Hanging Man'
- MQL5 Wizard: Sinais de Negociação com Estrelas da Manhã/Noite + RSI para MetaTrader 5