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

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

MetaTrader 5Negociação | 9 agosto 2022, 09:26
851 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Neste novo artigo, nós falaremos sobre um novo conceito de negociação que nós temos que medir e saber como usá-lo. Este conceito é a volatilidade. Muitas ferramentas podem ser usadas para medir a volatilidade e dessas ferramentas, uma das ferramentas mais populares é o indicador técnico Average True Range (ATR). Quando você sabe como está a volatilidade, isso pode representar uma mudança dramática do jogo como nós veremos neste artigo, pois ele será um dos fatores importantes ou a base para a tomada de decisões.

Nós passaremos por muitos tópicos para entender bem o indicador ATR, como você já deve saber, caso tenha lido meus outros artigos publicados, a minha abordagem é aprender e ensinar a raiz das coisas. Os tópicos a seguir são os que nós aprenderemos neste artigo sobre essa ferramenta incrível:

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

Após esses tópicos, espero que nós possamos compreender profundamente o indicador ATR e aprender a usá-lo de maneira adequada. Nós vamos aprender o que é o indicador Average True Range (ATR), o que ele mede, e como ele é calculado: Nós vamos analisar sua fórmula e aplicar em um exemplo real do mercado. Isto será abordado no tópico de definição do ATR. Nós vamos aprender estratégias simples que podem ser usadas com base no conceito do indicador ATR. Eu compartilharei estratégias simples que podem ajudar a melhorar o nosso entendimento - isso será feito através do tópico da estratégia do ATR. Nós aprenderemos a projetar um esquema para as estratégias mencionadas. Esta é uma etapa importante no processo de desenvolvimento do sistema de negociação para entendermos o que é necessário informar ao programa paraa fazer. Isto se faz através de um esquema passo a passo, sendo através do tópico da estratégia do ATR. Em seguida, nós aprenderemos a escrever o código para desenvolver um sistema de negociação baseado nessas estratégias e isso será escrito em MQL5 para executá-lo na MetaTrader 5, isso será discutido através do tópico do sistema de negociação do ATR.

Como eu mencionei, nós vamos escrever o código em MQL5 através do Editor de Linguagem MetaQuotes que está embutido na plataforma de negociação da MetaTrader 5, você pode baixá-la através do seguinte link: https://www.metatrader5.com/en/download

Depois de baixá-la e instalá-la em seu dispositivo, você poderá encontrá-la aberta igual a janela de exemplo da plataforma de negociação MetaTrader 5 que se encontra a seguir:

Plataforma MT5

Então, você pode abrir o Editor de Linguagem MetaQuotes enquanto abre a MetaTrader 5 ao pressionar o botão F4 do seu teclado. Outra maneira de abri-lo é clicar no botão IDE da interface da plataforma MetaTrader 5 igual a imagem a seguir:

Abertura do Metaeditor 2

Outra maneira de abri-lo, é clicar na guia Ferramentas da plataforma MetaTrader 5 --> escolher o Editor de Linguagem MetaQuotes no menu da mesma forma que a imagem a seguir:

Abertura do Metaeditor 1 

Depois disso, nós descobriremos que o Editor de Linguagem MetaQuotes será aberto e a imagem a seguir é a sua interface:

Interface do metaeditor

Eu aconselho você a aplicar o que você leu neste artigo pois a prática é um fator importante para a melhoria.

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, prepare as suas ferramentas para aprender uma nova ferramenta para ajudá-lo a melhorar as suas habilidades de negociação e, consequentemente, melhorar os seus resultados de negociação, vamos começar a nossa jornada.


Definição do ATR

Neste tópico, nós abordaremos em detalhes o indicador de average true range (ATR), entenderemos o que é o indicador ATR, o que ele mede, como nós podemos calculá-lo e ver um exemplo disso para aprofundar o nosso entendimento e obter mais "insights" sobre como nós podemos usar esse indicador a nosso favor.

