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 Baseados no Cruzamento das Linhas do Indicador Jacaré (Alligator) - expert para MetaTrader 5

Visualizações:
2609
Avaliação:
(33)
Publicado:
2014.01.15 08:29
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 oferece a criação automática de Expert Advisors (veja Assistente MQL5: Criando Expert Advisors sem Programar).

Vamos considerar os sinais de negociação baseados no indicador técnico Alligator, apresentado por B.Williams em "Negociando o Caos". A estratégia é chamada de "Sinais baseados no Alligator" (criando EA automaticamente através do Assistente MQL5).

O sistema é baseado em três médias móveis (lábios, dentes e linhas da mandíbula) e osciladores, calculados usando a diferença entre eles. Os sinais de negociação são gerados após o cruzamento das linhas do Alligator, dependendo da tendência e determinada no final dessas linhas. A tendência ascendente acontece quando a linha dos Lábios (com período mínimo) é a mais alta, seguida da linha dos Dentes, e por fim, a menor é a linha da Mandíbula. Semelhantemente e em direção oposta é o caso da tendência de baixa.

Os sinais de negociação:

  • Abrir posição de compra: cruzamento das linhas do Alligator e aumento da distância entre elas, no caso da tendência de alta;
  • Fechar posição de compra: cruzamento para baixo da linha dos lábios com a linha da mandíbula;
  • Abrir posição de venda: cruzamento das linhas de Alligator e aumento da distância entre eles, no caso de a tendência de baixa;
  • Fechar posição de venda: cruzamento para cima da linha dos lábios com a linha da mandíbula;

Esta estratégia é implementada na classe CSignalAlligator.

Figura 1. Sinais de negociação com base no indicador técnico Alligator

Figura 1. Sinais de negociação com base no indicador técnico Alligator


Sinais de Negociação

A estratégia de negociação é implementado no CSignalAlligator, tem alguns métodos protegidos para simplificar o acesso aos valores dos indicadores:

double   Jaw(int ind)              // retorna o valor da linha da Mandíbula da barra
double   Teeth(int ind)            // retorna o valor da linha dos Dentes da barra
double   Lips(int ind)             // retorna o valor da linha dos lábios da barra
double   LipsTeethDiff(int ind)    // retorna a diferença entre os Lábios e as linha dos Dentes
double   TeethJawDiff(int ind)     // retorna a diferença entre os Dentes e as linha da Mandíbula
double   LipsJawDiff(int ind)      // retorna a diferença entre os Lábios e as linha de Mandíbula
bool     CheckCross();            // usado para verificar o cruzamento das linhas do Alligator


1. Abrir posição comprada

A verificação das condições de negociação tem algumas características, causadas pelo deslocamento das linhas dos Lábios, Dentes e Mandíbula.

Condições para abertura da posição comprada:

  • O CheckCross é usado para determinar o cruzamento e aumento da diferença entre as linhas;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) e LipsTeethDiff(-1)>=LipsTeethDiff(0); verifica se há aumento da diferença entre as linhas dos Lábios e dos Dentes;
  • LipsTeethDiff(0)>=0.0;  a linha dos Lábios é maior do que a linha dos Dentes;
  • TeethJawDiff(-2) >=TeethJawDiff(-1)  and TeethJawDiff(-1) >=TeethJawDiff(0) ; verifica se há aumento da diferença entre as linhas dos Dentes e da mandíbula;
  • TeethJawDiff(0) >=0.0; a linha dos Dentes é maior do que a linha da Mandíbula.
//+------------------------------------------------------------------+
//| verificar as condições para abertura da posição comprada         |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. Fechar posição comprada

Condições para fechar posição comprada (note a mudança das linhas):

  • LipsTeethDiff(-1)<0; a linha dos lábios barra seguinte (por causa do deslocamento) é menor do que a linha dos Dentes;
  • LipsTeethDiff(0)>=0; a linha dos Lábios da barra atual é maior/igual a linha dos Dentes;
  • LipsTeethDiff(1)>0; a linha dos lábios da barra anterior(concluída) é maior do que a linha dos Dentes.
