English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
preview
Como desenvolver um sistema de negociação baseado no indicador Índice de Força

Como desenvolver um sistema de negociação baseado no indicador Índice de Força

MetaTrader 5Negociação | 31 outubro 2022, 13:53
352 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Aqui está um novo artigo da nossa série sobre como aprender a desenvolver um sistema de negociação com base nos indicadores técnicos mais populares. Neste artigo, nós aprenderemos como criar um sistema de negociação pelo indicador Índice de Força. Nós aprenderemos sobre este indicador técnico em detalhes através dos seguintes tópicos:

  1. Definição do Índice de Força
  2. Estratégia do Índice de Força
  3. Esquema da estratégia do Índice de Força
  4. Sistema de negociação do Índice de Força
  5. Conclusão

Através dos tópicos mencionados anteriormente, nós aprenderemos de forma mais detalhada esse indicador técnico. Nós aprenderemos o que ele é, o que ele mede e como nós podemos calculá-lo através do tópico de definição do Índice de Força. Depois de entender o conceito básico por trás desse indicador, nós aprenderemos como usar as estratégias simples e nós aprenderemos isso através do tópico da estratégia do Índice de Força. Quando se trata de criar um sistema de negociação para qualquer estratégia, nós achamos que precisamos organizar nossas ideias para fazer isso sem problemas, portanto, nós vamos desenvolver um esquema para cada estratégia mencionada para nos ajudar a alcançar o nosso objetivo de maneira suave e eficaz, nós faremos isso através do tópico do esquema da estratégia do Índice de Força. Depois de organizar as nossas ideias através de um esquema passo a passo, nós criaremos o nosso sistema de negociação para ser executado na plataforma de negociação MetaTrader 5 para gerar os sinais de forma automática e precisa, nós faremos isso através do tópico do sistema de negociação do Índice de Força.

Nós usaremos a MQL5 (MetaQuotes Language) para escrever o código para o sistema de negociação. A MQL5 se encontra na plataforma de negociação MetaTrader 5. Se você quiser baixar e usar a MetaTrader 5 para usar a MQL5, você pode ler o tópico Escrevendo em MQL5 no MetaEditor do artigo anterior. Eu aconselho que você aplique o que você aprendeu sozinho para aprofundar a sua compreensão, além da necessidade de testar qualquer estratégia antes de usá-la em sua conta real.

Ressalva: Qualquer informação fornecida aqui é apenas para fins educacionais e sem fins comerciais ou de aconselhamento. As informações não garantem nenhum tipo de resultado. Se você optar por usar esses materiais em qualquer uma de suas contas de negociação, você fará isso por sua conta e risco, sendo o único responsável.

Agora, vamos começar os nossos tópicos para aprender sobre o indicador Índice de Força.


Definição do Índice de Força

Neste tópico, nós aprenderemos com mais detalhes sobre o indicador Índice de Força, pois nós aprenderemos o que é este indicador, o que ele mede e como nós podemos calculá-lo. Minha abordagem é que quando nós aprendemos e entendemos a raiz das coisas, nós não seremos capazes de usar essas coisas de forma eficaz apenas, mas nós obteremos mais "insights" sobre como desenvolver mais ideias relacionadas a essas coisas. O Índice de Força é desenvolvido por Alexander Elder e ele o forneceu em seu incrível livro "Trading for a living". Este indicador mede a força por trás do movimento ou identifica possíveis pontos de reversão. O indicador Índice de Força usa o preço e o volume em seu cálculo e isso ajuda a medir o poder por trás de qualquer movimento no mercado.

Se nós quisermos saber como nós podemos calcular o indicador Índice de Força manualmente para entender o conceito básico por trás dele, nós podemos fazer isso seguindo duas etapas simples:

1- Índice de Força de 1 período = (Fechamento de 1 período - Fechamento do período anterior) * Volume

2- Índice de Força de 13 períodos = 13 períodos da EMA Índice de Força de 1 período

