Sinais de Negociação com MACD: Como Criar um Expert Advisor no MQL5 Wizard

Mike 2011.01.14 21:55 11 0 0
Anexo

O MQL5 Wizard permite a criação automática de EAs (Robôs de Negociação) sem a necessidade de programar.

Neste post, vamos explorar os sinais de negociação baseados nas cruzamentos das linhas do indicador MACD. A estratégia que vamos abordar é chamada de "Sinais baseados no cruzamento das linhas principal e de sinal do MACD".

A linha principal do indicador MACD é calculada como a diferença entre a EMA rápida e a EMA lenta. A linha de sinal do MACD, por sua vez, é obtida suavizando a linha principal com o período definido como PeriodSignal.

Sinais de Negociação:

  • Compra: cruzamento ascendente da linha principal com a linha de sinal do MACD.
  • Venda: cruzamento descendente da linha principal com a linha de sinal do MACD.

Essa estratégia está implementada na classe CSignalMACD da Biblioteca Padrão do MQL5 (localizada em MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figura 1. Sinais de Negociação, baseados no cruzamento das linhas principal e de sinal do MACD

Figura 1. Sinais de Negociação, baseados no cruzamento das linhas principal e de sinal do MACD


Sinais de Negociação

A estratégia de negociação está implementada na classe CSignalMACD e possui alguns métodos protegidos que facilitam o acesso aos valores do indicador:

double  MainMACD(int ind)      // retorna o valor da linha principal do MACD da barra
double  SignalMACD(int ind)    // retorna o valor da linha de sinal do MACD da barra
double  StateMACD(int ind)     // retorna a diferença entre as linhas principal e de sinal do MACD
int     ExtStateMACD(int ind); // retorna o número de mudanças de sinal da diferença entre as linhas principal e de sinal

1. Abrir posição longa

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

  • ExtStateMACD(1)==1; isso significa que a linha principal cruzou a linha de sinal do MACD para cima.
//+------------------------------------------------------------------+
//| Verifica condições para abrir posição longa (compra)              |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==1);
  }


2. Fechar posição longa

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

  • ExtStateMACD(1)==1; isso significa que a linha principal cruzou a linha de sinal do MACD para baixo.
//+------------------------------------------------------------------+
//| Verifica condições para fechar posição longa                       |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. Abrir posição curta

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

//+------------------------------------------------------------------+
//| Verifica condições para abrir posição curta (venda)              |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==-1);
  }


4. Fechar posição curta

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

//+------------------------------------------------------------------+
//| Verifica condições para fechar posição curta                      |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Criando um Expert Advisor com MQL5 Wizard

Para criar um robô de negociação baseado nesta estratégia, você deve escolher as propriedades do sinal como "Sinais baseados no cruzamento das linhas principal e de sinal do MACD" na opção "Criando Expert Advisors Prontos" do MQL5 Wizard:

Figura 2. Selecione 'Sinais baseados no cruzamento das linhas principal e de sinal do MACD' no MQL5 Wizard

Figura 2. Selecione 'Sinais baseados no cruzamento das linhas principal e de sinal do MACD' no MQL5 Wizard

A próxima etapa é especificar o algoritmo de trailing stop e o sistema de gestão de dinheiro e risco necessários. O código do Expert Advisor será criado automaticamente, e você poderá compilá-lo e testá-lo no Strategy Tester do terminal cliente MetaTrader 5.


Resultados dos Testes

Vamos considerar o backtesting do Expert Advisor com dados históricos (EURUSD H1, período de teste: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

Na criação do Expert Advisor, utilizamos um volume fixo (Trading Fixed Lot, 0.1), e o algoritmo de Trailing Stop não foi utilizado (Trailing não utilizado).

Figura 3. Resultados dos Testes do Expert Advisor com sinais de negociação, baseados no cruzamento das linhas do MACD

Figura 3. Resultados dos Testes do Expert Advisor com sinais de negociação, baseados no cruzamento das linhas do MACD


Anexos: O arquivo SignalMACD.mqh com a classe CSignalMACD (incluído na Biblioteca Padrão do MQL5) está localizado na pasta MQL5\Include\Expert\Signal. O arquivo testmacd.mq5 contém o código do Expert Advisor criado com o MQL5 Wizard.

Lista
Comentário 0