Como desenvolver um sistema de negociação baseado no indicador Momentum

Mohamed Abdelmaaboud | 6 junho, 2022

Introdução

No meu artigo anterior, eu mencionei a importância de identificar a tendência que é a direção dos preços. É importante, pois de acordo com essa direção ou tendência, nós podemos tomar uma decisão adequada. Assim, nós podemos dizer que a identificação da direção do mercado nos ajudará a aprimorar nossas decisões e resultados de negociação. É por isso que é tão importante identificar e analisar a tendência. 

Outro fator que também pode potencializar as nossas decisões é a capacidade de determinar se essa tendência definida é forte ou fraca ou, em outras palavras, se essa tendência atual continuará ou não. Existem muitas ferramentas diferentes que podem fazer isso. Neste artigo, nós vamos nos concentrar no Momentum, que é uma das ferramentas mais importantes que podem nos ajudar a entender mais sobre a tendência, pois, como veremos com mais detalhes neste artigo, o Momentum mede a velocidade dos preços ou a sua tendência.

Neste artigo, nós identificaremos em profundidade o momentum e como usá-lo a nosso favor e projetaremos um sistema de negociação simples em MQL5 para se beneficiar da magia da programação que pode nos ajudar a negociar de maneira suave, fácil e eficaz. Nós vamos discutir os seguintes tópicos neste artigo:

Nós descobriremos mais sobre o indicador Momentum em nosso primeiro tópico "Definição de Momentum" — nós veremos o que é o indicador de momentum e como ele é calculado. Em seguida, nós aprenderemos uma estratégia simples que pode melhorar nossa compreensão do indicador Momentum e de como ele pode ser útil para nós. Em seguida, nós projetaremos um esquema de sistema de negociação para a mencionada estratégia de negociação Momentum para nos ajudar a codificá-la em MQL5. Em seguida, nós aprenderemos como codificá-la e executá-la para obter os sinais dessa estratégia. 

Nós usaremos neste artigo a MetaTrader 5 para executar os nossos programas de sistema de negociação e nós escreveremos os códigos usando o Editor de linguagem MetaQuotes, que está embutido na MetaTrader 5. Você pode baixar a MetaTrader 5 no seguinte link:https://www.metatrader5.com/pt/download

Você verá a seguinte janela após baixar, instalar e abrir a MetaTrader 5:

Plataforma MT5

Agora abra o Editor de linguagem MetaQuotes para escrever os códigos. Isso pode ser feito de diferentes maneiras:

A maneira mais fácil é abrir a MetaTrader 5 e pressionar o botão F4 do seu teclado e então o Editor de linguagem MetaQuotes será aberto.

A segunda maneira de abrir o Editor de Linguagem MetaQuotes é usar o menu Ferramentas:

Abrindo o Metaeditor 1

A terceira maneira de fazer isso é clicar no botão IDE na MetaTrader 5:

Abrindo o MetaEditor 2

A seguinte janela será aberta:

Janela do MetaEditor

Se você quiser saber mais sobre isso, você pode ler meus artigos anteriores: Como e por que desenvolver seu sistema de negociação algorítmica

Eu também recomendo tentar aplicar o que você lê e aprende, pois isso aprofundará a sua compreensão e fornecerá mais "insights" e novas ideias sobre os tópicos relacionados ou não relacionados. O objetivo principal deste artigo é compartilhar o que eu aprendi sobre como essa ótima ferramenta MQL5 pode nos ajudar na negociação.

Observe que você deve testar tudo o que aprender antes de usá-lo, pois pode ser adequado para mim, mas pode não ser adequado para você de acordo com seu estilo de negociação. Portanto, é muito importante usar uma conta demo para testar tudo o que você pode aprender para examinar se ela será útil para você ou não. 

Ressalva: Todo o conteúdo deste artigo é feito apenas para fins educacionais, somente. Portanto, você será responsável por qualquer ação que tomar com base no conteúdo deste artigo, pois o conteúdo deste artigo não garante nenhum tipo de resultado.

Agora, vamos começar a aprender este tópico para construir um novo bloco em nosso conhecimento e aprimoramento.


Definição de Momentum

Nesta parte, aprenderemos o que é Momentum, o que ele significa, como ele pode ser útil para as nossas negociações, o que é o indicador Momentum e como nós podemos calculá-lo. Isso também deve nos ajudar a entender como isso pode ser útil e como nós podemos usá-lo, pois quando nós entendemos o núcleo da coisa, nós podemos lidar com isso de maneira eficaz.