Hoje em dia, nós não precisamos calcular isso manualmente, pois nós podemos encontrá-lo como um indicador embutido na plataforma de negociação MetaTrader 5, precisamos apenas escolhê-lo entre os indicadores disponíveis na plataforma de negociação MetaTrader 5. Enquanto nós abrimos a MetaTrader 5, nós pressionaremos a guia Inserir --> Indicadores --> Osciladores --> Índice de Força.

Segue uma imagem para fazer isso:

Inserção do indicador Índice de Força

Depois de escolher o "Índice de Força", nós encontraremos os parâmetros deste indicador da seguinte forma:

Parâmetro do indicador Índice de Força

1- Determinar o período desejado do indicador Índice de Força. Nós usaremos (13) como a configuração padrão do indicador.

2- Determinar o tipo da média móvel utilizável. Nós usaremos a exponencial.

3- Determinar o tipo de volume. Nós usaremos o de Tick.

4- Determinar a cor da linha do indicador.

5- Determinar o estilo da linha.

6- Determinar a espessura da linha.

Depois disso, nós podemos encontrar o indicador anexado ao gráfico da mesma forma que o seguinte:

Indicador Índice de Força anexado

Como nós podemos ver na janela inferior do gráfico anterior, o indicador Índice de Força está anexado ao gráfico e sua linha oscila acima e abaixo do nível zero.


Estratégia do Índice de Força

Neste tópico, nós aprenderemos como usar o Índice de Força com base no conceito básico por trás dele. Nós usaremos as estratégias simples apenas para entender o conceito básico de como você pode usar esse indicador e como criar um sistema de negociação com ele. Você deve testar qualquer uma dessas estratégias antes de as usar em sua conta real para garantir que elas sejam adequadas para sua negociação, pois o objetivo principal aqui é apenas educacional.

  • Estratégia um: Índice de Força - Identificador de Tendência:

Com base nessa estratégia, nós precisamos obter os sinais de alta ou de baixa com base no cruzamento entre o indicador Índice de Força e o nível zero. Se o Índice de Força for maior que o nível zero, ele irá gerar um sinal de movimento de alta. Vice-versa, se o Índice de Força for inferior ao nível zero, ele irá gerar um sinal de movimento de baixa.

Simplesmente,

Índice de Força > nível zero --> movimento de alta.

Índice de Força < nível zero --> movimento de baixa.

  • Estratégia dois: Índice de Força - Alta ou Divergência:

Com base nessa estratégia, nós precisamos obter um sinal quando o mercado experimenta um forte movimento de alta ou divergência. Se o valor da máxima atual for maior que o valor da máxima anterior e, ao mesmo tempo, o valor do Índice de Força atual for maior que o anterior, será um sinal de um forte movimento de alta. Se a máxima atual for maior que a máxima anterior e, ao mesmo tempo, o Índice de Força atual for menor que o anterior, isso será um sinal de divergência de baixa.

Simplesmente,

Máxima atual > máxima anterior e Índice de Força atual > Índice de Força anterior --> forte movimento de alta.

Máxima atual > máxima anterior e Índice de Força atual < Índice de Força anterior --> divergência de baixa.

  • Estratégia três: Índice de Força - Baixa ou Divergência:

De acordo com essa estratégia, nós precisamos obter o sinal oposto da estratégia dois. Nós precisamos obter um sinal de um forte movimento de baixa ou divergência com base nas condições específicas. Se a mínima atual for menor que a mínima anterior e o valor do Índice de Força atual for menor que o anterior, será um sinal de um forte movimento de baixo. Se a mínima atual for menor que a anterior e o Índice de Força atual for maior que o anterior, será um sinal de divergência de alta.

Simplesmente,

Mínima atual < mínima anterior e Índice de Força atual < Índice de Força anterior --> forte movimento de baixa.

Mínima atual < mínima anterior e Índice de Força atual > Índice de Força anterior --> divergência de alta.

  • Estratégia quatro: Sinais do Índice de Força:

De acordo com essa estratégia, nós precisamos obter os sinais de compra ou venda com base nas condições específicas. Se o preço de fechamento for maior que a média móvel exponencial, o Índice de Força anterior for menor que zero e o Índice de Força atual for maior que o nível zero, isso será um sinal de compra. Se o preço de fechamento estiver abaixo da média móvel exponencial, o Índice de Força anterior for maior que o nível zero e o Índice de Força atual for inferior ao nível zero, isso será um sinal de venda.