O indicador técnico Average True Range (ATR) foi desenvolvido por Welles Wilder. O indicador ATR mede a volatilidade do mercado analisando a faixa de preços para um período específico. O indicador ATR não fornece direção do preço ou mercado, mas ele fornece apenas a medida de volatilidade.

Agora, como nós podemos calcular o indicador ATR para medir a volatilidade do mercado, nós podemos calculá-lo da seguinte maneira,

Primeiro, calculamos o true range e ele será o maior valor do seguinte:

  • A diferença entre a máxima e mínima atual.
  • A diferença entre a máxima atual e o fechamento anterior (valor absoluto).
  • A diferença entre a mínima atual e o fechamento anterior (valor absoluto).

Então, aqui nesta etapa, nós precisamos dos dados das máximas, mínimas e os preços de fechamento para calculá-la. Em seguida, nós calcularemos o average true range.

Agora, vamos ver um exemplo do mercado real para aplicar o que nós aprendemos e calcular o average true range (ATR), a seguir encontramos os dados do EURUSD:

Dia Máxima Mínima Fechamento
Mar 17, 2022 1.1138 1.1008 1.1089
Mar 18, 2022 1.112 1.1003 1.1055
Mar 21, 2022 1.107 1.101 1.1014
Mar 22, 2022 1.1047 1.096 1.1027
Mar 23, 2022 1.1044 1.0963 1.1004
Mar 24, 2022 1.1014 1.0965 1.0996
Mar 25, 2022 1.1039 1.0979 1.0981
Mar 28, 2022 1.1 1.0944 1.0978
Mar 29, 2022 1.1137 1.097 1.1085
Mar 30, 2022 1.1171 1.1083 1.1156
Mar 31, 2022 1.1185 1.1061 1.1065
Apr 01, 2022 1.1077 1.1027 1.1053
Apr 04, 2022 1.1056 1.096 1.097
Apr 05, 2022 1.099 1.0899 1.0903
Apr 06, 2022 1.0939 1.0874 1.0893
Apr 07, 2022 1.0939 1.0864 1.0878
Apr 08, 2022 1.0892 1.0836 1.0876
Apr 11, 2022 1.0951 1.0872 1.0883
Apr 12, 2022 1.0905 1.0821 1.0826
Apr 13, 2022 1.0896 1.0809 1.0885
Apr 14, 2022 1.0925 1.0757 1.0827
Apr 15, 2022 1.0832 1.0796 1.0806
Apr 18, 2022 1.0822 1.0769 1.078
Apr 19, 2022 1.0815 1.0761 1.0786
Apr 20, 2022 1.0868 1.0783 1.085
Apr 21, 2022 1.0937 1.0824 1.0836
Apr 22, 2022 1.0853 1.077 1.0794
Apr 25, 2022 1.0842 1.0697 1.0711
Apr 26, 2022 1.0738 1.0635 1.0643
Apr 27, 2022 1.0655 1.0586 1.0602

Agora, para calcular o ATR, nós seguiremos os passos abaixo,

1- Calculamos o TR, ele será o maior valor dos seguintes:

  • Máxima atual - mínima atual (a diferença entre a máxima e mínima),

H-L

  • Valor absoluto (máxima atual - fechamento anterior),

 absh-pc

  • Valor absoluto (mínima atual - fechamento anterior),

 absl-pc

De acordo com o que nós calculamos, nós determinaremos o TR que é o maior valor da (máxima - mínima, abs(máxima - fechamento anterior), abs(mínima - fechamento anterior)),

TR

2- Calculamos o average true range (ATR) para 14 períodos,

ATR

Pelas etapas anteriores, nós podemos calcular o indicador do average true range (ATR) manualmente, mas hoje em dia, nós não precisamos fazer isso porque nós podemos encontrá-lo integrado à nossa plataforma de negociação MetaTrader 5. Tudo o que nós precisamos fazer é escolhê-lo entre os outros indicadores disponíveis, segue abaixo como fazer isso.

Ao abrir a plataforma de negociação MetaTrader 5, clique na guia Inserir --> indicador --> Osciladores --> Average True Range:

Inserção do ATR