O conceito de Momentum é sobre medir a velocidade de algo. Aqui ele mede a velocidade de mudança dos preços. Assim, ele comparará o preço atual com um valor anterior para medir a velocidade da mudança entre esses dois valores. E é isso que o indicador Momentum faz — ele mede a velocidade de mudança dos preços ou a aceleração da tendência.

Nós Já sabemos que é muito importante determinar primeiro o tipo de tendência ou a direção do mercado, pois nós tomaremos nossas decisões de acordo com isso. Então, nós precisamos determinar a tendência: se é uma tendência de alta, tendência de baixa ou lateral.

Para mais informações, consulte meu o artigo anterior Como desenvolver um sistema de negociação baseado no indicador RSI 

O conceito Momentum é muito importante, pois é outra dimensão que mostra a força do movimento da tendência. Portanto, agora nós não vamos apenas analisar ou determinar a direção da tendência, mas nós mediremos também a força dessa tendência analisando o Momentum.

O indicador Momentum é um indicador principal, pois ele pode liderar os preços ou, em outras palavras, ele muda antes que a mudança apareça nos preços.

De acordo com seu cálculo, ele é um oscilador sem vínculo, que é considerado uma de suas desvantagens. Outra desvantagem é que, de acordo com seu cálculo, o indicador Momentum perde dados entre os dias que o calcularão.

Existem duas maneiras diferentes de calcular o Momentum:

Essas duas maneiras usarão o preço atual e o preço anterior com base no seu período preferido e o padrão é 14. Então, vamos ver as fórmulas usadas nos dois tipos de cálculo, com alguns exemplos.

Seu cálculo é muito simples — ele encontra a diferença entre os preços de fechamento do período atual em comparação com um período anterior.

Momentum = Preço de Fechamento Atual - Preço de Fechamento de (n)

n = 14, que é o período, e este é o padrão

Após calcular o indicador Momentum, o cálculo resultará numa linha que oscila acima e abaixo de zero.

Vejamos o exemplo de cálculo do indicador. Suponha que nós temos os seguintes dados:

Dia Preço de fechamento
1
10
2 12
3 15
4 17
5 19
6 20
7 18
8 16
9 20
10 22
11 24
12 20
13 18
14 17
15 15

Agora, se nós quisermos calcular o Momentum no 15º dia, será o seguinte:

Momentum = Preço de Fechamento Atual - Preço de Fechamento de (n)

n = 14 que é o dia 1

Momentum = 15 - 10 = 5

Em seguida, nós plotamos a diferença acima de zero e próximo a 5, pois o indicador Momentum está oscilando acima e abaixo de zero. A partir desse cálculo, nós podemos ver as desvantagens, como mencionamos anteriormente: há dados ausentes entre os dados calculados, pois subtraímos 14 períodos do atual. Outra desvantagem é que o indicador não é vinculado, ou seja, não tem limite para subir ou descer. 

A outra maneira de calcular o indicador Momentum é usando a razão. Este é o cálculo usado na MetaTrader 5. Ele consiste nas seguintes etapas:

Momentum = (Preço de Fechamento Atual / Preço de Fechamento de (n))*100

n = 14 que é o dia 1

Aplicando este cálculo ao exemplo anterior, nós obtemos o Momentum da seguinte forma:

Momentum = (15 / 10)*100 = 150

Então, o valor será plotado acima de 100 e próximo a 150 como aqui, o indicador Momentum oscilará acima e abaixo de 100. Neste artigo, nós usaremos essa forma de cálculo e a estratégia será aplicada a ela.

O indicador já está embutido na MetaTrader 5, então nós só precisamos escolhê-lo e ele será inserido no gráfico sem necessidade de cálculo manualmente.

A partir da MetaTrader 5, clique no menu "Inserir", depois escolha "Indicadores", depois "Osciladores", e então "Momentum", como é exibido na imagem a seguir:

Inserção do Momentum

Após escolher o Momentum, aparece a seguinte imagem para os parâmetros do indicador Momentum:

Parâmetros do Momentum

A janela anterior inclui os parâmetros do indicador Momentum e aqui você pode definir o que achar que será adequado para a sua negociação de acordo com seu estilo de negociação ou seu plano de negociação, pois ele pode ser diferente de trader para trader de acordo com as suas preferências e você descobrirá que os parâmetros são os mesmos da seguinte forma:

  1. Para escolher o período para comparar com o preço atual, aqui o padrão é 14.
  2. Para escolher o tipo de preço que você deseja usar no cálculo do Momentum (Fechamento, Abertura, Máxima, Mínima, etc.).
  3. Para escolher o seu estilo preferido, você deseja que o indicador apareça com cor, tipo de linha e espessura de linha.