Simplesmente,

Preço de fechamento > EMA, Índice de Força anterior < zero e Índice de Força atual > zero --> sinal de compra.

Preço de fechamento < EMA, Índice de Força anterior > zero e Índice de Força atual < zero --> sinal de venda.


Esquema da estratégia do Índice de Força

Neste tópico, nós criaremos um esquema passo a passo para nos ajudar a criar o nosso sistema de negociação. Na minha opinião, este é um passo importante, pois nos ajuda a organizar nossas ideias para completar o nosso objetivo e criar o nosso sistema de negociação sem problemas.

  • Estratégia um: Índice de Força - Identificador de Tendência:

De acordo com essa estratégia, precisamos criar um sistema de negociação que nos dê sinais automáticos com os movimentos de alta ou de baixa na forma de um comentário no gráfico. Precisamos que o expert verifique o Índice de Força atual a cada tick e decida a sua posição a partir do nível zero. Se o valor do Índice de Força atual for maior que o nível zero, nós precisamos que o expert gere comentários no gráfico com o movimento de alta e o valor do Índice de Força atual. Por outro lado, se o valor do Índice de Força atual for menor que o nível zero, nós precisamos que o expert gere comentários no gráfico com o movimento de baixa e valor do Índice de Força atual.

Índice de Força - Esquea do Identificador de Tendência

  • Estratégia dois: Índice de Força - Para cima ou Divergência:

Com base nessa estratégia, precisamos criar um sistema de negociação para nos fornecer um sinal com um forte movimento de alta ou uma divergência de baixa. Precisamos que o sistema de negociação verifique quatro valores a cada tick, sendo eles: a máxima atual e anterior e o Índice de Força atual e anterior e compare entre os valores atuais e anteriores qual é maior que o outro. Se a máxima atual for maior que a anterior e o Índice de Força atual for maior que o anterior, precisamos que o expert gere o seguinte comentário no gráfico, com cada valor em uma linha separada:

  • Movimento de alta forte
  • Valor da máxima atual
  • Valor da máxima anterior
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

Se a máxima atual for maior que anterior e o Índice de Força atual for menor que o anterior, nós precisamos que o expert gere o seguinte comentário no gráfico, com cada valor em uma linha separada:

  • Divergência de baixa
  • Valor da máxima atual
  • Valor da máxima anterior
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

A seguir, está uma imagem para este esquema:

Índice de Força - Esquema de alta ou divergência

  • Estratégia três: Índice de Força - Baixa ou Divergência:

De acordo com essa estratégia, nós precisamos criar um sistema de negociação que gere os sinais automáticos de um forte movimento de baixa ou divergência de alta. Precisamos que o sistema de negociação verifique quatro valores a cada tick, sendo eles: a mínima atual e anterior e o Índice de Força atual e anterior e comparar entre os valores atuais e anteriores qual é maior que o outro. Se o valor da mínima atual for menor que o anterior e o Índice de Força atual for menor que o anterior, nós precisamos que o expert gere os seguintes valores como um comentário no gráfico, com cada valor em uma linha separada:

  • Movimento forte de baixa
  • Valor da mínima atual
  • Valor da mínima anterior
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

Se o valor da mínima atual for menor que o anterior e o Índice de Força atual for menor que o anterior, nós precisamos que o expert gere os seguintes valores como um comentário no gráfico, com cada valor em uma linha separada:

  • Divergência de alta
  • Valor da mínima atual
  • Valor da mínima anterior
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

A seguir, está uma imagem deste esquema:

Índice de Força - Esquema de Baixa ou Divergência

  • Estratégia quatro: Sinais do Índice de Força:

