Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

Assistente MQL5 - Sinais de Negociação Baseado na Cobertura de Nuvem Negra/Linha Perfurante + Estocástico - expert para MetaTrader 5

Visualizações:
3131
Avaliação:
(30)
Publicado:
2014.01.15 08:24
Atualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\MySignals\
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 ideias 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 em geral é a seguinte: a classe dos sinais de negociação deriva de CExpertSignal, no próximo passo, é 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 no padrão candle de reversão "Cobertura de Nuvem Negra/Linha Perfurante", confirmado pelo indicador Estocástico. 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ão candle de reversão "Cobertura de Nuvem Negra" e "Linha Perfurante"

1.1.Cobertura de Nuvem Negra

É uma candle de reversão de baixa que ocorre no final de uma tendência de alta. Um longo candle branco é formado no primeiro dia e uma lacuna (gap) para cima é criada no segundo dia. Observe a imagem abaixo e veja que o preço de abertura do segundo dia está acima do preço alto da sombra do longo candle branco fechado no primeiro dia, esta é a lacuna formada, conhecida também como gap. No entanto, o segundo dia fecha abaixo do ponto médio do primeiro dia.

Fig. 1. Padrão candle "Cobertura de Nuvem Negra" (Dark Cloud Cover)

Fig. 1. Padrão candle "Cobertura de Nuvem Negra" (Dark Cloud Cover)

O reconhecimento do padrão "Cobertura de Nuvem Negra" é implementado no método CheckPatternDarkCloudCover() da classe CCandlePattern:

//+-------------------------------------------------------------------+
//| Verificando a formação do padrão candle "Cobertura de Nuvem Negra"|
//+-------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Cobertura de Nuvem Negra 
   if((Close(2)-Open(2)>AvgBody(1))  && // (longo candle branco)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (fechamento dentro do corpo anterior)
      (MidOpenClose(2)>CloseAvg(1))  && // (tendência de alta)
      (Open(1)>High(2)))                // (abrir em nova alta)
      return(true);
//---
   return(false);
  }

O método CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) da classe CCandlePattern é usado para verificar o padrão candle "Cobertura de Nuvem Negra".


1.2. Linha Perfurante

Uma lacuna (gap) para baixo no segundo dia perpetua a tendência de baixa. Observe na imagem abaixo a lacuna formada quando o preço de abertura do segundo dia está abaixo do menor preço da sombra do candle negro fechado no dia anterior. No entanto, fechamento do candle segundo dia está acima do ponto médio do corpo do primeiro dia. Isto sugere para os ursos (vendedores) que um fundo pode estar se formando. Esta ação do preço não é tão perceptível usando gráficos de barras, temos um visualização melhor com gráficos de candles (velas). Quanto maior a penetração do fechamento no segundo dia sobre o corpo do primeiro dia, maior é a probabilidade da reversão do sinal ser bem sucedida.

Figura 2. Padrão Candle "Linha Perfurante" (Piercing Line)

Figure 2. "Padrão Candle" "Linha Perfurante"

O reconhecimento do padrão "Linha Perfurante" é implementado no método CheckPatternPiercingLine() da classe CCandlePattern:

//+------------------------------------------------------------------+
//| Verificando a formação do padrão candle "Linha Perfurante"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Linha Perfurante
   if((Close(1)-Open(1)>AvgBody(1)) && // (longo candle branco)
      (Open(2)-Close(2)>AvgBody(1)) && // (longo candle negro)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (fechamento dentro do corpo anterior) 
      (MidOpenClose(2)<CloseAvg(2)) && // (tendência de baixa)
      (Open(1)<Low(2)))                // (abrir menor do que o Preço Baixo anterior) 
      return(true);
//---
   return(false);
  }

O método CheckCandlestickPattern (CANDLE_PATTERN_PIERCING_LINE)da classe CCandlePattern é usado para verificar o padrão candle "Linha Perfurante".


2. Sinais de negócios confirmados pelo indicador Estocástico

Os sinais de negociação para abrir posição vendida ou comprada devem ser confirmados pelo oscilador Estocástico . A linha do sinal %D deve ser maior/menor correspondendo aos níveis críticos (30 ou 70).