//+------------------------------------------------------------------+
//| Verifica as condições para fechar posição comprada               |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. Abertura da posição vendida

Condições para abertura da posição vendida:

  • O CheckCross é usado para determinar o cruzamento e aumento da diferença entre as linhas;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) и LipsTeethDiff(-1)<=LipsTeethDiff(0); verifica se há aumento da diferença entre as linhas dos Lábios e dos Dentes;
  • LipsTeethDiff(0)<=0.0; a linha dos Lábios da barra atual é menor do que a linha Dentes;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) и TeethJawDiff(-1)<=TeethJawDiff(0); verifica se há aumento da diferença entre as linhas dos Dentes e da Mandíbula;
  • TeethJawDiff(0) <=0.0; a linha dos Dentes da barra atual é inferior a linha da Mandíbula;
//+------------------------------------------------------------------+
//| verifica as condições para abertura da posição vendida (sell)    |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. Fechar posição vendida

Condições para fechar posição vendida:

  • LipsTeethDiff(-1)>0; a linha dos Lábios da barra seguinte (por causa da deslocamento) é maior do que a linha dos Dentes;
  • LipsTeethDiff(0)<=0; a linha dos Lábios da barra atual é menor/igual do que a linha dos Dentes;
  • LipsTeethDiff(1)<0; a linha dos Lábios da barra anterior (concluída) é menor do que a linha dos Dentes.
//+------------------------------------------------------------------+
//| Verifica as condições para fechar posição vendida                |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

Criando Expert Advisor usando Assistente MQL5

Para criar um robô de negociação com base nesta estratégia, você precisa escolher as propriedades de sinais como "Sinais baseados no Alligator" na opção "Criando Expert Advisors Úteis" do Assistente MQL5:

Figura 2. Selecione "Sinais baseados no Alligator" no Assistente MQL5

Figura 2. Selecione "Sinais baseados no Alligator" no Assistente MQL5

O próximo passo é especificar o algorítimo do trailing stop e o sistema de gerenciamento de risco do dinheiro. O código de Expert Advisor será criado automaticamente, você pode compilá-lo e testá-lo no Testador de Estratégias do terminal do cliente MetaTrader 5.


Resultados dos testes

Vamos considerar os resultados anteriores do Expert Advisor em dados históricos (EURUSD H1, período de testes: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

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).

Figura 3. Resultados do Teste do Expert Advisor com sinais de negociação baseado no indicador Alligator

Figura 3. Resultados do Teste do Expert Advisor com sinais de negociação baseado no indicador Alligator


O lucro pode ser aumentado se você souber filtrar seus negócios e ter em conta as características do mercado, dependendo do tempo. A classe CSignalITF permitir que você adicione o filtro de tempo intraday. Os melhores momentos podem ser encontrados usando o Testador de Estratégias do terminal do cliente MetaTrader 5. Veja o exemplo no Assistente MQL5 - Sinais de Negociação Baseados no Cruzamento de Duas EMA com filtro de tempo intraday.


Anexos: O SignalAlligator.mqh com a classe CSignalAlligator fica localizado na pasta terminal_data_folder\MQL5\Include\Expert\Signal.

O expert_alligator.mq5 contém o código do Expert Advisor criado com o Assistente MQL5.


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

ZigZag Profissional ZigZag Profissional

Versão melhorada do indicador ZigZag.

sChartsSynchroScroll_v2 sChartsSynchroScroll_v2

Nova versão do sript sChartsSynchroScroll.

Assistente MQL5 - Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD Assistente MQL5 - Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD

Os Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD (CSignalMACD da Biblioteca Padrão MQL5) serão utilizados aqui. O código do Expert Advisor com base nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.

SinTick SinTick

O seno e o indicador tick.