Com base nessa estratégia, nós precisamos criar um sistema de negociação que gere os sinais de compra ou venda com base em condições específicas. Nós precisamos que o expert verifique quatro valores a cada tick e esses valores são o preço de fechamento, a média móvel, o Índice de Força atual e anterior. Se o preço de fechamento for maior que o valor da média móvel atual, o Índice de Força anterior for menor que zero e o Índice de Força atual for maior que zero, nós precisamos que o expert gere os seguintes comentários no gráfico com cada valor em uma linha separada:

  • Sinal de compra
  • Preço de fechamento atual
  • Média móvel exponencial atual
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

Se o preço de fechamento for menor que o valor da média móvel atual, o Índice de Força anterior for maior que zero e o Índice de Força atual for menor que zero, nós precisamos que o expert gere os seguintes comentários no gráfico com cada valor em uma linha separada:

  • Sinal de venda
  • Preço de fechamento atual
  • Média móvel exponencial atual
  • Valor do Índice de Força atual
  • Valor do Índice de Força anterior

A seguir está o esquema para esta estratégia:

Esquema dos sinais do Índice de Força

Sistema de negociação do Índice de Força

Neste tópico, nós aprenderemos em detalhes como criar um sistema de negociação para cada estratégia mencionada e obter os sinais automáticos na MetaTrader 5 após escrevermos os códigos em MQL5 dessas estratégias. Primeiro, nós criaremos uma estratégia de negociação simples que pode ser usada para gerar um comentário no gráfico com o valor atual do Índice de Força para usar como base para as nossas estratégias mencionadas.

  • Criamos uma matriz para o fiArray usando a função "double".
double fiArray[];
  • Ordenamos a matriz usando a função "ArraySetAsSeries" que retorna um booleano (true ou false). Os parâmetros desta função são:
    • array[]
    • flag
ArraySetAsSeries(fiArray,true);
  • Definimos o volume usando o iForce após criar uma variável para fiDef. A função iForce retorna o manipulador do indicador Índice de Força. Os parâmetros desta função são:
    • symbol: usaremos (_Symbol) para ser aplicado ao símbolo atual.
    • period: usaremos (_Period) para ser aplicado ao período atual ou tempo gráfico.
    • ma_period: usaremos (13) de tamanho da média móvel.
    • ma_method: usaremos (MODE_EMA) como um tipo da média móvel
    • applied_volume: usaremos (VOLUME_TICK) como o tipo de volume.
int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
  • Preenchemos a matriz usando a função CopyBuffer para obter os dados do indicador Índice de Força. Parâmetros desta função:
    • Indicator_handle: para o manipulador do indicador e nós usaremos (fiDef).     
    • buffer_num: para o número do buffer do indicador, nós usaremos (0).
    • start_pos: para a posição inicial nós usaremos (0).         
    • count: pelo valor a ser copiado, nós usaremos (13).                
    • buffer[]: para a matriz de destino, nós usaremos (fiArray).
CopyBuffer(fiDef,0,0,3,fiArray);
  • Definimos o valor atual do Índice de Força usando a função NormalizeDouble após criar uma variável para fiVal. A função NormalizeDouble retorna o valor do tipo double e os parâmetros são:
    • value: usaremos (fiArray[0]) como um número normalizado.
    • dígits: nós usaremos (6) como o número de dígitos após o ponto decimal.
double fiVal = NormalizeDouble(fiArray[0],6);
  • Usando a função comment para retornar o valor atual do Índice de Força como um comentário no gráfico.
Comment("Force Index Value is ",fiVal);

A seguir está o código completo para criar este sistema de negociação simples:

//+------------------------------------------------------------------+
//|                                           Simple Force Index.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()
  {
   double fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   Comment("Force Index Value is ",fiVal);

  }
//+------------------------------------------------------------------+

Após compilar este código, nós encontraremos o Expert Advisor dessa estratégia de negociação na janela do navegador da seguinte forma:

FI Nav 1

Ao arrastá-lo e soltá-lo no gráfico, encontraremos sua janela igual à seguinte:

Ganho do indicador Índice de Força

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

Índice de Força simples anexado

Como nós podemos ver no canto superior direito da imagem anterior, o expert "Simples Force Index" está anexado ao gráfico.

Podemos encontrar a geração dos sinais deste sistema de negociação igual ao seguinte exemplo de teste:

Sinal do Simple Índice de Força

Como nós podemos ver no exemplo anterior do teste, no canto superior esquerdo do gráfico nós temos um comentário com o valor atual do Índice de Força.

Se nós quisermos confirmar que o sinal gerado é o mesmo que o indicador Índice de Força embutido na MetaTrader 5. Podemos inserir o indicador com as mesmas configurações do indicador programado ao mesmo tempo em que o expert está anexado. Nós encontraremos os sinais gerados da mesma forma que o seguinte.

Simple Índice de Força - mesmo sinal

Podemos ver no canto superior esquerdo do gráfico anterior, que o expert está anexado e no canto superior direito temos o comentário sobre o valor do Índice de Força que é gerado por este expert e na janela inferior nós temos o Índice de Força embutido com o seu valor, podendo ver claramente que ambos os valores são iguais.

  • Estratégia um: Índice de Força - Identificador de Tendência:

Veja a seguir como escrever o código que cria um sistema de negociação baseado nesta estratégia.

//+------------------------------------------------------------------+
//|                               Force Index - Trend Identifier.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()
  {
   double fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,100,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

  }
//+------------------------------------------------------------------+

As diferenças neste código são as condições desta estratégia:

Em caso de movimento de alta

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

Em caso de movimento de baixa

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

Depois de compilar este código, nós encontraremos o expert na janela do navegador igual a imagem a seguir:

FI nav

Para executar este expert, vamos arrastá-lo e soltá-lo no gráfico, então nós encontraremos sua janela igual à seguinte:

Janela do Índice de força - Identificador de tendência

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

Índice de Força - Trend Identifier anexado

É possível visualizar no canto superior direito do gráfico que o expert está anexado ao gráfico.

Podemos encontrar a geração dos sinais desta estratégia igual ao seguinte exemplo de teste:

Em caso de movimento de alta:

Índice de Força - Trend Identifier - sinal de alta

Como nós podemos ver no gráfico anterior, no canto superior esquerdo do gráfico nós temos um comentário com o movimento de alta e o valor atual do indicador Índice de Força.

Em caso de movimento de baixa:

Índice de Força - Trend Identifier - sinal de baixa

Como nós podemos ver no gráfico anterior, no canto superior esquerdo do gráfico nós temos um comentário com o movimento de baixa e o valor atual do indicador Índice de Força.

  • Estratégia dois: Índice de Força - Para cima ou Divergência:

A seguir está o código para criar um sistema de negociação para esta estratégia:

//+------------------------------------------------------------------+
//|                               Force Index - Up or Divergence.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()
  {
   double fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double currentHighVal=NormalizeDouble(pArray[2].high,6);
   double prevHighVal=NormalizeDouble(pArray[1].high,6);

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

As diferenças neste código são:

Criação de duas matrizes, uma para fiArray usando a função do tipo "double" como nós fizemos antes e outro para pArray usando a função do tipo "MqlRates" que armazena as informações sobre preços, volumes e spread.

   double fiArray[];
   MqlRates pArray[];

Ordenamos essas matrizes criadas, para fiArray usaremos a função "ArraySetAsSeries" como nós aprendemos antes. Para pArray, nós usaremos a função "CopyRates" para obter os dados históricos de "MqlRates", seus parâmetros são:

  • symbol: usaremos (_Symbol).
  • timeframe: usaremos (_Period).
  • start time: nós usaremos (0).
  • stop time: nós usaremos (3).
  • rates array: nós usaremos (pArray).
   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Definimos os valores atuais e anteriores do Índice de Força

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

Definimos os valores das máximas atuais e anteriores

   double currentHighVal=NormalizeDouble(pArray[2].high,6);
   double prevHighVal=NormalizeDouble(pArray[1].high,6);

Condições da estratégia

Em caso de movimento forte para cima:

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Em caso de divergência de baixa

 
   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Depois de compilar este código, nós vamos encontrá-lo na janela do navegador da seguinte forma:

FI Nav

Após arrastar e soltar o expert no gráfico, nós encontraremos a janela do programa da seguinte forma:

Janela do Índice de força - Alta ou divergência

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

Índice de Força - Alta ou Divergência anexado

Podemos ver no gráfico anterior no canto superior direito que o expert está anexado.

Após isso, nós podemos obter os sinais com base nas condições do mercado, se corresponderem às condições desta estratégia. A seguir estão os exemplos de testes.

Em caso de uma forte movimentação com a janela de dados atual:

Índice de Força - Alta ou Divergência - sinal forte - dados atuais

Com a janela de dados anterior:

 Índice de Força - Alta ou Divergência - sinal forte - dados anteriores

Em caso de divergência de baixa com a janela de dados atual:

Índice de Força - Alta ou Divergência - sinal de divergência - dados atuais

Com a janela de dados anterior:

Índice de Força - Alta ou Divergência - sinal de divergência - dados anteriores

  • Estratégia três: Índice de Força - Baixa ou Divergência:

Segue o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                             Force Index - Down or Divergence.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()
  {
   double fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double currentLowVal=NormalizeDouble(pArray[2].low,6);
   double prevLowVal=NormalizeDouble(pArray[1].low,6);

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

As diferenças neste código são:

Definimos os valores das mínimas atuais e anteriores:

   double currentLowVal=NormalizeDouble(pArray[2].low,6);
   double prevLowVal=NormalizeDouble(pArray[1].low,6);

Condições desta estratégia:

Em caso de movimento forte de baixa:

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Em caso de divergência de alta:

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Após compilar este código, nós encontraremos o Expert Advisor dessa estratégia de negociação na janela do navegador da seguinte forma:

FI Nav

Depois de arrastá-lo e soltá-lo no gráfico, nós encontraremos a janela deste expert da seguinte forma:

Janela do Índice de Força - Baixa ou Divergência

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

Índice de Força - Down or Divergence anexado

Podemos ver no gráfico anterior que o expert está anexado no canto superior direito.

Agora, nós podemos ver os sinais gerados com base nessa estratégia da mesma forma que os exemplos de teste a seguir.

Em caso de forte queda com os dados atuais:

Índice de Força - Baixa ou Divergência - sinal forte de queda - dados atuais

Com os dados anteriores:

Índice de Força - Baixa ou Divergência - sinal forte de queda - dados anteriores

Em caso de divergência de alta com os dados atuais:

Índice de Força - Baixa ou Divergência - sinal de divergência - dados atuais

Com os dados anteriores:

Índice de Força - Baixa ou Divergência - sinal de divergência - dados anteriores

  • Estratégia quatro: Sinais do Índice de Força:

Segue o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                                          Force Index signals.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"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   double maArray[];
   MqlRates pArray[];



   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);


   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);


   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Diferenças neste código:

Criamos três matrizes para fiArray, maArray e MqlRates

   double fiArray[];
   double maArray[];
   MqlRates pArray[];

Ordenamos as matrizes de fiArray e maArray

   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);

Definimos fiDef para o Índice de Força, maDef para a média móvel

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

Ordenamos pArray pela função "CopyRates" da mesma forma que nós aprendemos

int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Preenchemos as matrizes

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

Definimos quatro valores do Índice de Força atual, anterior, a média móvel atual e o preço de fechamento

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);

Condições da estratégia:

Em caso de sinal de compra:

   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

Em caso de sinal de venda:

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

Depois de compilar este código, nós vamos encontrá-lo na janela do navegador da seguinte forma:

FI Nav

Após arrastar e soltar o expert no gráfico, nós encontraremos a janela do programa da seguinte forma:

Janela dos sinais do Índice de Força

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

 Sinais do Índice de Força anexados

Após isso, nós podemos encontrar os exemplos dos sinais gerados a partir dos testes da mesma forma que o seguinte.

Em caso de sinal de compra com os dados atuais:

Sinais do Índice de Força - sinal de compra - dados atuais

Com os dados anteriores:

Sinais do Índice de Força - sinal de compra - dados anteriores

Em caso de sinal de venda com os dados atuais:

Sinais do Índice de Força - sinal de venda - dados atuais

Com os dados anteriores:

 Sinais do Índice de Força - sinal de venda - dados anteriores


