Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
![Experts](https://c.mql5.com/i/code/expert.png)
Assistente MQL5 - Sinais de Negociação Baseados nos "Engolfo de Baixa/Engolfo de Alta" + CCI - expert para MetaTrader 5
- Visualizações:
- 3170
- Avaliação:
- Publicado:
- 2014.01.15 08:22
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O Assistente MQL5 permite a criação de Expert Advisors prontos para usar com base nas classes da Biblioteca Padrão entregues juntamente com o terminal do cliente (veja Criando Expert Advisors Prontos Para Usar no Assistente MQL5 para mais detalhes). Ele permite verificar suas idéias de negociação rapidamente, tudo que você precisa é criar sua própria classe de sinais de negociação. A estrutura desta classe e exemplo podem ser encontrado no artigo Assistente MQL5: Como criar um módulo de sinais de negociação.
A ideia genérica é o seguinte: a classe dos sinais de negociação deriva do CExpertSignal, em seguida, é necessário substituir os métodos virtuais LongCondition() e ShortCondition() com seus próprios métodos.
Há um livro chamado "Estratégias dos melhores traders" (em Russo), existem muitas estratégias de negociação que são considerados neste livro, vamos nos concentrar em padrões de velas de reversão, confirmados pelos osciladores Stochastic, CCI, MFI e RSI.
A melhor maneira é criar a classe separada, derivado de CExpertSignal para a verificação da formação de padrões de candles. Para confirmar os sinais de negociação, gerados por padrões de velas, apenas escreva a classe derivada de CCandlePattern e adicionar aos recursos necessários existentes (por exemplo, a confirmação por osciladores).
Aqui vamos considerar os sinais baseados nos padrões candles de reversão "Engolfo de Baixa/Engolfo de Alta", confirmado pelo indicador CCI. O módulo de sinais de negociação baseia-se na classe CCandlePattern, é um simples exemplo de seu uso para a criação de sinais de negociação com padrões de candles.
1. Padrões candles de reversão "Engolfo de Baixa" e "Engolfo de Alta"
1.1. Engolfo de Alta
Padrão de reversão "Engolfo de Alta" formado na tendência de baixa, quando um pequeno candle negro vem seguido de um grande candle branco que engolfa completamente ("envolve") o candle do dia anterior. As sombras (caudas) do pequeno candle são curtas, permitindo que o corpo do candle grande envolva toda o candle do dia anterior.
Fig. 1. Padrão candle "Engolfo de Alta"
O reconhecimento do padrão "Engolfo de Alta" é implementado pelo método CheckPatternBullishEngulfing() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Verificar a formação do padrão candle "Engolfo de Alta" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Engolfo de Alta if((Open(2)>Close(2)) && // Engolfo de Alta (Close(1)-Open(1)>AvgBody(1)) && // corpo do candle de alta é mais elevado do que o valor médio do corpo de baixa (Close(1)>Open(2)) && // fechamento do preço do candle de alta é superior ao preço de abertura do candle de baixa (MidOpenClose(2)<CloseAvg(2)) && // tendência de baixa (Open(1)<Close(2))) // preço de abertura do candle de alta é menor do que o fechamento do preço de baixa return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) da classe CCandlePattern é usado para verificar a fromação do padrão candle "Engolfo de Alta".
1.2. Engolfo de Baixa
Padrão de reversão "Engolfo de Baixa" formado na tendência de alta, quando um pequeno candle branco vem seguido de um grande candle negro que engolfa completamente ("envolve") o candle do dia anterior.. As sombras (caudas) do pequeno candle são curtas, permitindo que o corpo do candle grande envolva toda o candle do dia anterior.
Fig. 2. Padrão candle "Engolfo de Baixa"
O reconhecimento do padrão "Engolfo de Baixa" é implementado pelo método CheckPatternBearishEngulfing() da classe CCandlePattern:
//+------------------------------------------------------------------+ //| Verificar a formação do padrão candle "Engolfo de Baixa" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // candle anterior é de alta (Open(1)-Close(1)>AvgBody(1)) && // corpo do candle de baixa é maior do que o valor médio do corpo de alta (Close(1)<Open(2)) && // fechamento do preço do candle de baixa é menor do que o preço de abertura do candle de alta (MidOpenClose(2)>CloseAvg(2)) && // tendência de Alta (Open(1)>Close(2))) // preço de abertura do candle de baixa é maior do que o fechamento do preço do candle alta return(true); //--- return(false); }
O método CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING)da classe CCandlePattern é usado para verificar o padrão candle "Engolfo de Baixa".
2. Sinais de negociação confirmado pelo indicador CCI
Os sinais de negociação para abrir posição comprada ou vendida deve ser confirmado pelo indicador CCI. O valor do CCI deve ser maior/menor do que os níveis críticos (-50 para posição comprada e 50 para posição vendida).
O fechamento da posição comprada depende dos valores do CCI. Pode ser feito em dois casos:
- se a linha CCI atingiu o nível crítico oposto (80 para posição comprada e -80 para posição vendida)
- se o sinal de inversão não é confirmado (quando o CCI atinge os seguintes níveis: -80 para posição comprada e 80 para a posição vendida)
Fig. 3. Fig. 3. Padrão "Engolfo de Alta", confirmado pelo indicador CCI
- int CBE_BE_CCI::LongCondition() - verifica as condições para abrir posição comprada (retorna 80) e fecha na posição vendida (retorna 40);
- int CBE_BE_CCI::ShortCondition() - verifica as condições para abrir posição vendida (retorna 80) e fecha na posição comprada(retorna 40).
2.1. Abrir posição comprada/Fechar posição vendida
A formação do padrão "Engolfo de Alta" deve ser confirmada pelo indicador CCI: CCI(1)<-50 (o valor da CCI da última barra completa deve ser menor do que -50).
A posição vendida deve ser fechado se o indicador CCI cruzou para cima o nível crítico -80 ou cruzou para baixo do nível crítico 80.
//+------------------------------------------------------------------+ //| Verifica as condições de entrada e saída do mercado | //| 1) Entrada no Mercado (abrir posição comprada, resultado=80) | //| 2) Saída do Mercado(fechar posição vendida, resultado=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::LongCondition() { int result=0; //--- idx pode ser usado para determinar o modo de trabalho do Expert Advisor //--- idx=0 - neste caso o EA verifica as condições de negócio a cada tick //--- idx=1 - neste caso o EA verifica as condições de negócio apenas nas novas barras int idx =StartIndex(); //--- verificando as condições para abrir posição comprada //--- formação do padrão Engolfo de Alta e CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50)) result=80; //--- verificando as condições para fechar com posição vendida //--- cruzamento da linha de sinal nos níveis sobrecomprados/sobrevendidos (descendente 80, descendente -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- resultado de retorno return(result); }
2.2. Abrir posição vendida/ Fechar posição comprada
A formação do padrão "Engolfo de Baixa" deve ser confirmada pelo indicador CCI: CCI(1)>50 (o valor do indicador CCI da última barra completa deve ser maior do que 50).
A posição comprada deve ser fechado se o indicador CCI cruzar para baixo os níveis -80 ou 80.
//+------------------------------------------------------------------+ //| Verifica as condições de entrada e saída do mercado | //| 1) Entrada no Mercado (abrir posição vendida, resultado=80) | //| 2) Saída do Mercado(fechar posição comprada, resultado=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::ShortCondition() { int result=0; //--- idx pode ser usado para determinar o modo de trabalho do Expert Advisor //--- idx=0 - neste caso o EA verifica as condições de negócio a cada tick //--- idx=1 - neste caso o EA verifica as condições de negócio apenas nas novas barras int idx =StartIndex(); //--- verificando as condições para abrir vendida //--- formação do padrão Engolfo de Baixa e CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1)>50)) result=80; //--- verificando as condições para fechar com posição comprada //--- cruzamento da linha de sinal nos níveis sobrecomprados/sobrevendidos (descendente -80, descendente 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- resultado de retorno return(result); }
2.3. Criando Expert Advisor usando Assistente MQL5
A classe CBE_BE_CCI não está incluída nas classes da Biblioteca Padrão, para usá-la é necessário fazer o download do arquivo acbe_be_cci.mqh (veja anexos) e salvar na pasta client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. O mesmo deve ser feito com o arquivo candlepatterns.mqh. Você pode usá-los no Assistente MQL5 após reiniciar o MetaEditor.
Para criar um Expert Advisor através do Assistente MQL5:
Fig. 4. Criando Expert Advisor usando Assistente MQL5
Vamos especificar o nome do Expert Advisor:
Fig. 5. Propriedades gerais do Expert Advisor
Depois disso, precisamos selecionar os módulos de sinais de negociação a serem usados.
Fig. 6. Propriedades de sinal do Expert Advisor
No nosso caso, usamos apenas um módulo de sinais de negociação.
Adicionando o módulo de sinais de negociação "Sinais baseados no "Engolfo de Baixa/Engolfo de Alta", confirmado pelo (CCI)":
Fig. 7. Propriedades de sinal do Expert Advisor
Módulo de sinais de negociação adicionado:
Fig. 8. Propriedades de sinal do Expert Advisor
Você pode selecionar as propriedades à direita, mas vamos utilizar a opção "trailing stop não usado":
Fig. 9. Seguindo as propriedades do Expert Advisor
Em relação às propriedades de gerenciamento de dinheiro, utilisaremos a opção "Negociação com volume de negociação fixo":
Fig. 10. Propriedades de gerenciamento de dinheiro do Expert Advisor
Ao pressionar o botão "Finish", vamos obter o código gerado do Expert Advisor, localizado em Expert_ABE_BE_CCI.mq5, ele será salvo em terminal_data_folder\MQL5\Experts\.
Os parâmetros de entrada padrão do Expert Advisor que foi gerado são:
//--- Entrada para o sinal principal input int Signal_ThresholdOpen =10; // Valor limite de sinal para abrir [0...100] input int Signal_ThresholdClose =10; // Valor limite de sinal para fechar[0...100] input double Signal_PriceLevel =0.0; // Nível do preço para executar uma oferta 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)
deve ser substituído para:
//--- Entrada para o sinal principal input int Signal_ThresholdOpen =40; // Valor limite de sinal para abrir [0...100] input int Signal_ThresholdClose =20; // Valor limite de sinal para fechar [0...100] input double Signal_PriceLevel =0.0; // Nível do preço para executar uma oferta 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 abrir e fechar de posições.
No código dos métodos LongCondition() e ShortCondition() da classe de sinais de negociação colocaremos os valores fixos do limite:
- Abrir Posição: 80;
- Fechar posição: 40.
O Expert Advisor, gerado pelo Assistente MQL5, abre e fecha uma posição usando os valores dos módulos de sinais de negociação. O valor do módulo principal (como um container, que consistem em todos os módulos adicionados) também é usado, mas o seu LongCondition() e ShortCondition() métodos sempre retornam 0.
Os resultados dos valores do módulo principal também são usados nas médias dos valores. No nosso caso, temos: módulo principal + 1 módulo de sinais de negociação, por isso precisamos ter este fato em conta na fixação dos valores limite. Devido a este fato, o 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 são definidos como 0, isso significa que o fechamento das posições será realizado apenas quando as condições de fechamento forem verdadeiras.
2.4. Teste dos resultados pelo histórico
Vamos considerar o resultado do teste do Expert Advisor em dados históricos (EURUSD H1, período de teste: 2010.01.01-2011.03.16, PeriodCCI=49, MA_period=11).
Na criação de Expert Advisor usamos o volume fixo (Lote da Negociação Fixa, 0.1), o algorítimo do Trailing Stop não é usado (Trailing Stop não é usado).
Fig. 11. Resultados do Teste do Expert Advisor, baseado no Engolfo de Alta/Baixa + CCI
O melhor conjunto de parâmetros de entrada podem ser encontrados usando o Testador de Estratégias do terminal do cliente MetaTrader 5.
O código do Expert Advisor, criado pelo Assistente MQL5 está anexado em expert_abe_be_cci.mq5.
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/306
![Banda TEMA](https://c.mql5.com/i/code/indicator.png)
Um indicador semelhante as Bandas de Bollinger.
![Divergence Trader](https://c.mql5.com/i/code/expert.png)
O Expert Advisor opera baseado na divergência de duas médias móveis.
![Alerta de Análise de Regressão](https://c.mql5.com/i/code/indicator.png)
Alerta de mudança para o indicador barmenteros original que compara quatro tipos de regressão (linear, quadrática, logarítmicas e exponenciais) e escolhe a que melhor se ajusta aos dados analisados.
![AroonSignal](https://c.mql5.com/i/code/indicator.png)
Indicador de sinal baseado nos valores do indicador Aroon.