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

Como desenvolver um sistema de negociação baseado no indicador SAR Parabólico

MetaTrader 5Negociação | 10 agosto 2022, 09:28
751 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Neste artigo, você aprenderá em detalhes sobre um novo indicador técnico útil que pode ser usado em sua negociação de acordo com o seu estilo de negociação, se for adequado. Este indicador técnico é o SAR Parabólico. Nós aprenderemos como projetar um sistema de negociação para ser usado na plataforma de negociação MetaTrader5 depois de escrever o código deste sistema de negociação pelo Editor de Linguagem MetaQuotes embutido na MetaTrader 5. Se você quiser aprender como obter a MetaTrader 5 e como encontrar o Editor de Linguagem MetaQuotes, você pode verificar o tópico Escrevendo o código em MQL5 no MetaEditor. Nós aprenderemos o núcleo deste artigo através dos tópicos a seguir:

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

Através dos tópicos anteriores, nós aprenderemos como projetar um sistema de negociação simples baseado em estratégias simples do indicador SAR Parabólico e o conceito por trás dele. Através do tópico de definição do SAR Parabólico, nós aprenderemos com mais detalhes o que é o indicador SAR Parabólico ou o que ele significa e como nós podemos calcular esse indicador para aprender o conceito por trás dele. Essa abordagem facilitará o uso deste indicador de maneira efetiva. Em seguida, nós aprenderemos como usar o indicador SAR Parabólico através das estratégias simples baseadas no conceito deste indicador. Nós aprenderemos isso através do tópico da estratégia do SAR Parabólico. Em seguida, nós projetaremos um esquema para as estratégias simples mencionadas e esse esquema nos ajudará a desenvolver o nosso sistema de negociação passo a passo através de um esquema claro para as estratégias e para o que nós precisamos construir. Em seguida, nós abordaremos o tópico mais interessante deste artigo, pois nós aprenderemos como escrever o código do sistema de negociação para permitir que o computador examine nossas condições desenvolvidas e retorne o sinal de acordo com nossas estratégias. Esse processo será automático e preciso através do expert advisor que foi desenvolvido com base em nossas estratégias simples.

Antes de nós passarmos por nossos tópicos, eu aconselho aplicar o que você aprendeu sozinho, porque essa abordagem aprofundará sua compreensão e você deve testar qualquer estratégia ou qualquer coisa antes de usá-la em sua conta real, especialmente se você aprendeu de fontes educacionais, pois ela pode não ser útil para a sua negociação.

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 a nossa interessante jornada pelos tópicos deste artigo.


Definição do SAR Parabólico

Nesta parte, nós aprenderemos com mais detalhes sobre o indicador SAR Parabólico criado por Welles Wilder. o nome deste indicador veio de "Parabolic" (Parabólico) que se refere à formação do indicador no gráfico e "SAR" refere-se a "Stop And Reverse", ou você pode encontrar o seu nome como "Parabolic Time/Price system", que é o mesmo que Welles Wilder o chamou em seu livro "New Concepts in Technical Trading Systems".

O indicador SAR Parabólico é um indicador seguidor de tendência utilizado durante os mercados em tendências, este indicador permite que o instrumento reaja de acordo com uma certa quantidade de períodos para análise, os pontos de SAR podem ser usados para mover os níveis de stop. Assim, nós podemos dizer que o principal objetivo deste indicador é permitir que você defina os níveis de stops adequados de acordo com a direção ou tendência atual do mercado. Você pode ler o tópico da definição de tendência para saber mais sobre a tendência, caso você não tenha conhecimento sobre isso.

Em outras palavras, o principal objetivo do indicador SAR Parabólico é criar stops móveis. O stop é uma função de duas coisas: tempo e preço, de acordo com a função do preço, nós podemos descobrir que o stop irá subir ou descer conforme o movimento do preço. De acordo com a função do tempo, nós podemos descobrir que o stop se moverá a cada período, independentemente da direção do preço.

Então, nós precisamos primeiro determinar a tendência, e então usar as táticas do SAR Parabólico. Até agora, nós aprendemos o significado do indicador SAR Parabólico e o que ele pode nos dizer. Agora, para entendermos profundamente o conceito por detrás de indicador, nós vamos analisar como ele pode ser calculado manualmente. 

