Início Negociação Sistemática Postagem

Sinais de Negociação com EMA: Como Criar seu Robô de Trading no MQL5 Wizard

Anexo
261.zip (2.85 KB, Baixar 0 vezes)

MQL5 Wizard é uma ferramenta incrível que permite criar o código de Sistemas de Trading automaticamente. Para mais detalhes, confira Criando Sistemas de Trading Prontos no MQL5 Wizard.

Neste artigo, vamos explorar uma estratégia baseada no cruzamento de duas Médias Móveis Exponenciais suavizadas (EMA rápida e EMA lenta). Essa estratégia é chamada de "Sinais baseados no cruzamento de duas EMA" quando você cria o EA automaticamente no MQL5 Wizard.

Sinais de Negociação:

  • Compra: a EMA rápida cruza para cima da EMA lenta
  • Venda: a EMA rápida cruza para baixo da EMA lenta

Essa estratégia está implementada na classe CSignalCrossEMA.

Figura 1. Sinais de negociação, baseados no cruzamento de duas médias móveis exponenciais

Figura 1. Sinais de negociação, baseados no cruzamento de duas médias móveis exponenciais


Sinais de Negociação

A estratégia de negociação está implementada na classe CSignalCrossEMA, que possui alguns métodos protegidos para simplificar o acesso aos valores dos indicadores:

double   FastEMA(int ind)      // retorna o valor da média móvel rápida da barra
double   SlowEMA(int ind)      // retorna o valor da média móvel lenta da barra
double   StateEMA(int ind)     // retorna a diferença entre as médias móveis rápida e lenta da barra


1. Abrindo posição longa

Condições para abrir uma posição longa:

  • StateEMA(1) > 0 e StateEMA(2) < 0: a EMA rápida cruzou para cima da EMA lenta na última barra completada.
//+------------------------------------------------------------------+
//| Verifica condições para abrir posição longa (compra)            |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

2. Fechando posição longa

Condições para fechar uma posição longa:

  • StateEMA(1) < 0 e StateEMA(2) > 0: a EMA rápida cruzou para baixo da EMA lenta na última barra completada.
//+------------------------------------------------------------------+
//| Verifica condições para fechar posição longa                       |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }


3. Abrindo posição curta

As condições para abrir uma posição curta são as mesmas que as condições de fechamento da posição longa.

//+------------------------------------------------------------------+
//| Verifica condições para abrir posição curta (venda)            |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   return(true);
  }

4. Fechando posição curta

As condições para fechar uma posição curta são as mesmas que as condições de abertura da posição longa.

//+------------------------------------------------------------------+
//| Verifica condições para fechar posição curta                      |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

Criando um Robô de Trading usando MQL5 Wizard

Para criar um robô de trading baseado na estratégia, você precisa escolher as propriedades do sinal como "Sinais baseados no cruzamento de duas EMA" na opção "Criando Sistemas de Trading Prontos" do MQL5 Wizard:

Figura 2. Escolha 'sinais, baseados no cruzamento de duas ema' no mql5 wizard

Figura 2. Escolha "Sinais, baseados no cruzamento de duas EMA" no MQL5 Wizard

Em seguida, você deve especificar o algoritmo de trailing stop e o sistema de gestão de dinheiro e risco necessários. O código do Robô de Trading será criado automaticamente, podendo ser compilado e testado no Teste de Estratégia do terminal MetaTrader 5.

Além disso, as classes da biblioteca padrão contêm os Sinais baseados no cruzamento de duas MA, implementados na classe CSignalCrossMA. A ideia de trading é similar, mas oferece muitas funcionalidades adicionais (especificar tipos, deslocamentos e métodos de média, além do uso de níveis de Take Profit e Stop Loss).

Figura 3. 'sinais, baseados no cruzamento de duas ma' no mql5 wizard

Figura 3. "Sinais, baseados no cruzamento de duas MA" no MQL5 Wizard


Resultados dos Testes

Vamos considerar os testes retrospectivos do Robô de Trading com dados históricos (EURUSD H1, período de teste: 01.01.2010 - 05.01.2011, FastPeriod=12, SlowPeriod=24).

Na criação do Robô de Trading, utilizamos um volume fixo (Trading com Lote Fixo, 0.1), e o algoritmo Trailing Stop não foi utilizado (Trailing não utilizado).

Figura 4. Resultados do backtest histórico do Robô de Trading, baseado no cruzamento de duas EMA

Figura 4. Resultados do backtest histórico do Robô de Trading, baseado no cruzamento de duas EMA


Anexos: O arquivo SignalCrossEMA.mqh com a classe CSignalCrossEMA deve ser colocado na pasta terminal_data_folder\MQL5\Include\Expert\Signal.

O arquivo crossover_2ema.mq5 contém o código do Robô de Trading, criado usando o MQL5 Wizard.

Publicações relacionadas

Comentário (0)