Conclusão

O indicador Índice de Força é uma ótima ferramenta técnica que está nos dando bons "insights" para tomar uma decisão adequada. Cobrimos esse indicador em detalhes neste artigo e aprendemos o que ele é, o que ele mede e como nós podemos calculá-lo manualmente para entender o conceito por trás dele. Aprendemos também como nós podemos usá-lo através das estratégias simples que são:

  • Índice de Força - Identificador de tendência: para obter os sinais do movimento de alta e baixa.
  • Índice de Força - Alta ou Divergência: para obter os sinais do forte movimento de alta ou divergência de baixa.
  • Índice de Força - Baixa ou Divergência: para obter os sinais do forte movimento de baixa ou divergência de alta.
  • Sinais do Índice de Força: para obter os sinais de compra ou venda com base na avaliação do preço de fechamento, valor do Índice de Força e média móvel exponencial.

Depois disso, nós projetamos um esquema passo a passo para criar um sistema de negociação para cada estratégia mencionada e a importância desta etapa é nos ajudar a criar esse sistema de negociação de forma suave e eficaz após organizar as nossas ideias. Nós aprendemos a criar sistemas de negociação baseados em cada uma das estratégias analisadas. Todas elas geram sinais automatizados utilizando a plataforma MetaTrader 5.

No entanto, não devemos esquecer o quão importante é testar minuciosamente qualquer ferramenta antes de usá-la em uma conta real. Afinal, o que funciona para os outros pode não funcionar para você. Espero que você aplique o conhecimento adquirido e tente desenvolvê-lo sozinho, pois a prática é um fator importante de qualquer processo de aprendizado. Eu aconselho a pensar em como você pode usar este indicador com outra ferramenta técnica de uma forma que melhore nossas decisões e resultados de negociação, pois esse é um dos recursos mais surpreendentes da abordagem da análise técnica.

Na minha opinião, é importante aprender ou pelo menos dar atenção à programação, pois sua importância aumenta dia após dia em diferentes áreas. Quando se trata da negociação, a programação tem muitos recursos que nos levam a dar atenção a ela da mesma forma que a programação economiza nosso tempo usando programas que negociam para nós ou nos ajudam a negociar de maneira eficaz. Além disso, a programação ajuda a obter sinais precisos com base no que nós desenvolvemos. O mais benéfico é reduzir e evitar emoções prejudiciais.

Espero que você ache este artigo útil para melhorar o seu resultado de negociação e obter novas ideias sobre este tópico ou qualquer tópico relacionado. Se você achou este artigo útil e deseja ler mais artigos semelhantes, leia meus outros artigos desta série.

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/11269

Indicador CCI. Atualizações e novos recursos Indicador CCI. Atualizações e novos recursos
Neste artigo, considerarei a possibilidade de atualizar o indicador CCI. Além disso, eu apresentarei uma modificação do indicador.
Aprendendo a construindo um EA que opera de forma automática (Parte 03): Novas funções Aprendendo a construindo um EA que opera de forma automática (Parte 03): Novas funções
Aprenda como criar um EA que opera de forma automática, isto de forma simples e o mais seguro possível. No artigo anterior começamos o desenvolvimento do sistema de ordens, para ser utilizado no EA automático, no entanto, ali montamos apenas e somente uma das funções.
Redes neurais de maneira fácil (Parte 20): autocodificadores Redes neurais de maneira fácil (Parte 20): autocodificadores
Continuamos a estudar algoritmos de aprendizado não supervisionado. Talvez você como o leitor possa ter dúvidas sobre se as publicações recentes se encaixam no tópico de redes neurais. Neste novo artigo, voltamos ao uso de redes neurais.
Redes neurais de maneira fácil (Parte 19): Regras de associação usando MQL5 Redes neurais de maneira fácil (Parte 19): Regras de associação usando MQL5
Continuamos o tópico de busca de regras de associação. No artigo anterior, consideramos os aspectos teóricos desse tipo de problema. No artigo de hoje, ensinarei a implementação do método FP-Growth usando MQL5. Também vamos testá-la com dados reais.