Após escolher o Average True Range, a seguinte janela será aberta para os parâmetros do ATR:

Janela de inserção do ATR

1- Determina o período desejado para o indicador.

Esse valor do período pode ser diferente do perído de tempo para outro ou de um instrumento para outro conforme a volatilidade de cada período ou instrumento. O ATR mais longo pode ser melhor para gerar uma indicação precisa, pois ele será uma média mais suave.

2- Determina a cor da linha do ATR.

3- Determina o estilo da linha do ATR.

4- Determina a espessura da linha do ATR.

Após definir os parâmetros no indicador ATR, ele será anexado ao gráfico da mesma forma que a imagem a seguir:

ATR anexado

Como nós podemos ver na imagem anterior, a janela inferior inclui o indicador ATR de 14 períodos e nós podemos ver que ele é uma linha oscilante para medir a volatilidade do EURUSD ao longo do período de 1h.

Como eu mencionei anteriormente, o ATR mede a volatilidade, e nós podemos ler que na janela do ATR, quanto menor o valor da curva do ATR, menor será a volatilidade do instrumento, e vice-versa, quanto maior o valor da curva do ATR maior será a volatilidade do instrumento.

A imagem a seguir é sobre como interpretar isso:

Leitura do ATR

Como nós podemos ver pela janela inferior do gráfico anterior, nós podemos ver que quando o ATR registra valores baixos, isso indica uma baixa volatilidade, e vice-versa, quando o indicador ATR registra valores altos, indica uma alta volatilidade.

Como podemos deduzir do seu cálculo, o indicador ATR não é preciso para gerar sinais de negociação, ele considera apenas a magnitude de um intervalo, mas a sua beleza está em ser uma das melhores ferramentas que podem ajudar a aplicar um tamanho de posição adequado, tanto parar a perda e lucro.

Como eu mencionei antes, o ATR mede apenas a volatilidade e ele não fornece a tendência ou a direção do mercado. Portanto, não confunda se a curva do ATR está subindo, isso não significa que a tendência é de alta, e vice-versa, se a curva do ATR está descendo, isso não significa que a tendência é de baixa. Se você quiser aprender sobre uma das ferramentas mais populares, o indicador ADX pode ser usado para determinar se há uma tendência ou não.

Você também pode ler a definição de tendência do meu artigo anterior.

A imagem a seguir é um exemplo que pode mostrar que o ATR não fornece uma direção de tendência:

Leitura ATR 2

Como nós podemos ver, o indicador está subindo ao mesmo tempo em que os preços estão caindo e vice-versa, a linha do ATR está caindo ao mesmo tempo em que os preços estão subindo. O ATR não fornece uma tendência ou direção de mercado, ele é apenas uma medida da volatilidade.


Estratégia do ATR

Neste tópico, nós aprenderemos estratégias simples que podem ser usadas pelo indicador ATR de acordo com seu conceito para melhorar nossos resultados de negociação. O conceito do indicador ATR é que ele mede apenas a volatilidade do mercado, não a direção do mercado.

1- Sistema ATR Simples - Força do ATR:

De acordo com essa estratégia, nós compararemos entre o valor atual do ATR e os valores específicos e decidiremos se o ATR é forte ou não. É importante notar que esses valores específicos podem diferir de um instrumento para outro ou de um período para outro. Assim, nós verificaremos o valor do indicador ATR e determinaremos sua força de acordo com o seu valor. Se o valor atual do ATR for maior que 0.0024, isso significa que o ATR é forte e vice-versa, se o valor atual do ATR for menor que 0.0014, isso significa que o ATR é fraco. Se o valor do ATR estiver entre 0.0014 e 0.0024, isso significa que o ATR é neutro e retorna apenas o valor atual do ATR.

  • Valor atual do ATR > 0.0024 = ATR forte
  • Valor atual do ATR < 0.0014 = ATR fraco
  • Valor atual do ATR > 0.0014 e < 0.0024 = valor atual do ATR


2- Sistema ATR Simples - Movimento do ATR:

De acordo com esta estratégia, nós vamos comparar o valor atual do ATR com o valor anterior do ATR e então decidir sobre o movimento do ATR: se a linha do ATR está subindo, significa que o valor atual do ATR é maior que o valor anterior do ATR. Se ele se move para baixo, significa que o valor atual do ATR é menor que o valor anterior do ATR.

  • Valor atual do ATR > valor anterior do ATR = ATR cresce
  • Valor atual do ATR < valor anterior do ATR = ATR diminui


3- Sistema ATR Simples - Níveis do SL e TP:

De acordo com essa estratégia, nós precisamos usar os valores do ATR para determinar um nível dinâmico de stop loss e take profit com base no valor atual do ATR e o cálculo específico para o stop loss e take profit para as posições de compra e venda.

No caso da posição de compra, nós precisamos ver no gráfico:

  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o valor do stop loss de acordo com o cálculo específico para a posição de compra.
  • Uma nova linha com o valor do take profit de acordo com o cálculo específico para a posição de compra.

No caso da posição de venda, nós precisamos ver no gráfico:

  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o valor do stop loss de acordo com o cálculo específico para a posição de venda.
  • Uma nova linha com o valor do take profit de acordo com o cálculo específico para a posição de venda.

Nós podemos descobrir que existem outras estratégias avançadas que podem ser usadas pelo indicador ATR, mas aqui nós precisamos mencionar apenas algumas estratégias simples que podem nos ajudar a entender profundamente o indicador ATR para poder usá-lo de maneira adequada e poder melhorar nossos resultados da negociação.


Esquema da Estratégia do ATR

Nesta parte, nós aprendemos passo a passo o que é necessário para criar um sistema de negociação para as três estratégias mencionadas através de um esquema para cada estratégia. Primeiro e antes de projetar ou criar as três estratégias mencionadas, nós começaremos com um esquema para as etapas necessárias para criar um programa simples ou um expert advisor que possa nos mostrar um comentário com o valor atual do ATR para nos ajudar a projetar nossas estratégias mencionadas, segue abaixo uma imagem que representa o esquema para isso:

Projeto simples do sistema ATR

1- Sistema ATR Simples - Força do ATR:

  • Valor atual do ATR > 0.0024 = ATR forte
  • Valor atual do ATR < 0.0014 = ATR fraco
  • Valor atual do ATR > 0.0014 e < 0.0024 = valor atual do ATR

Então, o programa deve verificar o valor atual do ATR com os valores específicos e decidir se o valor atual do ATR é maior que 0.0024, isso significa que o ATR é forte, mas não é maior que o valor de 0.0024, nós precisamos que o programa verifique se o valor atual do ATR é menor que 0.0014, isso significa que o ATR é fraco, mas não é menor que o valor de 0.0014. Se o programa se encontra entre os valores 0.0014 e 0.0024, o programa deverá mostrar apenas o valor atual do ATR no gráfico.

A seguir se encontra um plano da estratégia de força do ATR:

Sistema ATR simples - Esquema do ATR Strength

2- Sistema ATR Simples - Movimento do ATR:

  • Valor atual do ATR > valor anterior do ATR = ATR cresce
  • Valor atual do ATR < valor anterior do ATR = ATR diminui

Portanto, nós precisamos que o expert advisor verifique o valor atual do ATR e o valor anterior do ATR e, em seguida, decida, se o valor atual do ATR for maior que o valor anterior do ATR, isso significa que o ATR está crescendo e se o valor atual do ATR for menor que o valor anterior do ATR, isso significa que o ATR está diminuindo.

Segue abaixo o esquema da estratégia do movimento do ATR:

Sistema ATR simples - esquema do movimento do ATR

3- Sistema ATR Simples - Níveis do SL e TP:

Ele precisava mostrar um comentário no gráfico em ambos os casos,

A posição de compra e a posição de venda:

  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o valor do stop loss.
  • Uma nova linha com o valor do take profit.


E a seguir está um esquema da estratégia com os níveis de ATR SL e TP:

Sistema ATR simples - esquema dos níveis de SL&TP

Sistema de negociação do ATR

Neste tópico interessante, nós aprenderemos a escrever o código de cada estratégia mencionada e criaremos um sistema de negociação baseado em cada uma delas. O resultado deverá ser um programa que seja executado de maneira fácil, suave e precisa o. Agora, nós vamos escrever um código para o expert advisor nos mostrar o valor do ATR no gráfico automaticamente.

A seguir, como nós podemos escrever o código deste expert advisor do Sistema do ATR Simples:

  • Criação da matriz de preços usando a função "double":
double PriceArray[];
  • Classificação dos dados usando a função "ArraySetAsSeries":
ArraySetAsSeries(PriceArray,true);
  • Definição do ATR usando a função iATR e o valor inteiro "int" para o valor retornado:
int ATRDef=iATR(_Symbol,_Period,14);
  • Definição dos dados e armazenamento dos resultados usando a função "CopyBuffer":
CopyBuffer(ATRDef,0,0,3,PriceArray);
  • Obtenção do valor dos dados atuais retornando um valor do tipo double usando a função "NormalizeDouble":
double ATRValue=NormalizeDouble(PriceArray[0],5);
  • Obtenção de um comentário no gráfico com o valor do ATR:
Comment("ATR Value = ",ATRValue);

A seguir está o código completo se você quiser copiá-lo e colá-lo facilmente ou vê-lo em um bloco:

//+------------------------------------------------------------------+
//|                                                   Simple ATR.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 price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

Depois de escrever este expert advisor, se nós quisermos executar este programa, nós podemos encontrá-lo no navegador da mesma forma que a figura a seguir:

ATR Nav

Ao clicar duas vezes ou arrastar e soltar este arquivo no gráfico, a seguinte janela será aberta,

Janela do ATR Simples

Após clicar em "OK", nós podemos descobrir que o expert adivsor Simples ATR está anexado ao gráfico da mesma forma que a imagem a seguir:

ATR simples anexado

E nós podemos encontrar o seu resultado de acordo com as condições do programa, segue um exemplo de teste:

Sinal do ATR simples

Agora, nós criaremos um sistema de negociação para cada estratégia mencionada e ele será igual ao abaixo,

1- Sistema ATR Simples - Força do ATR:

  • Valor atual do ATR > 0.0024 = ATR forte 
  • Valor atual do ATR < 0.0014 = ATR fraco
  • Valor atual do ATR > 0.0014 e < 0.0024 = valor atual do ATR

A seguir, como nós podemos escrever o código deste expert advisor do Sistema do ATR Simples - Força do ATR:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR strength.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 price array
   double PriceArray[];
   
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //comment on the chart with ATR strength as per its value
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

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

  • Comentário com base na comparação do ATR atual com um valor específico, se o valor atual do ATR > 0.0024:
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
  • Se o ATR atual < 0.0014
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
  • Se o valor atual do ATR > 0.0014 e o valor atual do ATR < 0.0024
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);

Depois disso, nós podemos encontrar este expert advisor na janela do navegador para executá-lo após a sua compilação:

ATR Nav 1

Após abrir o arquivo clicando duas vezes ou arrastando e soltando no gráfico, nós podemos ver a janela igual a esta:

Janela de força do ATR

Após pressionar "OK", nós podemos encontrar o expert advisor anexado ao gráfico igual à imagem a seguir:

Força do ATR anexada

E a seguir está um exemplo dos sinais gerados com base nesta estratégia para teste:

Como nós podemos ver no gráfico a seguir, ele mostra um comentário com Strong ATR e o valor atual do ATR em uma nova linha:

Força do ATR - forte

Como nós podemos ver, o gráfico a seguir mostra um comentário com o ATR fraco e valor atual do ATR em uma nova linha:

Força do ATR - fraca

Como nós podemos ver, o gráfico a seguir mostra um comentário com o valor atual do ATR apenas porque ele é neutro conforme os valores determinados:

Força do ATR - neutro