De acordo com o que nós aprendemos, é necessário determinar primeiro a tendência ou a direção do mercado e, de acordo com essa determinação, nós dividiremos o cálculo em dois casos, primeiro nós calcularemos o SAR Parabólico durante o mercado de alta, ele retornará o SAR crescente e, em seguida, calcularemos o SAR Parabólico durante o mercado de baixa, que retornará um SAR em queda. Então, nós vamos calcular essas duas coisas: O SAR crescente no caso do mercado de alta e o SAR em queda no caso do mercado de baixa.

  • O SAR crescente:
    1. Determinamos o valor anterior do SAR = o valor do SAR do período anterior.
    2. Determinamos o ponto extremo (EP) = o valor máximo da tendência de alta atual.
    3. Determinamos o fator de aceleração (AF) = valor entre 0.02 e 0.20. Depois de determinar o primeiro valor mínimo que é 0.02, o valor será determinado de acordo com o (EP), pois AF será aumentado em 0.02 toda vez que o EP criar uma nova máxima para se aproximar do valor máximo de 0.20, independentemente de quanto tempo a tendência se estenderá.
    4. Valor atual do SAR Parabólico = SAR anterior (passo 1) + AF anterior * (EP anterior - SAR anterior).

Vamos ver um exemplo do SAR crescente com os seguintes dados do mercado:

Dia Máxima Mínima
1 45 43
2 44 43.5
3 46 43
4 47 42
5 48 42.5
6 47.5 42.75
7 48 42.60
8 47.75 42.5
9 48 43
10 49 42.5
11 48.75 42.60
12 50 42
13 51 42.5
14 52 43
15 51.5 42.5
16 51 42
17 52 43
18 53 44
19 54 45

Agora nós precisamos calcular o SAR crescente, o mesmo se dará a seguir:

  1. Determinamos o valor do SAR anterior = o valor do SAR do período anterior, neste exemplo, ele será o primeiro valor destacado na cor amarela. Para simplificação, ele será igual a 42.
  2. Determinamos o ponto extremo (EP) = o valor máximo da tendência de alta atual, que será 48
  3. Obtemos a diferença entre EP e SAR, a diferença será 48 - 42 = 6
  4. Determinamos o fator de aceleração (AF) = valor entre 0.02 e 0.20, ele será igual a 0.02 para o primeiro valor
  5. Multiplicamos AF pela diferença entre EP e SAR, o valor será igual a 0.12
  6. Calculamos o SAR atual adicionando o resultado da multiplicação do AF anterior pela diferença entre EP e SAR que é o resultado do quinto passo anterior, o valor do SAR será igual a 42.12

A seguir está uma imagem de todos os valores calculados do exemplo:

Exemplo do SAR crescente

Como nós podemos ver na coluna do SAR, os valores do SAR aumentam todos os dias durante o período.

  • O SAR em queda:
    1. Determinamos o valor anterior do SAR = o valor do SAR do período anterior.
    2. Determinamos o ponto extremo (EP) = o valor mínimo da tendência de baixa atual.
    3. Determinamos o fator de aceleração (AF) = valor entre 0.02 e 0.20. Depois de determinar o primeiro valor mínimo que é 0.02, o valor será determinado de acordo com o (EP), pois AF será aumentado em 0.02 toda vez que EP criar uma nova mínima para se aproximar do valor máximo de 0.20, independentemente de quanto tempo a tendência se estenderá .
    4. Valor do SAR parabólico atual = SAR anterior (passo 1) - AF anterior * (EP anterior - SAR anterior).

Vamos ver um exemplo do SAR em queda com os seguintes dados do mercado:

Dia Máxima Mínima
1 54 45
2 53 44
3 52 43
4 51 42
5 51.5 42.5
6 52 43
7 51 42.5
8 50 42
9 48.75 42.6
10 49 42.5
11 48 43
12 47.75 42.50
13 48 42.60
14 47.50 42.75
15 48 42.50
16 47 42
17 46 43
18 44 43.50
19 45 43