O fechamento de uma posição aberta depende dos valores do indicador %D. Pode ser feito em dois casos:

  1. se a linha %D atingiu o nível crítico oposto (80 para a posição comprada e 20 para posição vendida)
  2. se o sinal inverso não é confirmado (quando a linha %D atinge os seguintes níveis: 20 para a posição comprada e 80 para a posição vendida)

Figura 3. Padrão "Cobertura de Nuvem Negra", confirmado pelo indicador Estocástico

Figura 3. Padrão "Cobertura de Nuvem Negra", confirmado pelo indicador Estocástico


2.1. Abrir posição comprada/Fechar posição vendida

  1. A formação do padrão "Linha Perfurante" deve ser confirmado pelo indicador Estocástico: StochSignal(1)<30 (o valor da linha de sinal do indicador Estocástico da última barra completa deve ser menor do que 30).

  2. A posição vendida deve ser fechada se a linha de sinal do indicador Estocástico cruzou para cima os níveis 20 ou 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 CDC_PL_Stoch::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çao comprada
//--- formação do padrão Linha Perfurante e linha de sinal<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (StochSignal(1)<30))
     result=80;
//--- verificando as condições para fechar com posição vendida
//--- cruzamento da linha de sinal nos níveis sobrecomprados/sobrevendidos (descendente 20, ascendente 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- resultado de retorno
   return(result);
  }

2.2. Abrir posição vendida/ Fechar posição comprada

  1. A formação do padrão "Cobertura de Nuvem Negra" deve ser confirmada pelo indicador Estocástico: StochSignal(1)>70 (o valor da linha do sinal do indicador Estocástico da última barra completa deve ser maior do que 70).

  2. A posição de compra deve ser fechada se a linha de sinal do indicador Estocástico cruza para baixo dos níveis 80 ou 20 .

//+------------------------------------------------------------------+
//| 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çao comprada, resultado=40)      |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::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 posiçao vendida
//--- formação do padrão Cobertura de Nuvem Negra e linha do sinal>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))
     result=80;
//--- verifica as condições para fechamento na posiçao comprada
//--- cruzamento da linha de sinal nos níveis sobrecomprados/sobrevendidos (descendente 80, ascendente 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- resultado de retorno
   return(result);
  }


2.3. Criando Expert Advisor usando Assistente MQL5

A classe CDC_PL_Stoch class não está incluída nas classes da Biblioteca Padrão, para usá-la é necessário fazer o download do arquivo adc_pl_stoch.mqh (ver 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

Fig. 4. Criando Expert Advisor usando Assistente MQL5

Vamos especificar o nome do Expert Advisor:

Fig. 5. Propriedades gerais 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

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 "Sinais de Negociação Baseado na Cobertura de Nuvem Negra/Linha Perfurante confirmado pelo Estocástico":

Fig. 7. Propriedades de sinal do Expert Advisor

Fig. 7. Propriedades de sinal do Expert Advisor

Módulo de sinais de negociação adicionado:

Fig. 8. Propriedades de sinal do Expert Advisor

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

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

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_ADC_PL_Stoch.mq5, ele será salvo no 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 testes: 2010.01.01-2011.02.02, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27).

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 na "Cobertura de Nuvem Negra/Linha Perfurante + Estocástico"

Fig. 11. Resultados do Teste do Expert Advisor, baseado na "Cobertura de Nuvem Negra/Linha Perfurante + Estocástico"


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_adc_pl_stoch.mq5.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/297

Exp_3rdGenerationXMA Exp_3rdGenerationXMA

O Expert Advisor Exp_3rdGenerationXMA foi elaborado a partir das variações produzidas na direção da média móvel 3rdGenXMA (XMA 3ª geração).

CCI T3 Tick CCI T3 Tick

O indicador CCI suavizado usando o algoritmo de Tillson.

up3x1_Krohabor_D up3x1_Krohabor_D

Expert Advisor baseado em três médias móveis que utiliza Stop Loss ou Take Profit para o fechamento de posições. Ele Estabelece uma entrada a partir da tendência.

ChartNavigate Demo ChartNavigate Demo

Script simples com demonstração de utilização da função ChartNavigate().