2- Sistema ATR Simples - Movimento do ATR: 

  • Valor atual do ATR > valor anterior do ATR = ATR cresce
  • Valor atual do ATR < valor anterior do ATR = ATR diminui

A seguir, está como nós podemos escrever o código deste expert advisor do Sistema do ATR Simples - Movimento do ATR:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR movement.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 arrays
   double PriceArray0[];
   double PriceArray1[];
   
   //sort price array from current data
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   
   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14); 
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
      
  }
//+------------------------------------------------------------------+


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

  • A criação de duas matrizes de preços (valor atual do ATR (PriceArray0), valor anterior do ATR (PriceArray1)):
   double PriceArray0[];
   double PriceArray1[];
  • A ordenação de duas matrizes de preços dos dados atuais:
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
  • A definição dos dados e o armazenamento dos resultados em duas matrizes
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
  • A obtenção do valor dos dados atuais para os dois valores (ATR atual e anterior):
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);
  • O comentário com base na comparação do ATR atual com o valor do ATR anterior,
    • Se o valor atual do ATR > Valor anterior do ATR:
   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
    • Se o valor atual do ATR < valor anterior do ATR:
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
Após a compilação, nós podemos encontrar este expert advisor na janela do navegador para executá-lo:

ATR Nav 2

Após abrir o arquivo clicando duas vezes ou arrastando e soltando no gráfico, nós podemos ver a janela igual a esta:

Janela do movimento do ATR.

Após marcar "Permitir a Negociação Automatizada" pressionando o botão "OK", é possível encontrar o expert advisor anexado ao gráfico igual à imagem a seguir:

Movimento do ATR anexado

A seguir encontramos um exemplo dos sinais gerados com base nesta estratégia de teste,

No caso de o ATR estar subindo:

Movimento do ATR - subindo

No caso de o ATR estar diminuindo:

Movimento do ATR - diminuindo


3- Sistema ATR Simples - Níveis do SL e TP:

No caso da posição de compra, nós precisamos ver no gráfico: 

  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o valor do stop loss para a posição de compra.
  • Uma nova linha com o valor do take profit para a posição de compra.

No caso da posição de venda, nós precisamos ver no gráfico: 

  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o stop loss para a posição de venda.
  • Uma nova linha com o take profit para a posição de venda.

A seguir, está como nós podemos escrever o código deste expert advisor do Sistema do ATR Simples - Níveis do SL e TP:

//+------------------------------------------------------------------+
//|                             Simple ATR System - SL&TP levels.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()
  {
   //define Ask price&Bid
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //creating price array
   double PriceArray[];
   
   //Sorting data
   ArraySetAsSeries(PriceArray,true);

   //define ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   //define data and store result
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //get value of current data
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
   
   //comment on the chart
   Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
   "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
  }
//+------------------------------------------------------------------+