Agora, nós vamos calcular os valores do SAR em queda para o período determinado, o mesmo se dará a seguir:

  1. Determinamos o valor do SAR anterior = o valor do SAR do período anterior, neste exemplo, ele será o primeiro valor destacado na cor amarela. Para simplificação, ele será igual a 51.
  2. Determinamos o ponto extremo (EP) = o valor mínimo da tendência de baixa atual, que será igual a 42
  3. Obtemos a diferença entre EP e SAR, a diferença será 51-42 = 9
  4. Determinamos o fator de aceleração (AF) = valor entre 0.02 e 0.20, ele será igual a 0.02 para o primeiro valor
  5. Multiplicamos AF pela diferença entre EP e SAR, o valor será igual a 0.18
  6. Calculamos o SAR atual subtraindo o SAR anterior do resultado do quinto passo, o valor será igual a 50.82

A seguir está uma imagem para o cálculo de todos os valores durante o período determinado:

Como nós podemos ver na coluna SAR, os valores do SAR diminuem a cada dia durante o período.

Felizmente, nós não precisamos calcular o indicador SAR Parabólico ou qualquer outro indicador porque nós temos esse indicador integrado à plataforma de negociação MetaTrader 5. Assim, o que necessitamos fazer é selecionar o indicador entre os indicadores disponíveis. Segue como nós podemos fazer isso:

Ao abrir a MetaTrader 5, você pode clicar na guia Inserir -> selecionar Indicadores -> selecionar Tendência -> selecionar Parabolic SAR

Inserção do SAR

Depois disso, nós podemos encontrar a janela de parâmetros do SAR Parabólico da mesma forma que a seguir:

Parâmetros do SAR

1- determinar o passo (AF) que será adicionado toda vez que o preço atingir novas máximas ou mínimas.

2- determinar o valor máximo de (AF). Nós aprendemos que o padrão é 0.20.

3- determinar a cor do indicador.

4- determinar o estilo do indicador.

Depois de determinar os parâmetros adequados do indicador SAR Parabólico e pressionar "OK", nós podemos encontrá-lo anexado ao gráfico da mesma forma que encontramos a seguir:

SAR anexado

Como nós podemos ver na imagem anterior, durante o movimento de alta, nós podemos encontrar o SAR Parabólico se movendo abaixo dos preços e crescendo conforme o movimento e vice-versa, durante o movimento de baixa, nós podemos encontrar o indicador SAR Parabólico se movendo acima dos preços e decrescendo conforme o movimento.


Estratégia do SAR Parabólico

Neste tópico, nós vamos aprender algumas estratégias simples que podem ser usadas pelo SAR Parabólico, não se esqueça que você tem que testar qualquer estratégia antes de usá-la em sua conta real, pois o objetivo principal é aprender o conceito de uma nova ferramenta e como projetar um sistema de negociação a partir dela.

Nós mencionamos que o indicador SAR Parabólico segue a tendência e que nós podemos usá-lo durante os mercados em tendências de alta e baixa. Então, nós determinaremos a tendência primeiro e, então, poderemos usar o SAR Parabólico de acordo.

  • Estratégia um: estratégia de tendência de alta:

De acordo com esta estratégia, para cada tick, nós precisamos comparar o valor do SAR Parabólico com os preços e decidir se há um sinal de compra ou não, pois nós podemos descobrir que o sinal de compra será gerado quando o valor do SAR Parabólico for menor que a mínima do preço, nós podemos ter um sinal de take profit quando o valor do SAR ficar acima da máxima do preço.

Valor do SAR < mínima do preço = compra

Valor do SAR > máxima do preço = take profit

  • Estratégia dois: estratégia de tendência de baixa:

De acordo com esta estratégia, para cada tick, nós precisamos comparar o valor do SAR Parabólico com os preços e decidir se há um sinal de venda ou não, pois nós podemos descobrir que o sinal de venda será gerado quando o valor do SAR Parabólico for maior que a máxima do preço, nós podemos ter um sinal de take profit quando o valor do SAR ficar abaixo da mínima do preço.

Valor do SAR > máxima do preço = venda

Valor do SAR < mínima do preço = take profit

  • Estratégia três: sinal de compra com a estratégia do stop móvel:

De acordo com essa estratégia, para cada tick, nós precisamos comparar o valor do SAR com os preços e decidir se nós temos um sinal de compra, e determinar os stops móveis para cada tick de acordo com o valor do indicador SAR Parabólico. Portanto, será uma compra quando o valor do SAR for menor que a mínima do preço, nós obteremos o nível do stop móvel de acordo com o valor do indicador.

