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 de Duas Exponentially Smoothed Moving Averages - expert para MetaTrader 5

Visualizações:
3288
Avaliação:
(32)
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 MQL5 Wizard permite criar o código de Expert Advisors automaticamente. Veja Criando Expert Advisors em MQL5 Wizard prontos para uso para mais detalhes.

Aqui vamos considerar uma estratégia baseada no cruzamento de duas exponentially smoothed Moving Averages (fast EMA e slow EMA). A estratégia é chamada "Sinais baseados no cruzamento de duas EMAs" (ao criar EA automaticamente no MQL5 Wizard).

Os Sinais de Negociação:

  • Compra: Fast EMA cruza por cima slow EMA
  • Venda: Fast EMA cruza por baixo slow EMA

A estratégia será implementada na classe CSignalCrossEMA.

Figura 1. Sinais de Negociação Baseados no cruzamento de Duas Exponentially Smoothed Moving Averages

Figura 1. Sinais de Negociação Baseados no cruzamento de Duas Exponentially Smoothed Moving Averages


Sinais de Negociação

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

double   FastEMA(int ind)      // retorna o valor da fast MA da barra
double   SlowEMA(int ind)      // retorna o valor da slow MA da barra<
double   StateEMA(int ind)     // retorna o valor da diferença entre a fast MA e a slow MA da barra


1. Abrindo posição de compra

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

  • StateEMA(1)>0 и StateEMA(2)<0: a Fast EMA cruza por cima a slow EMA na última barra completa.
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
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 de compra

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

  • StateEMA(1)<0 и StateEMA(2)>0: a Fast EMA cruza por baixo a slow EMA na última barra completa.
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }


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 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 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 CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

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 two EMA" na opção "Creating Ready-Made Expert Advisors" do MQL5 Wizard:

Figura 2. Escolha "Signals, based on crossover of two EMA" no MQL5 Wizard

Figura 2. Escolha "Signals, based on crossover of two EMA" 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.

Além disso, as classes da biblioteca padrão contém o "Signals based on crossover of two MA", implementado na classe CSignalCrossMA. A idéia de negociação é semelhante, mas oferece muito mais recursos (especificar tipos, shifts e métodos de média e níveis de Take Profit e Stop Loss).

Figura 3. "Signals, based on crossover of two MA" no MQL5 Wizard

Figura 3. "Signals, based on crossover of two MA" no MQL5 Wizard


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,   FastPeriod=12, SlowPeriod=24).

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 4. Resultados históricos do backtesting do Expert Advisor, com base no cruzamento de duas EMAs

Figura 4. Resultados históricos do backtesting do Expert Advisor, com base no cruzamento de duas EMAs


Anexos: SignalCrossEMA.mqh com a classe CSignalCrossEMA localizados na pasta terminal_data_folder\MQL5\Include\Expert\Signal.

O arquivo crossover_2ema.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/261

SpearmanStack_X20 (Indicador SpearmanRankCorrelation) SpearmanStack_X20 (Indicador SpearmanRankCorrelation)

20 linhas do indicador Ranking de Correlação de Spearman em uma janela do gráfico

GMMA_Long_Gistogram GMMA_Long_Gistogram

Indicador GMMA Long convertido em um histograma para uma melhor visualização.

ColorXATR ColorXATR

ATR suavizado que usa diferentes cores para mostrar se a tendência está se fortalecendo ou enfraquecendo.

IncGUI_BitPic IncGUI_BitPic

Controle gráfico para desenho de pixels.