As diferenças aqui são:

  • Definindo os preços de Ask e Bid para calcular o stop loss e take profit:
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
  • Calcular o stop loss e take profit tanto para a posição de compra quanto para a posição de venda:
   //Calculate SL&TP for buy position
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //Calculate SL&TP for sell position
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
  • Comentário com base na estratégia tanto para a posição de compra quanto para a posição de venda:
  • Preço da melhor oferta de venda (ask) atual.
  • Uma nova linha com o preço da melhor oferta de compra atual.
  • Uma nova linha com o valor do ATR atual.
  • Uma nova linha com o valor do stop loss.
  • Uma nova linha com o valor do take profit.
  •    Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
       "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);

    Após nós compilarmos o código, nós podemos encontrar este expert advisor na janela do navegador para executá-lo:

    ATR Nav 3

    Após clicar duas vezes ou arrastá-lo e soltá-lo no gráfico, a seguinte janela será exibida:

    Janela ATR SL_TP

    Após pressionar "OK", nós podemos encontrar o expert advisor anexado ao gráfico igual à imagem a seguir:

    ATR SL_TP anexado

    E a seguir está um exemplo dos sinais gerados com base nesta estratégia para teste:

    Níveis do ATR SL-TP

    Conclusão

    Agora, supõe-se que você entenda o average true range em detalhes. Aprendemos o que é o ATR, o que ele mede e o conceito por trás dele. Vimos como nós podemos calculá-lo com base em um exemplo real do mercado. Então, nós aprendemos algumas estratégias simples que podem ser usadas a nosso favor com base no conceito do ATR. Conhecemos as estratégias do sistema força do ATR, movimento do ATR e estratégias de níveis Simples ATR - SL & TP. Então, aprendemos e desenvolvemos um esquema para nos ajudar a projetar um sistema de negociação para cada estratégia, logo em seguida, aprendemos como escrever o código em MQL5 do expert advisor para cada estratégia. Como resultado, foi criado programas para serem executados na plataforma MetaTrader 5.

    Depois de entender e praticar os tópicos anteriores, você deve ser capaz de usar o average true range (ATR) de acordo com o conceito por trás dele e deve ser capaz de ler o indicador para determinar a volatilidade do instrumento por meio de um sistema de negociação automatizado, especialmente depois de aplicar o que você aprendeu sozinho, porque praticar é importante para dominar qualquer coisa.

    É importante também confirmar que você deve testar qualquer nova estratégia ou ferramenta antes de usá-la em sua conta real, pois ela pode não ser útil ou lucrativa para a sua negociação, mesmo que ela funcione com outra pessoa, pois ela pode não ser adequada para o seu perfil ou plano de negociação. Portanto, você deve se certificar de que ela é útil e lucrativa para você testando primeiro.

    No final deste artigo, eu espero que você ache útil para sua negociação e espero também que tenha aberto seus olhos para novas ideias sobre o tópico do artigo ou qualquer tópico relacionado na negociação que possa ser um motivo para aprimorar seus resultados de negociação. Espero que isso tenha feito você entender a importância da programação para a negociação, o quanto ela pode ser útil e o quanto ela nos ajuda a negociar com facilidade, suavidade e precisão.

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

    Redes neurais de maneira fácil (Parte 14): Agrupamento de dados Redes neurais de maneira fácil (Parte 14): Agrupamento de dados
    Devo confessar que já se passou mais de um ano desde que o último artigo foi publicado. Em um período tão longo como esse, é possível reconsiderar muitas coisas, desenvolver novas abordagens. E neste novo artigo, gostaria de me afastar um pouco do método de aprendizado supervisionado usado anteriormente, e sugerir um pouco de mergulho nos algoritmos de aprendizado não supervisionado. E, em particular, desejaria analisar um dos algoritmos de agrupamento, o k-médias (k-means).
    Como desenvolver um sistema de negociação baseado no indicador ADX Como desenvolver um sistema de negociação baseado no indicador ADX
    Neste artigo, nós continuaremos nossa série sobre como projetar um sistema de negociação usando os indicadores mais populares e falaremos sobre o indicador Índice Direcional Médio (ADX). Nós aprenderemos este indicador em detalhes para entendê-lo bem e aprenderemos como usá-lo através de uma estratégia simples. Ao aprender algo profundamente, nós podemos obter mais "insights" e podemos usá-lo melhor.
    Desenvolvendo um EA de negociação do zero (Parte 27): Em direção ao futuro (II) Desenvolvendo um EA de negociação do zero (Parte 27): Em direção ao futuro (II)
    Vamos continuar indo em direção a um sistema mais completo de ordens direto no gráfico. Então neste artigo irei mostrar uma forma de você corrigir, ou melhor dizendo fazer com que o sistema de ordens fique mais intuitivo.
    DoEasy. Controles (Parte 4): Controle "Painel", parâmetros Padding e Dock DoEasy. Controles (Parte 4): Controle "Painel", parâmetros Padding e Dock
    Neste artigo, vamos gerar o funcionamento de alguns parâmetros de painel, nomeadamente Padding (margens internas/campos para todos os lados do elemento) e Dock (a forma como o objeto está localizado dentro do contêiner).