Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
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 Preços com o Indicador Moving Averag - expert para MetaTrader 5

Visualizações:
3865
Avaliação:
(33)
Publicado:
2014.01.15 08:31
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 preços com o indicador Moving Average. A estratégia é chamada "Sinais baseados no cruzamento de preços com MA" (ao criar EA automaticamente no MQL5 Wizard).

Os Sinais de Negociação:

  • Comprar: cruzamento para cima do preço com Moving Average.
  • Venda: cruzamento para baixo do preço com Moving Average.
  • A verificação do aumento/diminuição da MA é usada para filtrar sinais falsos.

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

Figura 1. Sinais de Negociação Baseados no cruzamento de Preços com o Indicador Moving Average

Figura 1. Sinais de Negociação Baseados no cruzamento de Preços com o Indicador Moving Average

Sinais de Negociação

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

double  MA(int ind)          // retorna o valor da média móvel da barra
double  Open(int ind)        // retorna o valor de abertura da barra
double  Close(int ind)       // retorna o valor de fechamento da barra
double  StateMA(int ind)     // retorna positivo se a média aumenta ou negativo se diminui
double  StateOpen(int ind)   // retorna a diferença entre o preço de abertura e a média móvel 
double  StateClose(int ind)  // retorna a diferença entre o preço de fechamento e a média móvel
O preço e o valor do indicador da barra 0 (incompleta) podem mudar, por isso é necessário executar a verificação das condições comerciais usando a barra finalizada (formada) de dados.

1. Abrindo posição de compra

Condições para abrir uma posição de compra (cruzamento de preço com MA e verificação do crescimento da MA):

  • Open(1)<MA(1): preço de abertura é inferior a média móvel;
  • Close(1)>MA(1): preço de fechamento é maior do que a média móvel;
  • MA(1)>MA(2): verificar aumento da média móvel (para filtrar sinais falsos).
//+------------------------------------------------------------------+
//| Checks conditions to open long position (buy)                    |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- price has crossed upward the MA and MA increases
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

2. Fechando posição de compra

Condições para fechar uma posição de compra (cruzamento de preço com MA e verificação do decaimento da MA):

  • Open(1)>MA(1): preço de abertura é superior a média móvel;
  • Close(1)<MA(1): preço de fechamento é menor do que a média móvel;
  • MA(1)<MA(2): verificar decaimento da média móvel (para filtrar sinais falsos).
//+------------------------------------------------------------------+
//| Checks conditions to close long position                         |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- price has crossed moving average downward and moving average decreases
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


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 CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- price has crossed moving average upward and moving average decreases 
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


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 CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- price has crossed moving average upward and moving average increases
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

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 price crossover with MA" na opção "Creating Ready-Made Expert Advisors" do MQL5 Wizard:

Figura 2. Escolha "Signals based on price crossover with MA" no MQL5 Wizard

Figura 2. Escolha "Signals based on price crossover with MA" 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, MA_period=12, MA_Shift=0).

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

Cruzamento de Preços com Moving Average

Figura 3. Resultados históricos do backtesting do Expert Advisor, com base no cruzamento de preços com MA

Anexos: SignalMA.mqh com a classe CSignalMA (inclusa na Biblioteca Padrão MQL5) localizados na pasta MQL5\Include\Expert\Signal. O arquivo crossoverma.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/248

Assistente MQL5 - Sinais de negociação baseados em três Moving Averages Assistente MQL5 - Sinais de negociação baseados em três Moving Averages

Os Sinais de Negociação baseados em três Moving Averages serão utilizados aqui. O código do Expert Advisor com base nesta estratégia pode ser gerado automaticamente usando o Assistente MQL5.

DXMA DXMA

Indicador de Média Móvel melhorado com DMI.

MA2CCI MA2CCI

Expert Advisor que opera com base em duas МАs e CCI

TradeChannel TradeChannel

Expert Advisor baseado no canal de preço.