Valor do SAR < mínima do preço = compra --> valor do stop móvel de acordo com o valor do SAR

  • Estratégia quatro: sinal de venda com a estratégia do stop móvel:

Estratégia quatro: sinal de venda com a estratégia do stop móvel: Portanto, será uma venda quando o valor do SAR for maior que a máxima do preço, nós obteremos o nível do stop móvel de acordo com o valor do SAR.

Valor do SAR > máxima do preço = venda --> valor do stop móvel conforme o valor do SAR.


Esquema da estratégia do SAR Parabólico

Neste tópico, nós projetaremos um esquema para cada estratégia para nos ajudar a criar o sistema de negociação, e esse esquema organizará e definirá o que nós precisamos que o programa ou o sistema faça passo a passo.

  • Estratégia um: estratégia de tendência de alta:

Informaremos ao expert advisor as instruções sobre o que precisa ser verificado e o que precisa ser retornado caso as condições sejam atendidas. Nesta estratégia em específico, o EA verificará o valor do SAR e o comparará com o nível de preço. É necessário determinar se o valor do SAR é menor que o preço mínimo ou não, caso contrário, o EA não deve retornar nada. Em caso afirmativo, o EA deve retornar um sinal de compra. Então, você precisa comparar os dois valores novamente. Se o valor do SAR não for maior que a máxima do preço, o EA não deve retornar nada. Se o indicador estiver acima da máxima, o expert deve retornar um sinal de take profit.

Valor do SAR < mínima do preço = compra

Valor do SAR > máxima do preço = take profit

 SAR - esquema da estratégia de tendência de alta

  • Estratégia dois: estratégia de tendência de baixa:

Nesta estratégia em específico, o EA verificará o valor do SAR e irá comparar com o nível de preço. É necessário determinar se o valor do SAR é maior que a máxima do preço ou não, caso contrário, o EA não deve retornar nada. Em caso afirmativo, o EA deve retornar um sinal de venda. Então, devemos comparar os dois valores novamente. Se o valor do SAR não for menor que a mínima do preço, o EA não deve retornar nada. Se o indicador estiver abaixo da mínima, o expert deve retornar um sinal de take profit.

Valor do SAR > máxima do preço = venda

Valor do SAR < mínima do preço = take profit