Após escolher os parâmetros adequados e pressionar ok, o indicador aparece da mesma forma como na imagem a seguir:

Momentum no gráfico


Estratégia do Momentum

Nesta parte, nós aprenderemos uma estratégia simples usando o indicador Momentum. Existem muitas estratégias e maneiras úteis de usar o Momentum, mas por uma questão de educação nós vamos trabalhar com uma estratégia simples, pois nosso objetivo é aprender a usá-lo e abrir a porta para novas ideias que podem surgir após o aprendizado do núcleo do tema. O objetivo final é aprender a projetar essas ideias como sistemas de negociação usando a MQL5.

Nossa estratégia buscará um cruzamento entre a linha Momentum e o nível 100. Quando a linha Momentum romper para cima o nível 100, ela será um sinal de compra. Quando a linha Momentum romper para baixo o nível 100, será um sinal de venda.

Este sinal será gerado com base na direção da tendência, o que criará uma filtragem para o sinal gerado. O indicador Momentum fornece sinais iniciais e violindas, que podem ser usados para filtrar os sinais gerados.

Então, ele será o mesmo que abaixo:

Durante a tendência de alta:

A figura a seguir mostra um exemplo de sinal gerado durante a tendência de alta pelo cruzamento do Momentum:

Estratégia de tendência de alta

Durante a tendência de baixa:

A imagem a seguir representa um exemplo do sinal que pode ser gerado durante a tendência de baixa quando o indicador Momentum cruzar o nível de 100:

Estratégia de tendência de baixa

Esquema do sistema de negociação do Momentum

Nesta parte, eu apresentarei um esquema para projetar estratégias com o Momentum como um sistema de negociação. Portanto, esta etapa trata do planejamento da codificação futura, visando receber um programa que possa ser executado pelo computador.

Esquema de tendência de alta do Momentum

Esquema de tendência de baixa do Momentum

Usando os esquemas acima, nós programaremos suas estratégias usando a MQL5 para obter um programa que dará sinais automaticamente para que nós não precisemos verificar os sinais de Momentum manualmente. É isso que nós vamos implementar na próxima parte do artigo.


Sistema de negociação do Momentum

Primeiro, para uma compreensão mais profunda de como o indicador Momentum pode ser codificado, nós aprenderemos como desenvolver um sistema Momentum simples que gerará um comentário no gráfico com o valor do Momentum. Isso é implementado no código a seguir:

//+------------------------------------------------------------------+
//|                                       Simple Momentum System.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM VALUE IS: ",MomentumValue);
   
  }
//+------------------------------------------------------------------+

Após escrever este programa, nós precisamos executá-lo na plataforma de negociação MetaTrader 5. Para fazer isso, vá para a plataforma de negociação MetaTrader 5 e, em seguida, no Navigator, escolha o arquivo desejado. A janela do Navegador geralmente está aberta na plataforma. Se não estiver, vá para o menu Exibir e selecione Navegador ou pressione Ctrl + N enquanto a MetaTrader 5 estiver aberta.

A imagem a seguir mostra como encontrar seu arquivo no Navegador:

Indicador Momentum no navegador

Em seguida, abra este arquivo clicando duas vezes ou arraste e solte-o no gráfico. Após isso, a seguinte janela do programa será aberta:

Janela simples do Momentum

Habilite a opção "Negociação Automatizada" e pressione Ok. O programa será anexado ao gráfico e os comentários correspondentes aparecerão no gráfico. Abaixo está um exemplo de um programa em execução:

Momentum simples anexado

Agora, nós precisamos desenvolver a nossa estratégia com os dois tipos de tendência - tendência de alta e tendência de baixa. Assim como nós definimos:

Durante a tendência de alta:

Isso é implementado no código a seguir:

