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

Como desenvolver um sistema de negociação baseado no indicador Estocástico

MetaTrader 5Negociação | 27 julho 2022, 09:04
515 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Uma das coisas mais bonitas na negociação da análise técnica é que nós temos muitas ferramentas e nós podemos usar uma ferramenta individualmente ou combinar mais de uma ferramenta e isso pode ser útil e lucrativo para nós. Além disso, nós temos uma ferramenta incrível que pode ser muito útil para melhorar os nossos resultados e desempenho de negociação. Esta ferramenta é a programação que nos permite criar programas que podem ser muito úteis: damos instruções ao computador para fazer o que nós precisamos de forma automática e precisa de acordo com as nossas condições.

Este artigo é outra contribuição para tentar aprender e ensinar o que pode ser útil neste contexto de negociação técnica e programação de estratégias de negociação lucrativas. Nós discutiremos através deste artigo uma nova ferramenta que pode ser útil em nossas negociações, o indicador "Oscilador Estocástico" que é um dos mais populares na negociação usando a análise técnica. Se você leu meus outros artigos aqui, você deve saber que eu gosto de aprender e ensinar as raízes das coisas para entender todos os detalhes e o mecanismo das coisas o máximo que puder. Então, eu vou discutir com você este tópico usando o mesmo método. Os seguintes tópicos serão abordados neste artigo:

    1. Definição do Estocástico
    2. Estratégia do Estocástico
    3. Esquema do Estocástico
    4. Sistema de negociação do Estocástico
    5. Conclusão

      Através do tópico "Definição do Estocástico", nós aprenderemos detalhadamente sobre o indicador Oscilador Estocástico para saber o que é e o que ele mede. Em seguida, na "Estratégia do Estocástico", nós aprenderemos algumas estratégias simples que nós podemos usar. Depois disso, nós projetaremos um esquema para essas estratégias simples para nos ajudar a codificá-las em MQL5 para que nós possamos usá-las na MetaTrader 5 — isso será considerado no tópico "Esquema do Estocástico". Em seguida, nós continuaremos aprendendo como escrever um código para projetar um sistema de negociação para essas estratégias simples — isso será feito no tópico "Sistema de negociação do Estocástico".

      Nós usaremos a plataforma de negociação MetaTrader 5 e a linguagem MetaQuotes, que está integrada à MetaTrader 5. A plataforma pode ser baixada no seguinte link: https://www.metatrader5.com/pt/download

      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, nós vamos começar nossa nova jornada sobre um novo tópico interessante, vamos fazê-lo.


      Definição do Estocástico

      Nesta parte, nós aprenderemos com mais detalhes sobre um dos indicadores técnicos mais populares, que é o indicador Oscilador Estocástico. Foi desenvolvido por George Lane e isso é mencionado no livro "New Trading Systems and Methods" de Perry J. Kaufman. Mas há outras opiniões sobre isso, uma delas é que não está absolutamente claro quem criou o indicador Estocástico — isso é mencionado no livro "Technical Analysis, The Complete Resource for Financial Market Technicians" de Charles D. Kirkpatrick e Julie R. Dahlquist e a outra opinião é que o indicador foi popularizado por George Lane conforme mencionado no livro "Technical Analysis of The Financial Markets" de John J. Murphy.

      A ideia por trás do indicador estocástico é a seguinte: observou-se que durante a tendência de alta, os preços de fechamento tendem a fechar mais perto da parte superior da faixa de preço para um período específico e vice-versa, durante a tendência de baixa, os preços de fechamento tendem a fechar mais próximo da parte inferior da faixa de preço por um período específico. Ele mede a relação entre o preço de fechamento atual e a máxima e mínima dos preços de um período específico.

      O indicador Oscilador Estocástico consiste em duas linhas e essas duas linhas oscilam entre o nível zero e o nível 100:

      • A linha %K é a linha mais rápida.
      • A linha %D é a linha mais lenta, ela é é suavizada.

      Há mais de uma versão para o indicador Oscilador Estocástico. As versões mais populares são as duas seguintes:

      • O Estocástico rápido.
      • O Estocástico lento.

      Nós veremos a diferença nos métodos nos quais o indicador Oscilador Estocástico pode ser calculado.

      A seguir estão as etapas para calcular o indicador Oscilador Estocástico:

      1. Determinar o período necessário para calcular o indicador.
      2. Determinar o valor máximo do período determinado.
      3. Determinar o valor mínimo do período determinado.
      4. Obtemos %K do estocástico rápido = 100*((fechamento atual-menor mínima)/(maior máxima-menor mínima))
      5. Obtemos %D do estocástico rápido = 3 períodos da média móvel de %K do estocástico rápido
      6. Obtemos %K do estocástico lento = %D do estocástico rápido
      7. Obtemos %D do estocástico lento = 3 períodos da média móvel de (%K do estocástico lento que é o mesmo de %D do estocástico rápido) 

      Agora, vamos ver um exemplo de como aplicar esses cálculos para obter o indicador Oscilador Estocástico. Se tivermos os seguintes dados:

      Dias Fechamento Máxima Mínima
      1 100 110 90
      2 130 140 120
      3 140 160 120
      4 130 150 110
      5 120 140 100
      6 140 150 130
      7 160 170 150
      8 170 180 160
      9 155 170 150
      10 140 170 130
      11 160 180 155
      12 180 190 175
      13 190 220 190
      14 200 230 200
      15 210 215 205
      16 200 200 190
      17 190 195 180
      18 185 105 180
      19 195 210 185
      20 200 220 190

      Para calcular o indicador Oscilador Estocástico, nós seguiremos as etapas mencionadas anteriormente, portanto, nós fazemos o seguinte:

      • Determinamos o período que será = 14, então nós precisamos primeiro ter 14 períodos de negociação para começar a calcular o indicador.
      • Determinamos a maior máxima dos últimos 14 períodos, será (230) e a imagem a seguir nos mostrará isso para o primeiro valor e o restante dos dados:

       Maior Máxima de 14 períodos

      • Determinamos a menor mínima dos últimos 14 períodos, será (90) e a imagem a seguir nos mostrará isso para o primeiro valor e o restante dos dados:

      Menor Mínimo de 14 períodos

      • Obtemos o %K do estocástico rápido = 100*((fechamento atual - menor mínima)/(maior máxima - menor mínima)), 
      • Obtemos o %D de estocástico rápido = 3 períodos da média móvel de %K do estocástico rápido,
      • A imagem a seguir nos mostrará os resultados do cálculo para os dados disponíveis:

      Rápido - K-D

      • Obtemos o %K do estocástico lento = %D do estocástico rápido,
      • Obtemos o %D do estocástico lento = 3 períodos da média móvel de %K do estocástico lento,
      • A imagem a seguir nos mostrará os resultados do cálculo para os dados disponíveis:

      Lento - K-D

      Através das etapas anteriores, nós calculamos o indicador Oscilador Estocástico manualmente. Felizmente, nós não precisamos calculá-lo manualmente todas as vezes, pois nós temos um indicador embutido pronto para uso na plataforma de negociação MetaTrader5. Nós podemos simplesmente escolhê-lo na lista de indicadores disponíveis na plataforma clicando na guia Inserir da MetaTrader 5, conforme mostrado na figura a seguir:

      Inserção do Estocástico

      Após escolher o "Oscilador Estocástico", será aberta a seguinte janela para os parâmetros do indicador:

       Janela de inserção do Estocástico

      Parâmetros do indicador:

      1. Determinar o período
      2. Determinar o período da média móvel para %D rápido
      3. Determinar o período da média móvel para %D lento
      4. Determinar o preço apresentado para medir a relação com ele
      5. Determinar o tipo da média móvel que será usado no cálculo
      6. Determinar a cor da linha, o estilo da linha e a espessura da linha de %K
      7. Determinar a cor da linha, o estilo da linha e a espessura da linha de %D

      Após determinar os parâmetros de acordo com as suas preferências, o indicador será anexado ao gráfico e aparecerá como na figura a seguir:

      Estocástico no gráfico

      Após inserir o Oscilador Estocástico, nós podemos encontrar conforme a figura anterior que nós temos o indicador plotado na janela inferior com 2 linhas (%K, %D) oscilando entre zero e 100 e nós podemos encontrá-lo igual ao abaixo:

      • Stoch(14, 3,3): representa o nome do indicador e os parâmetros escolhidos: 14 períodos, 3 para a média móvel de %D do estocástico rápido, 3 para a média móvel de %D do estocástico rápido.
      • 36.85: representa o valor %k
      • 38.28: representa o valor %D

      De acordo com o cálculo do indicador Oscilador Estocástico, ele se moverá na direção do mercado de uma forma específica na maioria das vezes, pois nós sabíamos que os preços de fechamento tendem a fechar perto da faixa de preço superior ou inferior de um período específico de acordo com o movimento do mercado.

      Durante a tendência de alta:

      Uma tendência de alta é uma direção de mercado na qual os preços sobem devido ao controle dos compradores ou touros. Normalmente, os preços criam mínimas e máximas ascendentes. Nesse caso, nós podemos chamar esse mercado de mercado de alta.

      Nós podemos descobrir durante essa direção de mercado que na maioria das vezes, os preços de fechamento tendem a fechar perto da parte superior da faixa de preço durante esse período de movimento de "Tendência de alta" e o indicador estocástico oscilará entre o nível 50 e o nível 100. Um exemplo dessa situação é mostrado na imagem a seguir:

      Estocástico durante a tendência de alta

      Durante a tendência de baixa:

      Uma tendência de baixa é uma direção de mercado na qual os preços caem devido ao controle dos vendedores ou ursos. Os preços criam máximas e mínimas descendentes. Nesse caso, nós podemos chamar esse mercado de mercado de baixa.

      Durante essa direção de mercado, na maioria das vezes, os preços de fechamento tendem a fechar perto da faixa inferior do movimento dos preços durante esse período de movimento de "tendência de baixa". Assim, nós podemos descobrir que o indicador estocástico se move entre os níveis 50 e 0 durante o período de movimento de baixa. Um exemplo dessa situação é mostrado na imagem a seguir:

      Estocástico durante a tendência de baixa

      Durante as lateralizações:

      Uma lateralização é um movimento de preço que é um movimento sem uma direção clara para cima ou para baixo. Ela pode ser considerada como um equilíbrio entre os compradores e vendedores ou touros e ursos. Ela é qualquer movimento, exceto uma tendência de alta ou uma tendência de baixa.

      Durante esse movimento lateral não há movimento claro para cima ou para baixo, os preços tendem a fechar perto da faixa média de preços para esse período de movimento "lateralizado" e, portanto, nós podemos descobrir que na maioria das vezes, o estocástico se move em torno dos níveis 20 e 80 e a imagem a seguir é um exemplo disso:

      Estocástico durante as lateralizações

      Agora que nós analisamos como o indicador estocástico pode atuar em diferentes movimentos do mercado. Agora, nós precisamos aprender como nós podemos usá-lo a nosso favor, e é isso que vamos aprender no tópico a seguir.


      Estratégia do Estocástico

      Nesta parte, nós falaremos sobre como nós podemos usar esse indicador por meio de estratégias simples. Nós podemos obter os sinais do indicador estocástico de acordo com a tendência do mercado e essas estratégias são estratégia de tendência de alta, estratégia de tendência de baixa e estratégia lateralizada.

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

      De acordo com essa estratégia, nós precisamos verificar se a linha %K e a linha %D estão abaixo do nível 50, então, o sinal de compra será gerado quando a linha %K cruzar acima da linha %D. Nós podemos obter lucro de acordo com outra ferramenta eficaz, como a ação do preço, procurando por mínimas descendentes, por exemplo.

      %K, %D < 50 --> %K > %D = sinal de compra
        • Estratégia dois: estratégia de tendência de baixa

        De acordo com essa estratégia, nós precisamos verificar se a linha %K e a linha %D estão acima do nível 50, então, o sinal de venda será gerado quando a linha %K cruzar abaixo da linha %D. Nós podemos obter lucro de acordo com outra ferramenta eficaz, como a ação do preço, procurando por máximas ascendentes, por exemplo.

        %K, %D > 50 --> %K < %D = sinal de venda
          • Estratégia três: estratégia lateralizada
            • O sinal de compra:

          De acordo com essa estratégia, nós precisamos verificar se a linha %K e a linha %D estão abaixo do nível 20, então, o sinal de compra será gerado quando a linha %K cruzar acima da linha %D. Quando a linha %K e a linha %D estiverem acima de 80, o sinal de lucro será gerado quando a linha %K cruzar abaixo da linha %D.

          %K, %D < 20 --> %K > %D = sinal de compra
          %K, %D > 80 --> %K < %D = take profit

              • O sinal de venda

                De acordo com essa estratégia, nós precisamos verificar se a linha %K e a linha %D estão acima do nível 80, então, o sinal de venda será gerado quando a linha %K cruzar abaixo da linha %D. Quando a linha %K e %D estiverem abaixo do nível 20, o sinal de lucro será gerado quando a linha %K cruzar acima da linha %D.

                %K, %D > 80 --> %K < %D = sinal de venda
                %K, %D < 20 --> %K > %D = take profit

                EU gostaria de mencionar aqui que existem muitas estratégias de estocástico que podem ser usadas, desde estratégias simples a complicadas e esse indicador pode ser usado individualmente ou combinado com outra ferramenta de forma que possa dar melhores resultados, mas aqui, nós mencionamos apenas estratégias simples para entender como esse indicador pode ser usado.


                  Esquema do Estocástico

                  Nesta parte, nós projetaremos um plano para as estratégias mencionadas anteriormente que devem nos ajudar a criar facilmente um sistema de negociação. Este esquema será uma diretriz passo a passo para identificar o que nós precisamos que o programa faça exatamente.

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

                  %K, %D < 50 --> %K > %D = sinal de compra

                  Primeiro, nós precisamos que o programa verifique (%K, %D) e decida se está abaixo ou acima do nível 50, então se estiver abaixo do nível 50, ele não fará nada até que a linha %K cruze acima da linha %D para dar o sinal de compra. Se (%K, %D) estiver acima ou igual ao nível 50, o programa não fará nada.

                  A imagem a seguir é um esquema para essa estratégia de tendência de alta:

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

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

                  %K, %D > 50 --> %K < %D = sinal de venda

                  Primeiro, nós precisamos que o programa verifique (%K, %D) e decida se está acima ou abaixo do nível 50, então se estiver acima do nível 50, ele não fará nada até que a linha %K cruze abaixo da linha %D para dar o sinal de venda. Se (%K, %D) estiver abaixo ou igual ao nível 50, o programa não fará nada.

                  A imagem a seguir é um esquema dessa estratégia:

                  SSS- esquema da estratégia de tendência de baixa

                  • Estratégia três: estratégia lateralizada

                  O sinal de compra:

                  %K, %D < 20 --> %K > %D = sinal de compra

                  %K, %D > 80 --> %K < %D = take profit

                  Primeiro, nós precisamos que o programa verifique (%K, %D) e decida se está abaixo ou acima do nível 20, então se estiver abaixo do nível 20, ele esperará para não fazer nada até que a linha %K cruze acima da linha %D para dar o sinal de compra. Se (%K, %D) estiver acima ou igual ao nível 20, o programa não fará nada. Então, o programa verificará (%K, %D) e decidirá se está acima ou abaixo do nível 80, então se estiver acima do nível 80, ele não fará nada até que a linha %K cruze abaixo da linha %D para dar o sinal de lucro. Se (%K, %D) estiver abaixo ou igual ao nível 80, o programa não fará nada.

                  A imagem a seguir é um modelo para essa estratégia:

                  SSS- estratégia lateralizada - esquema de compra

                  O sinal de venda:

                  %K, %D > 80 --> %K < %D = sinal de venda

                  %K, %D < 20 --> %K > %D = take profit

                  Primeiro, nós precisamos que o programa verifique (%K, %D) e decida se está acima ou abaixo do nível 80, então se estiver acima do nível 80, ele não fará nada até que a linha %K cruze abaixo da linha %D para dar o sinal de venda. Se (%K, %D) estiver abaixo ou igual ao nível 80, o programa não fará nada. Então, o programa verificará (%K, %D) e decidirá se está abaixo ou acima do nível 20, então se estiver abaixo do nível 20, ele não fará nada até que a linha %K cruze acima da linha %D para dar o sinal de lucro. Se (%K, %D) estiver acima ou igual ao nível 20, o programa não fará nada.

                  A imagem a seguir é um esquema para este sinal de venda da estratégia lateralizada:

                  SSS - estratégia lateralizada - esquema de venda

                  Até agora, nós consideramos estratégias simples que podem ser usadas pelo indicador estocástico e nós projetamos os esquemas para essas estratégias para nos ajudar a criar um sistema de negociação. Na próxima parte, nós aprenderemos como projetar esse sistema de negociação.


                  Sistema de negociação do Estocástico

                  Agora, nós iniciaremos uma parte interessante neste artigo para aprender a codificar um sistema de negociação que funcione com essas estratégias. A programação é uma ótima ferramenta que nos ajuda a negociar de forma eficaz, pois nos ajuda a executar nosso plano e estratégia de maneira disciplinada, sem envolver emoções em nossa decisão de negociação, além da precisão na execução, mas o mais importante é testar qualquer estratégia antes de executá-la. Vamos escrever o nosso sistema de negociação de acordo com as estratégias discutidas anteriormente...

                  Primeiro, nós precisamos escrever um código para um programa que forneça os valores das linhas do estocástico no gráfico, e através da escrita deste código nós aprenderemos linha por linha o que estamos escrevendo para podermos, após esta etapa, entender e criar o sistema de negociação.

                  Primeiros passos, nós precisamos criar matrizes do tipo double para a linha %K e a linha %D que apresentam valores com uma parte fracionária:

                  double Karray[];
                  double Darray[];
                  

                  Então, nós precisamos classificar essas matrizes criados a partir dos dados atuais, usando a função "ArraySetAsSeries":

                  ArraySetAsSeries(Karray, true);
                  ArraySetAsSeries(Darray, true);

                  Então, nós precisamos definir o indicador "Stochastic" e usaremos a função "iStochastic" após criar uma variável com "StochDef" para ser igual à definição "Stochastic":

                  int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);

                  Então, nós precisamos preencher a matriz com os dados dos preços e usaremos a função "CopyBuffer":

                  CopyBuffer(StochDef,0,0,3,Karray);
                  CopyBuffer(StochDef,1,0,3,Darray);
                  

                  Em seguida, nós calcularemos o valor da linha %K e da linha %D dos dados atuais usando o tipo "float" para diminuir o tamanho das frações e aproximá-las:

                  float KValue = Karray[0];
                  float DValue = Darray[0];
                  

                  A última linha de código será para deixar o programa apresentar o valor da linha %K e o valor da linha %D no gráfico em duas linhas e nós usaremos a função "Comment":

                  Comment("%K value is ", KValue,"\n""%D Value is ",DValue);

                  A seguir está o mesmo código anterior, mas em um bloco para poder copiá-lo em apenas uma etapa, se você precisar:

                  //+------------------------------------------------------------------+
                  //|                       Simple Stochastic System - Lines Value.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 for %K line and %D line   
                     double Karray[];
                     double Darray[];
                     
                  //sorting arrays from the current data   
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                  
                  //defining the stochastic indicator   
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                  
                  //filling arrays with price data   
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                  
                  //calculating value of %K and %D line of cuurent data  
                     float KValue = Karray[0];
                     float DValue = Darray[0];
                     
                  //commenting calcualted values on the chart   
                     Comment("%K value is ",KValue,"\n"
                     "%D Value is ",DValue);
                        
                    }
                  //+------------------------------------------------------------------+

                  Até agora, nós escrevemos o código de um programa que pode apresentar os valores atuais das linhas do indicador estocástico no gráfico; agora nós precisamos executar este programa em nossa plataforma de negociação (MetaTrader5), já que podemos encontrá-lo na janela do navegador após a sua compilação:

                  Nav 1

                  Após arrastar e soltar o arquivo Simple Stochastic System - Lines Value, a seguinte janela será aberta:

                  SSS - janela do Lines Value


                  Após pressionar OK, o programa ou o (Expert Advisor) será anexado ao gráfico da mesma forma que a imagem abaixo:

                  SSS - Lines Value anexado

                  Então, nós podemos ver que o programa gera valores das linhas do estocástico iguais o da figura abaixo:

                  SSS- lines value

                  Agora, nós vamos começar a escrever o código para criar um sistema de negociação para as nossas estratégias, e o que precisamos fazer aqui é criar um sistema de negociação que seja capaz de apresentar o sinal adequado como um comentário no gráfico de acordo com a estratégia utilizada. Vamos começar a fazer isso...

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

                  %K, %D < 50 --> %K > %D = sinal de compra

                  O código a seguir é para criar um sistema de negociação para executar o que nós precisamos de acordo com essa estratégia de tendência de alta:

                  //+------------------------------------------------------------------+
                  //|                  Simple Stochastic 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Uptrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+

                  Como você pode ver, as diferenças aqui são:

                  Criamos uma variável para o "signal" com uma atribuição vazia, pois nós vamos calcular ele depois disso:

                  string signal="";

                  Criado duas variáveis para os valores %K (0,1) e duas variáveis para os valores %D (0,1) para os dados atuais e os dados anteriores ao atual:

                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];

                  Para avaliar o cruzamento entre %K e %D, precisamos que o cruzamento seja para cima, ou seja, precisamos que %K rompa %D para cima e mover acima dele após esse cruzamento; é isso que podemos encontrar no código da linha do "if":

                     if (KValue0<50&&DValue0<50)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        

                  Após a avaliação do cruzamento, se for verdadeiro, nós precisamos de um sinal para "COMPRAR" e esta será a atribuição para "signal". Então nós precisamos de um comentário com este sinal no gráfico e ele será de acordo com a seguinte linha de código:

                  Comment("SSS - Uptrend Strategy - Signal is ",signal);

                  Para tanto, nós criamos o código do programa e após compilá-lo nós podemos encontrá-lo na janela do navegador:

                  Nav 2

                  Após arrastar e soltar este arquivo no gráfico, a seguinte janela aparecerá:

                   SSS-Janela Uptrend


                  Após pressionar OK, ele será anexado:

                  SSS-Uptrend anexado

                  O sinal aparecerá igual ao exemplo a seguir durante o teste:

                  SSS - uptrend - compra

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

                  %K, %D > 50 --> %K < %D = sinal de venda

                  O código a seguir é para criar um programa para executar essa estratégia de tendência de baixa:

                  //+------------------------------------------------------------------+
                  //|                Simple Stochastic 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                           
                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Downtrend Strategy - Signal is ",signal);
                        
                    }
                  //+------------------------------------------------------------------+

                  As diferenças são:

                  • Condições do cruzamento

                     if (KValue0>50&&DValue0>50)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        

                  • O comentário de acordo com esta estratégia:

                     Comment("SSS - Downtrend Strategy - Signal is ",signal);

                  Após a compilação, nós podemos encontrar o arquivo deste programa na janela do navegador:

                  Nav 3

                  Arraste e solte este arquivo no gráfico e a seguinte janela será aberta:

                  SSS-Janela Downtrend

                  Após pressionar OK, o arquivo será anexado ao gráfico:

                  SSS-Downtrend anexado 

                   O sinal aparecerá como um comentário no gráfico de acordo com as condições desta estratégia e a imagem a seguir é um exemplo disso:

                  SSS - downtrend - venda

                  • Estratégia três: estratégia lateralizada
                    • Sinal de compra:

                  %K, %D < 20 --> %K > %D = sinal de compra

                  %K, %D > 80 --> %K < %D = sinal take profit

                  O código a seguir é para criar um programa capaz de executar essa estratégia lateralizada:

                  //+------------------------------------------------------------------+
                  //|           Simple Stochastic System - Sideways - Buy 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        
                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);  
                        
                    }
                  //+------------------------------------------------------------------+

                  As diferenças são:

                  • Condições de cruzamento de acordo com o sinal de compra da estratégia lateralizada:

                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "BUY";
                        }      
                        

                  • O comentário de acordo com o sinal de compra da estratégia lateralizada:

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  • Condições do sinal de lucro da estratégia lateralizada:

                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "Take Profit";
                        }
                        

                  • O comentário de acordo com o sinal de lucro da estratégia lateralizada:

                     Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);

                  Após a compilação, o arquivo deste sistema de negociação aparecerá na janela do Navegador:

                  Nav 4

                  Arraste e solte o arquivo no gráfico, a seguinte janela será aberta:

                  SSS-janela Sideways - buy

                  Após pressionar OK, o programa será anexado ao gráfico:

                  SSS-Sideways - buy - anexado

                  O sinal será exibido como um comentário no gráfico de acordo com esta estratégia. A imagem a seguir mostra um exemplo de tal sinal:

                  SSS - Sideways - buy - compra

                  O exemplo do sinal "take profit":

                  SSS - Sideways - buy - TP

                    • Estratégia lateralizada: sinal de venda

                  %K, %D > 80 --> %K < %D = sinal de venda

                  %K, %D < 20 --> %K > %D = sinal take profit

                  Veja a seguir como escrever o código de um programa que executa essa estratégia:

                  //+------------------------------------------------------------------+
                  //|          Simple Stochastic System - Sideways - Sell 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()
                    {
                     string signal="";
                     
                     double Karray[];
                     double Darray[];
                     
                     ArraySetAsSeries(Karray, true);
                     ArraySetAsSeries(Darray, true);
                     
                     int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH);
                     
                     CopyBuffer(StochDef,0,0,3,Karray);
                     CopyBuffer(StochDef,1,0,3,Darray);
                     
                     double KValue0 = Karray[0];
                     double DValue0 = Darray[0];
                     
                     double KValue1 = Karray[1];
                     double DValue1 = Darray[1];  
                     
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                        
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                     
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }         
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                    }
                  //+------------------------------------------------------------------+
                  

                  As diferenças são:

                  • Condições de cruzamento de acordo com o sinal de venda da estratégia lateralizada:
                      if (KValue0>80&&DValue0>80)
                        if ((KValue0<DValue0) && (KValue1>DValue1))
                        {
                           signal = "SELL";
                        }
                  • O comentário de acordo com o sinal de venda da estratégia lateralizada:
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  
                  • Condições do sinal de lucro da estratégia lateralizada:
                     if (KValue0<20&&DValue0<20)
                        if ((KValue0>DValue0) && (KValue1<DValue1))
                        {
                           signal = "TAKE PROFIT";
                        }   
                  • O comentário de acordo com o sinal de lucro da estratégia lateralizada: 
                     Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);  

                  Após a compilação, o arquivo deste sistema de negociação aparecerá na janela do Navegador:

                  Nav 5

                  Arraste e solte-o no gráfico e a seguinte janela será aberta:

                  SSS-janela Sideways - sell

                  Após pressionar OK, o programa será anexado ao gráfico para estar pronto para gerar os sinais:

                  SSS-Sideways - sell - anexado

                  A imagem a seguir é um exemplo de um sinal de venda gerado de acordo com esta estratégia:

                  SSS - Sideways - sell - venda

                  A imagem a seguir é um exemplo de um sinal de lucro gerado de acordo com esta estratégia:

                  SSS - Sideways - sell - TP

                  Conclusão

                  No final deste artigo, nós podemos dizer que aprendemos o básico de como criar um sistema de negociação simples usando o indicador técnico "Oscilador Estocástico", que é um dos indicadores mais populares no mundo da negociação. Eu espero que você tenha entendido o que é o indicador "Oscilador Estocástico", o que ele mede e como calculá-lo - nós o consideramos em detalhes. Eu espero que você tenha descoberto algo novo sobre como usar o indicador estocástico aprendendo algumas estratégias simples que podem ser usadas. Além disso, o artigo apresentou um esquema para essas estratégias simples, com base nas quais é possível criar um sistema de negociação de maneira fácil e suave. Além disso, nós consideramos como projetar um sistema de negociação com base nessas estratégias simples mencionadas.

                  Espero que você tenha achado este artigo útil para você e sua negociação, e que ele ajude a encontrar novas ideias, fornecendo informações sobre um dos indicadores mais populares e úteis - o "Oscilador Estocástico" no mundo da negociação.

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

                  Desenvolvendo um EA de negociação do zero (Parte 25): Dado robustez ao sistema (II) Desenvolvendo um EA de negociação do zero (Parte 25): Dado robustez ao sistema (II)
                  Aqui vamos terminar de dar uma alavancada na performance do EA ... então preparem-se para uma longa leitura. A primeira coisa que iremos fazer para dar robustez ao nosso EA será retirar tudo e absolutamente tudo que não faça parte do sistema de negociação de entro do código.
                  Gráficos na biblioteca DoEasy (Parte 100): Eliminando bugs ao trabalhar com objetos gráficos padrão estendidos Gráficos na biblioteca DoEasy (Parte 100): Eliminando bugs ao trabalhar com objetos gráficos padrão estendidos
                  Hoje vamos retocar e eliminar falhas evidentes ao trabalhar com objetos gráficos estendidos (e padrão) e com objetos-formas na tela, além disso vamos consertar os erros observados durante os testes no último artigo. E assim vamos concluir esta seção da descrição da biblioteca.
                  DoEasy. Controles (Parte 1): Primeiros passos DoEasy. Controles (Parte 1): Primeiros passos
                  Com este artigo, iniciamos um tópico extenso sobre a criação de controles em MQL5 com base no estilo do Windows Forms. E vamos começar criando uma classe-painel. Tudo já está se tornando difícil sem a presença de controles. Por isso, criaremos todos os controles possíveis no estilo do Windows Forms.
                  Gráficos na biblioteca DoEasy (Parte 99): Movendo um objeto gráfico estendido com um ponto de controle Gráficos na biblioteca DoEasy (Parte 99): Movendo um objeto gráfico estendido com um ponto de controle
                  No último artigo, geramos o movimento dos pontos de ancoragem de um objeto gráfico estendido por meio de formas de controle. Agora vamos mover o objeto gráfico composto com ajuda de um ponto/forma de controle de objeto gráfico.