Esquema da estratégia do SAR de tendência de baixa

  • Estratégia três: sinal de compra com a estratégia do stop móvel:
  • Para escrever o código desta estratégia, o expert advisor deve verificar o valor do SAR e retornar o valor do stop móvel. Verificaremos este valor com a máxima e mínima e determinaremos se o valor do SAR é menor que a mínima do preço ou não, caso contrário, o EA retorna apenas o valor do stop móvel e, em caso afirmativo, nós precisamos que ele retorne um sinal de compra e o valor do stop móvel. 

    apenas o nível do stop móvel --> valor do SAR < mínima do preço = compra --> valor do stop móvel de acordo com o valor do SAR

    Compra com o esquema da estratégia de stops

    • Estratégia quatro: sinal de venda com a estratégia do stop móvel:

    Para escrever o código desta estratégia, o expert advisor deve verificar o valor do SAR e retornar o valor do stop móvel. Verificaremos este valor com a máxima e mínima e determinaremos se o valor do SAR é maior que a máxima do preço ou não, caso contrário, o EA retorna apenas o valor do stop móvel e, em caso afirmativo, nós precisamos que ele retorne um sinal de venda e o valor do stop móvel.

    apenas o valor do stop móvel --> valor do SAR > máxima do preço = venda --> valor do stop móvel conforme o valor do SAR

    Esquema da estratégia de venda com stops

    Sistema de negociação do SAR Parabólico

    Neste tópico interessante, nós aprenderemos a escrever o código de cada estratégia mencionada, utilizando a linguagem MQL5 para a criação de um sistema de negociação baseado em cada uma delas. O resultado deverá ser um programa que será executado na plataforma MetaTrader 5 de maneira automática e precisa.

    Primeiro, nós aprenderemos como escrever um código para projetar um sistema de negociação simples para mostrar um comentário com o valor do SAR Parabólico e, para escrever esse expert simples, seguiremos com as etapas abaixo.

    • Criamos uma matriz para o SAR Parabólico e nós usaremos a função "double":
    double SARArray[];
    • Ordenamos a matriz dos dados atuais usando a função "ArraySetAsSeries" e retornamos uma booleana:
    ArraySetAsSeries(SARArray,true);
    • Definimos o indicador SAR usando a função "iSAR":
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • Preenchemos o SARarray com a definição do SAR usando a função "CopyBuffer":
    CopyBuffer(SARDef,0,0,3,SARArray);
    • Calculamos o valor do SAR usando a função "NormalizeDouble" após criar uma variável para o valor do SAR pela função "double":
    double SARValue=NormalizeDouble(SARArray[0],5);
    • Saída do gráfico com o valor do SAR usando a função Comment:
    Comment("Parabolic SAR value is ",SARValue);

    Depois disso, podemos encontrar o código como um bloco completo da mesma forma que o seguinte:

    //+------------------------------------------------------------------+
    //|                                  Simple Parabolic SAR 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()
      {    
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
    
       //chart comment with the signal
       Comment("Parabolic SAR value is ",SARValue);
      }
    //+------------------------------------------------------------------+

    Depois de escrever e compilar este código, nós podemos encontrá-lo no navegador da mesma forma que a imagem a seguir:

    Sistema SAR parabólico simples - Nav.

    Após abrir o arquivo clicando duas vezes ou arrastando-o e soltando-o no gráfico, obtemos os resultados do sistema, então nós encontraremos a seguinte janela:

     Sistema SAR parabólico simples - janela

    Em seguida, nós marcaremos "Permitir a Negociação Automatizada" e pressionamos ok. Nós podemos encontrar o sistema ou o expert advisor anexado ao gráfico da mesma forma que o seguinte:

    Sistema SAR parabólico simples - anexado

    E a imagem a seguir é um exemplo dos sinais gerados deste sistema:

    Sistema SAR parabólico simples

    • Estratégia um: estratégia de tendência de alta:

    Da mesma forma que eu mencionei nesta estratégia, nós precisamos definir nossas condições para o sistema de negociação gerar um sinal de compra quando o valor do SAR for menor que a mínima do preço e gerar um sinal de take profit quando o valor do SAR for maior que a máxima do preço, a seguir encontramos como codificar essa estratégia:

    • Criamos uma variável do tipo string para o sinal usando a função "string":
    string signal="";
    • Criamos uma matriz para preço usando a função "MqlRates", ela armazena as informações sobre os preços, volumes e spread:
    MqlRates PriceArray[];
    • Ordenamos a matriz de preços dos dados atuais usando a função "ArraySetAsSeries":
    ArraySetAsSeries(PriceArray,true);
    • Preenchemos a matriz com os dados do preço usando a função "CopyRates", esta função obtém os dados do histórico da estrutura "MqlRates" após armazenar os dados como um inteiro:
    int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
    • Criamos outra matriz para o valor do SAR usando a função "double":
    double SARArray[];
    • Ordenamos a matriz SAR dos dados atuais usando a função "ArraySetAsSeries":
    ArraySetAsSeries(SARArray,true);
    • Definimos o indicador SAR para o EA usando a função "iSAR", pois ela retorna o manipulador do indicador SAR Parabólico após armazenar "SARDef" como um inteiro para se referir à definição do SAR:
    int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
    • Preenchemos o SARarray com a SARDef usando a função "CopyBuffer" já que ele obtém os dados do buffer específico do indicador:
    CopyBuffer(SARDef,0,0,3,SARArray);
    • Calculamos o valor do SAR dos últimos dados usando a função "NormalizeDouble" que retorna o valor do tipo double: 
    double SARValue=NormalizeDouble(SARArray[0],5);
    • Definimos as condições do sinal de "compra" usando a função "if", devemos retornar o sinal "Buy" se o valor do SAR for menor que a mínima do preço:
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
    • Definimos as condições do sinal de "take profit" usando a função "if", devemos retornar o sinal "Take Profit" se o valor do SAR for maior que a máxima do preço:
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
    • Comentário do sinal gerado no gráfico usando a função "Comment":
    Comment("The signal is ",signal);

    Através das etapas anteriores, nós criamos um sistema de negociação para esta estratégia a seguir encontramos o seu código completo:

    //+------------------------------------------------------------------+
    //|                      Parabilic SAR System - 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
    
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue > PriceArray[1].high)
       {
          signal="Take Profit";
       }
       
       //comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+

    Após compilar este código, nós podemos encontrá-lo na janela do navegador igual à imagem a seguir:

    Tendência de alta - anexado - Nav

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

     SAR de tendência de alta - janela

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

    Tendência de alta - anexado

    Após isso, nós podemos encontrar os sinais gerados no gráfico como comentários iguais às imagens a seguir como exemplos de testes:

    • Sinal de compra:

    Tendência de alta - sinal de compra

    • Sinal do take profit:

    Tendência de alta - sinal do TP

    • Estratégia dois: estratégia de tendência de baixa:

    Da mesma forma que eu mencionei nesta estratégia, nós precisamos definir nossas condições para o sistema de negociação gerar um sinal de venda quando o valor do SAR for maior que a máxima do preço e gerar um sinal de take profit quando o valor do SAR for menor que a mínima do preço, a seguir encontramos como codificar essa estratégia:

    //+------------------------------------------------------------------+
    //|                    Parabolic SAR System - 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //take profit signal
       //if current SAR value above candle 1 high
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }
       
       //chart comment with the signal
       Comment("The signal is ",signal);
      }
    //+------------------------------------------------------------------+
    • As diferenças no código desta estratégia são:
      • Condições do sinal de venda - quando o valor do SAR se torna maior que a máxima do preço:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
      • Condições do sinal take profit - quando o valor do SAR se torna menor que a mínima do preço:
       if(SARValue < PriceArray[1].low)
       {
          signal="Take Profit";
       }

    Depois de compilar este código, nós vamos encontrá-lo na janela do navegador como um expert advisor da mesma forma que a imagem a seguir:

    Tendência de baixa do SAR - Nav

    Após arrastar e soltar o arquivo no gráfico para executar o expert, a seguinte janela será aberta:

    Tendência de baixa do SAR - janela

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

    Tendência de baixa do SAR - anexado

    Após isso, nós podemos encontrar os sinais gerados no gráfico como comentários iguais às imagens a seguir como exemplos de testes:

    • Sinal de venda:

    Tendência de baixa do SAR - Sinal de venda

    • Sinal do take profit:

    Tendência de baixa do SAR - sinal do TP

    • Estratégia três: sinal de compra com a estratégia do stop móvel:

    Nesta estratégia, o EA deve mostrar um sinal de compra e os stops móveis como comentários no gráfico de acordo com os preços e o valor do SAR Parabólico. Ele deverá mostrar o valor dos stops móveis no gráfico e gerar qualquer novo sinal de caso o valor do SAR ficar abaixo da mínima do preço. O código a seguir é para desenvolver o sistema de negociação para esta estratégia:

    //+------------------------------------------------------------------+
    //|         Parabolic SAR System - Buy signal with training stop.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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue < PriceArray[1].low)
       {
          signal="Buy";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    • A diferença está em:
      • Adicionamos o valor do stop móvel que é o valor do SAR em uma nova linha como um comentário no gráfico:
    Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);

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

    Tendência de alta do SAR - Sinal de compra com stop móvel - Nav

    Quando nós quisermos executar este expert no gráfico, nós vamos arrastá-lo e soltá-lo no gráfico e então a seguinte janela se abrirá:

    Tendência de alta do SAR - Sinal de compra com stop móvel - janela

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

    Tendência de alta do SAR - Sinal de compra com stop móvel - anexado

    As figuras a seguir são exemplos dos sinais gerados de acordo com o teste desta estratégia:

    Tendência de alta do SAR - Sinal de compra com stop móvel1

    A imagem a seguir mostra como o valor do stop móvel aumentará com o preço:

    Tendência de alta do SAR - sinal de compra com stop móvel 2

    • Estratégia quatro: Sinal de venda com a estratégia do stop móvel:

    Nesta estratégia, o EA deve mostrar um sinal de venda e os stops móveis como comentários no gráfico de acordo com os preços e o valor do SAR Parabólico. Ele deverá mostrar o valor dos stops móveis no gráfico e gerar qualquer novo sinal de venda caso o valor do SAR ficar acima da máxima do preço. O código a seguir é para desenvolver o sistema de negociação para esta estratégia:

    //+-----------------------------------------------------------+
    //| Parabolic SAR System - Sell signal with trailing stop.mq5 |
    //| Copyright 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()
      {  
       //create an string variable for signal
       string signal="";
       
       //create a price array
       MqlRates PriceArray[];
       
       //sort array from the current data
       ArraySetAsSeries(PriceArray,true);
       
       //fill array with price data
       int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
       
       //create a SAR array
       double SARArray[];
       
       //define SAR EA
       int SARDef=iSAR(_Symbol,_Period,0.02,0.2);
       
       //sort array from current data
       ArraySetAsSeries(SARArray,true);
       
       //fill SARArray with SARDef 
       CopyBuffer(SARDef,0,0,3,SARArray);
       
       //calculate value of last data
       double SARValue=NormalizeDouble(SARArray[0],5);
       
       //buy signal
       //if current SAR value below candle 1 low
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }
       
       //chart comment with the signal and trailing Stop
       Comment("The signal is ",signal,"\n", "Trailing Stop is ",SARValue);
      }
    //+------------------------------------------------------------------+
    • A diferença está em:
      • Condições do sinal de venda:
       if(SARValue > PriceArray[1].high)
       {
          signal="Sell";
       }

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

    Tendência de baixa do SAR - Sinal de venda com stop móvel - Nav

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

    Tendência de baixa do SAR - Sinal de venda com stop móvel - janela

    Após pressionar "OK", o expert será anexado:

    Tendência de baixa do SAR - Sinal de venda com stop móvel - anexado

    As imagens a seguir são exemplos dos sinais gerados:

    Tendência de baixa do SAR - Sinal de venda com stop móvel 1

    A imagem a seguir mostra como o valor do stop móvel diminuirá com o preço:

    Tendência de baixa do SAR - Sinal de venda com stop móvel 2


    Conclusão

    Agora, nós podemos dizer que aprendemos alguns conceitos básicos do indicador técnico Parabolic SAR em detalhes, pois aprendemos o que é o indicador e o que ele mede, e como nós podemos calculá-lo manualmente para entender o conceito por trás dele. 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, criamos programas para serem executados na plataforma MetaTrader 5.

    Espero que você tenha tentado codificar essas estratégias sozinho, pois isso aumentará a sua curva de aprendizado. A prática é um fator muito importante para dominar coisa novas. Assemelhamos melhor as coisas quando tentamos aplicar os conhecimentos adquiridos com a prática.

    Eu espero que você ache este artigo útil para você e sua negociação por meio de informações incluídas ou abrindo seus olhos para novas ideias ou insights que podem ser usados em sua negociação. Eu aconselho você a testar qualquer coisa que você saiba antes de usar em uma conta real para se certificar de que ela é adequada para a sua negociação e seu plano.


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

    Ciência de Dados e Aprendizado de Máquina (Parte 03): Regressões Matriciais Ciência de Dados e Aprendizado de Máquina (Parte 03): Regressões Matriciais
    Desta vez nossos modelos estão sendo feitos por matrizes, o que permite flexibilidade ao mesmo tempo que nos permite fazer modelos poderosos que podem manipular não apenas cinco variáveis independentes, mas também muitas variáveis, desde que permaneçamos dentro dos limites de cálculos de um computador, este artigo será uma leitura interessante, isso é certo.
    DoEasy. Controles (Parte 5): Objeto base WinForms, controle Painel, parâmetro AutoSize DoEasy. Controles (Parte 5): Objeto base WinForms, controle Painel, parâmetro AutoSize
    Neste artigo, criaremos um objeto que serve de base para todos os objetos WinForms da biblioteca e começaremos a preparar a propriedade AutoSize do objeto WinForms "Painel", que dimensiona automaticamente o objeto de acordo com seu conteúdo.
    Redes neurais de maneira fácil (Parte 15): Agrupamento de dados via MQL5 Redes neurais de maneira fácil (Parte 15): Agrupamento de dados via MQL5
    Continuamos a estudar o método de agrupamento. Neste artigo, criaremos uma nova classe CKmeans para implementar um dos métodos de agrupamento k-médias mais comuns. Com base nos resultados dos testes, podemos concluir que o modelo é capaz de identificar cerca de 500 padrões.
    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.