//+------------------------------------------------------------------+
//|                                    Momentum Uptrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM UPTREND STRATEGY - BUY");
   if(MomentumValue<100) Comment("MOMENTUM UPTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

Após escrever este código, execute-o na plataforma de negociação — lá ele gerará os sinais desejados no gráfico, assim como vimos no programa anterior. Vá para a janela Navegador e localize o programa, conforme mostrado na figura a seguir:

Indicador Momentum1 no navegador

Em seguida, abra o arquivo clicando duas vezes ou arraste e solte-o no gráfico. Isso abrirá a seguinte janela de parâmetros:

Janela da estratégia de tendência de alta do Momentum 

Habilite a opção Permitir Negociação Automatizada e clique em OK. O arquivo será anexado ao gráfico da seguinte forma:

Estratégia de tendência de alta do Momentum anexada

O programa começará a gerar comentários no gráfico, mostrando os sinais de acordo com essa estratégia.

Estratégia de tendência de alta do Momentum - Comprar

Estratégia de tendência de alta do Momentum - sem sinal

Durante a tendência de baixa:

O código a seguir mostra como desenvolver um programa para fazer isso:

//+------------------------------------------------------------------+
//|                                  Momentum Downtrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue<100) Comment("MOMENTUM DOWNTREND STRATEGY - SHORT");
   if(MomentumValue>100) Comment("MOMENTUM DOWNTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

Após escrever o código em nosso Editor de Linguagem MetaQuotes e compilá-lo, executamos novamente o arquivo desse programa no gráfico. Encontramos-o na janela do Navegador, na pasta Expert Advisors, como na figura a seguir:

Indicador Momentum2 do navegador

Em seguida, clicamos duas vezes ou arrastamos e soltamos o arquivo no gráfico. Isso abrirá a seguinte janela com os parâmetros do programa:

Janela de estratégia de tendência de baixa do Momentum

Novamente, habilite "Permitir Negociação Automatizada" e pressione OK. O programa será anexado a um gráfico e funcionará conforme mostrado na figura a seguir:

Estratégia de tendência de baixa do Momentum anexada

Os sinais gerados de acordo com esta estratégia serão os seguintes.

Estratégia de tendência de baixa do Momentum - Venda

Estratégia de tendência de baixa do Momentum - sem sinal

Agora, nós projetamos um sistema de negociação usando o indicador Momentum, utilizando uma estratégia de negociação simples. Eu mencionei no artigo, existem muitas estratégias que nós podemos usar pelo indicador Momentum, mas tentamos usar e compartilhar uma estratégia de negociação simples, ele deve ajudar a entender o conceito do indicador e ajudar os iniciantes a programá-lo. Eu espero que este tópico o encoraje a encontrar novos insights e novas ideias de como melhorar a negociação usando a MQL5.


Conclusão

Agora, nós terminamos o nosso tópico. Neste artigo, nós aprendemos sobre o conceito de Momentum, vimos por que esse conceito é importante para a nossa negociação e como ele pode adicionar mais uma dimensão útil à nossa negociação. Nós também vimos o indicador Momentum, o que ele mede e como ele pode ser calculado. Em seguida, nós aprendemos uma estratégia simples que pode ser usada pelo indicador Momentum durante diferentes direções ou tendências do mercado. Nós aprendemos também como projetar um sistema de negociação em MQL5, como escrever o código dessa estratégia e depois como executá-lo em nossa plataforma de negociação - MetaTrader 5 - na qual o programa pode gerar sinais automaticamente. Isso pode nos ajudar a negociar de forma suave, fácil e eficaz.

Eu não consigo encontrar palavras suficientes para descrever como é importante testar tudo o que você aprendeu antes de usá-lo para ter certeza de que é adequado para o seu estilo de negociação e seu plano. Eu aconselho você a melhorar tudo o que aprendeu, pois esta etapa permitirá que você não apenas absorva o que você aprendeu, mas abrirá a sua mente para novas ideias e fornecerá mais insights sobre os tópicos relacionados ou não relacionados.

Outra coisa que eu gostaria de mencionar aqui é que existem muitas estratégias lucrativas que podem ser usadas, mas nós podemos encontrar alguém usando uma estratégia e obter lucros enquanto nós podemos encontrar outra pessoa usando a mesma estratégia e ter perdas. Então, não se trata apenas da estratégia, sim, a estratégia é importante com certeza, mas há mais elementos que podem levar aos resultados desejados e o mais importante é a disciplina. Nós temos uma ferramenta que pode ser útil e eficaz para conseguir essa disciplina e esta ferramenta é a programação, pois uma vez que criamos um sistema de negociação com uma estratégia lucrativa, isso será uma mudança do jogo, pois o computador entenderá a sua estratégia e fará o que você deseja fazer sem que as emoções interfiram como todos nós experimentamos como seres humanos. 

Eu espero que você ache este artigo útil para a sua negociação e desejo que todas as suas negociações sejam lucrativas!