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 da linha Principal e das linhas de Sinais do indicador MACD - expert para MetaTrader 5

Visualizações:
4486
Avaliação:
(34)
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

MQL5 Wizard proporciona a criação automática de Expert Advisors (veja MQL5 Wizard: Criando Expert Advisors sem programação).

Vamos considerar aqui os sinais de negociação com base no cruzamento das linhas do indicador MACD. A estratégia é chamada "Signals based on crossover of main and signal MACD lines" (ao criar EA automaticamente no MQL5 Wizard).

A linha principal do indicador MACD é calculada como a diferença de fast EMA e slow EMA. A linha de sinal do MACD é calculada como a linha principal, suavizada com o período PeriodSignal.

Os Sinais de Negociação:

  • Compra: cruzamento por cima das linhas principal e de sinal do indicador MACD.
  • Venda: cruzamento por baixo das linhas principal e de sinal do indicador MACD.

A estratégia será implementada na classe CSignalMACD das classes de Estratégia de Negociação da Biblioteca Padrão MQL5 (localizada em MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figura 1. Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD

Figura 1. Sinais de Negociação Baseados no cruzamento da linha Principal e das linhas de Sinais do indicador MACD


Sinais de Negociação

A estratégia de negociação será implementada na classe CSignalMACD, na qual possui alguns métodos protegidos para simplificar o acesso em indicadores:

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 a linha principal e a de sinal do MACD
int     ExtStateMACD(int ind); // retorna o número de mudanças de sinal, da diferença das linhas principal e de sinal 


1. Abrindo posição de compra

Condições para abrir uma posição de compra:

  • ExtStateMACD(1)==1; isso significa que a linha principal cruzou por cima a linha de sinal MACD
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
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. Fechando posição de compra

Condições para fechar uma posição de compra:

  • ExtStateMACD(1)==1; isso significa que a linha principal cruzou por baixo a linha de sinal MACD line
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. Abrindo posição de venda

As condições para abrir uma posição de venda são as mesmas condições para fechar uma posição de compra.

//+------------------------------------------------------------------+
//| Checks conditions to open short position (sell)                  |
//+------------------------------------------------------------------+
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. Fechando posição de venda

As condições para fechar uma posição de venda são as mesmas condições para abrir uma posição de compra.

//+------------------------------------------------------------------+
//| Checks conditions to close short position                        |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Criando um Expert Advisor usando o MQL5 Wizard

Para criar um robô de negociação com base na estratégia que você quer, você precisa escolher as propriedades dos sinais como "Signals based on crossover of main and signal MACD lines" na opção "Creating Ready-Made Expert Advisors" do MQL5 Wizard:

Figura 2. Selecione "Signals based on crossover of main and signal MACD lines" no MQL5 Wizard

Figura 2. Selecione "Signals based on crossover of main and signal MACD lines" no MQL5 Wizard

O próximo passo você precisa especificar o algorítimo trailing stop e o sistema de gestão de dinheiro e riscos. O código do Expert Advisor será criado automaticamente. Você pode compilar e testar no Strategy Tester do terminal cliente MetaTrader 5.


Testando os Resultados

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

Na criação do Expert Advisor usamos um volume fixo(Negociação Fixa do Lote, 0.1), algorítimo Trailing Stop não utilizado (Trailing não utilizado).

Figura 3. Resultados do backtesting do Expert Advisor, com base no cruzamento das linhas do indicador MACD

Figura 3. Resultados do backtesting do Expert Advisor, com base no cruzamento das linhas do indicador MACD


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

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

Assistente MQL5 - Sinais de Negociação Baseados no Cruzamento das Linhas do Indicador Jacaré (Alligator) Assistente MQL5 - Sinais de Negociação Baseados no Cruzamento das Linhas do Indicador Jacaré (Alligator)

Os Sinais de Negociação são considerados com base no cruzamento das linhas do indicador técnico Jacaré (Alligator), classe CSignalAlligator da Biblioteca Padrão MQL5. O código do Expert Advisor baseado nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.

ZigZag Profissional ZigZag Profissional

Versão melhorada do indicador ZigZag.

SinTick SinTick

O seno e o indicador tick.

GetExtremums GetExtremums

Função que identifica os extremos ao longo de um determinado período da história.