Como desenvolver um sistema de negociação baseado nas bandas de Bollinger

15 junho 2022, 08:52
Mohamed Abdelmaaboud
0
368

Introdução

No trading, existem inúmeras ferramentas e métodos que podem ser utilizados para atingir objetivos de negociação. A escolha de cada uma de tais ferramentas varia dependendo das condições do mercado. 

Um desses métodos consiste no uso de faixas. Basicamente, durante esse tipo de negociação, operamos dentro de um corredor formado por duas bandas. A ferramenta usada para tal propósito é chamada de indicador bandas de Bollinger. É um dos indicadores mais populares e mais frequentemente utilizados no mundo da análise técnica e do trading.

Neste artigo vamos falar sobre o indicador bandas de Bollinger, como é calculado e como utilizá-lo eficazmente. Eventualmente, aprenderemos a utilizar este indicador consoante nossa estratégia. Além disso, desenvolveremos nosso próprio sistema de negociação baseado no indicador bandas de Bollinger. No decurso deste artigo, iremos abordar os seguintes tópicos

    1. Definindo as bandas de Bollinger
    2. Estratégia de negociação baseada nas bandas de Bollinger
    3. Desenvolvendo uma estratégia baseada nas bandas de Bollinger
    4. Epílogo
    5. Referências

      O indicador foi criado por John Bollinger. Ele consiste em duas linhas construídas em torno de uma média móvel de 20 dias, para, assim, medir a dispersão de dados (neste caso, os preços) à volta do valor médio (média móvel). Com isso, ficaremos a saber como o indicador mede tal disseminação em torno da média e como trabalhar com ela. 

      Embora as bandas de Bollinger possam parecer muito semelhantes ao indicador Envelopes, que também consiste em duas faixas localizadas acima e abaixo do preço, as linhas deste último são desenhadas a uma distância fixa (%) da média móvel, já as linhas do Bollinger podem afastar-se e aproximar-se dependendo de um certo número de desvios padrão. Estas e outras particularidades são explicadas na seção Definindo as bandas de Bollinger.

      Também analisaremos a melhor forma de aplicar o indicador bandas de Bollinger ao trading, falaremos sobre isto na secção Estratégia de negociação baseada nas bandas de Bollinger.

      Depois veremos como utilizar estratégias por meio de sistemas de automatizados de negociação algorítmica.


      Observação: 
      • Vamos escrever todos os códigos deste artigo em linguagem MQL5. Vamos executá-los na plataforma MetaTrader 5.
      • Recomendo a você que escreva e execute o código discutido neste artigo por conta própria para entender melhor o tópico.
      • Você precisará de um terminal de negociação para efetuar a execução e do MetaEditor para escrever o código em MQL5.

      Para instalar a plataforma MetaTrader 5 no seu computador, baixe a devida distribuição em: https://www.metatrader5.com/pt/download. Após a instalação, veremos a janela do terminal MetaTrader 5:

      Plataforma MetaTrader 5


      Para abrir o MetaEditor, pressione F4 com o terminal MetaTrader 5 aberto ou selecione MetaQuotes Language Editor no menu Ferramentas. As imagens abaixo mostram como abrir o editor de código MetaEditor:

      Método MetaEditor 1


      Método MetaEditor 2

      A janela aberta do MetaEditor é assim: 

      Janela do MetaEditor


      A seguir é necessário criar um novo arquivo, como se mostra na imagem:

      MetaEditor - novo arquivo

      1. Criação de novo arquivo para escrever um EA
      2. Criação de novo arquivo para escrever um indicador personalizado
      3. Criação de novo arquivo para escrever um script

      Para mais informações, leia meu artigo anterior no link: https://www.mql5.com/pt/articles/10293.

      Sempre gosto de dizer que a programação é uma ferramenta maravilhosa que torna as nossas vidas mais fáceis ao permitir a automatização precisa das coisas de que necessitamos. É por isso que é importante investir neste campo, desenvolver-se nele e aprender a fazer o uso correto de todos os recursos para alcançar os objetivos desejados em diferentes áreas da vida.

      Imagine, a nível de trading, como a vida pode ser fácil e agradável se você entregar instruções a um computador, dizendo-lhe o que fazer e quando o fazer. O computador fará exatamente o que lhe mandar, sem quaisquer objeções, e nós teremos mais tempo para algo agradável. É por isto que devemos reservar um tempo para aprender a programar e para escrever programas automatizados.

      Observação

      Todo o conteúdo deste artigo é destinado apenas para fins de treinamento e não é destinado a qualquer outro propósito. Qualquer coisa que você coloque em prática com base neste artigo será por sua própria conta e risco, o autor não garante nenhum resultado.

      Passemos ao estudo da matéria de hoje.


      Definindo as bandas de Bollinger

      A ideia de negociar por meio de faixas é bastante comum, surgiu há muito tempo e é utilizada com vários ativos. Basicamente, o objetivo de tal método é construir linhas acima e abaixo de alguma medida de tendência. 

      Desse modo, por exemplo, podemos construir linhas afastadas de uma média móvel por um certo valor percentual, como no caso do indicador Envelopes. Ou também existem canais formados por duas linhas paralelas acima ou abaixo do preço, que nos permitem identificar pontos pivô. Mas a desvantagem desse tipo de métodos é que todos eles são fixos e não reagem às oscilações de preços. Em outras palavras, eles não se expandem, contraem ou mudam com qualquer movimentação do preço.

      As características específicas do cálculo do indicador bandas de Bollinger permitem que o indicador seja adaptável. Abaixo veremos como o indicador é calculado.

      A imagem abaixo mostra o Envelopes, que é outro indicador baseado em barras:

      EURUSDH1 - Envelopes

      Como podemos observar, temos duas faixas que envolvem o preço: a inferior está abaixo do preço e a superior está acima dele. Quero mostrar que existem diversas estratégias de negociação baseadas nessas faixas. 

      Há também muitas soluções e alternativas prontas para serem usadas. Uma delas é as bandas de Bollinger. Elas diferem dos métodos mencionados anteriormente porque a natureza do seu cálculo permite que essas bandas converjam e divirjam.

      O indicador bandas de Bollinger foi criado no início dos anos 80 por John Bollinger, um renomado especialista na área de mercados financeiros e negociação. Ele é um analista financeiro e um profissional especializado em mercados certificados.

      As bandas de Bollinger são um indicador técnico muito popular que mede a volatilidade. Ele pode se expandir e se contrair em função das condições do mercado. Pode ser utilizado em qualquer mercado financeiro, Forex, ações, etc. Assim é construído esse indicador:

      Como mencionado acima, a construção das bandas deve começar com alguma medida da tendência central. Depois, devem ser construídas as faixas por cima e por baixo. A medida central mencionada é uma média móvel simples, enquanto o intervalo é determinado por uma medida da volatilidade do desvio padrão móvel.

      O indicador bandas de Bollinger:

      • Mede a dispersão dos dados em torno da média (média móvel).
      • É um indicador de volatilidade.
      • Difere de outros indicadores deste tipo na medida em que as linhas não são traçadas a uma distância fixa da média móvel, senão que são flexíveis e podem aproximar-se e afastar-se dependendo de um certo número de desvios padrão.
      • As bandas se expandem automaticamente quando a volatilidade aumenta e se estreitam quando a volatilidade diminui. Esta natureza dinâmica permite que o indicador seja utilizado com variados instrumentos com configurações padrão.
      • Em geral, é manuseado para identificar pontos de entrada e saída.
      • São frequentemente utilizadas para identificar condições de sobre-compra e sobre-venda.
      • Também pode ser utilizado quer para encontrar topos M e fundos W ou para determinar a força de uma tendência.
      A fórmula para calcular o indicador bandas de Bollinger é mostrada abaixo:

      Cálculo das BB

      Vejamos um exemplo de cálculo de Bandas de Bollinger:
        Digamos que temos preços de fechamento para 20 dias de negociação:
             Nº do dia   
             Preço de fechamento $  
          1 20
          2 30
          3 35
           4 30 
           5 40 
          6 45
          7 50
          8 55
          9 40
          10 45
          11 50
          12 35
          13 40
          14 50
          15 60
          16 65
          17 70
          18 60
          19 70
          20 75

          Cálculo das BB

          Para estes preços, o cálculo do indicador será o seguinte:

             Exemplo de cálculo de BB


            Exemplo de cálculo de BB 1


            Configuração de parâmetros:

            Posso usar outras configurações do indicador bandas de Bollinger e ajustá-las à minha estratégia de negociação e objetivos específicos? Sim, com certeza, mas convém sempre verificar e testar quaisquer configurações para obter bons resultados. Além disso, Bollinger recomenda fazer pequenos ajustes no multiplicador de desvio padrão. Também é preciso lembrar que a mudança do período da média móvel afeta o período utilizado para calcular o desvio padrão. Bollinger sugere aumentar o multiplicador de desvio padrão para 2,1 quando se utiliza uma média móvel simples de 50 períodos, e reduzi-lo para 1,9 quando se utiliza uma média móvel simples de 10 períodos. 

            Felizmente, não há necessidade de calcular isto manualmente, pois existe um indicador pronto, que vem como padrão na plataforma MetaTrader 5. As figuras a seguir mostram como anexar o indicador ao gráfico. No terminal MetaTrader 5 através do menu "Inserir":

            1 - inicialização do indicador BB no gráfico

            Depois, selecionamos Indicadores -> Tendências -> Bandas de Bollinger:

            2 - inicialização do indicador BB no gráfico

            Uma vez selecionado o indicador, uma janela com parâmetros será aberta e mostrará as configurações padrão do indicador. Aqui podem ser definidos:

            1. O período para o cálculo da média móvel.
            2. O parâmetro de desvio para ajustar as bandas superior e inferior.
            3. O tipo de preço a ser utilizado para o cálculo (fechamento, abertura, máximo, mínimo, mediano, típico, ponderado).
            4. O estilo de exibição do indicador no gráfico (cor, tipo e espessura das linhas).
            5. Deslocamento do indicador.

            Ajustamos estas definições de acordo com a nossa estratégia.


            3 parâmetros do indicador BB

            Após configurar e premir OK, o indicador aparecerá no gráfico, como na figura a seguir:


            Indicador BB no gráfico EURUSDH1


            Na figura, podemos ver duas linhas (bandas de Bollinger) em redor do preço, sendo que uma vai abaixo da média e a outra vai acima dela. 

            Estratégia de negociação baseada nas bandas de Bollinger

            Nesta parte falaremos sobre estratégias baseadas nas bandas de Bollinger e como aplicar esse indicador ao trading.

            O indicador bandas de Bollinger é adequado para diferentes condições e movimentos de mercado: tendência ascendente, tendência descendente e tendência lateral. Existem muitas estratégias para cada condição de mercado. Aqui estão alguns delas.

            • Tendência de alta

            Usamos primeiro a média móvel para compreender como os preços se movem durante uma tendência ascendente. Durante tal tendência, os preços se movem maioritariamente acima da média móvel.

            Em nosso caso, em uma tendência crescente, na maioria das vezes os preços se moverão entre a média móvel e a faixa superior. Os preços formarão mínimos e máximos mais altos e o mercado será influenciado pelos compradores.

            Tendência de alta

            Tendência de alta


            Neste caso, as bandas de Bollinger podem ajudar a identificar a tendência de alta pela posição dos preços em relação a elas e à média. A imagem abaixo mostra um exemplo: os preços estão na zona verde, movendo-se entre a média móvel e a faixa superior, ou seja, a tendência é de alta:

            EURUSDWeekly - Indicador BB, tendência de alta

            De acordo com esta estratégia, podemos proceder da seguinte forma
            • Comprar quando o preço tiver ultrapassado a média móvel de baixo para cima. O alvo de fechamento está na faixa superior.
              • Preços > MA = compra, faixa superior = fechamento

            EURUSDWeekly - Indicador BB, estratégia de alta

            • Tendência de baixa

            Usamos primeiro a média móvel para compreender como os preços se movem durante uma tendência descendente. Durante tal tendência, os preços se movem maioritariamente acima da sua média móvel.

            Em nosso caso, em uma tendência descendente, na maioria das vezes os preços se moverão entre a média móvel e a faixa inferior. Os preços formarão mínimos e máximos mais baixos e o mercado será influenciado pelos vendedores.

            Tendência de baixa

            Tendência de baixa

            Neste caso, as bandas de Bollinger podem ajudar a identificar a tendência de baixa pela posição dos preços em relação a elas e à média. A imagem abaixo mostra um exemplo: os preços estão na zona vermelha, movendo-se entre a média móvel e a faixa inferior, ou seja, a tendência é de alta:

            EURUSDDaily - Indicador BB, tendência de baixa

            De acordo com esta estratégia, podemos proceder da seguinte forma
            • Abrimos uma posição curta quando o preço cruzar a média móvel de cima para baixo. O alvo de fechamento está na faixa inferior.
              • Preços < MA = venda, banda inferior = fechamento

            EURUSDDaily - Indicador BB, estratégia de tendência decrescente

            • Tendência lateral

            A primeira coisa a fazer é compreender como determinar o movimento lateral. Em geral, ele é qualquer outro movimento que não pode ser definido como uma tendência ascendente ou descendente.

            O movimento lateral marca um equilíbrio entre compradores e vendedores, sem que nenhum deles prevaleça claramente. Aqui estão exemplos destes movimentos laterais:

            Movimento lateral 1

            Movimento lateral 2

            Movimento lateral 3

            Movimento lateral 4

            Abaixo está um exemplo real de uma lateralização assim. Pode-se ver claramente que os preços na zona verde estão se movendo lateralmente, sem direção clara para cima ou para baixo:

             Movimento lateral 


            Existem outras variações de tendência lateral, mas basta lembrar que se trata de qualquer outro movimento que não seja uma tendência para cima e para baixo.


            Agora vejamos o que acontece à média móvel em um movimento lateral. O preço oscilará ao seu redor e constantemente cruzará para cima e para baixo. A imagem abaixo mostra um exemplo:

             MA e lateralização

            E como é que o preço se comportará em relação ao indicador bandas de Bollinger? O preço se moverá entre a faixa inferior e a superior:

            GBPUSD1H - BB durante lateralização

            Como o preço se move entre as bandas, a estratégia seria comprar na banda inferior e colocar take-profit na banda mais alta, ou vice-versa, abrimos um posição curta na banda mais alta e take-profit na mais baixa.
            • Preço na barra inferior = compra, barra superior = take-profit
            • Preço na barra superior = venda, barra inferior = take-profit

            GBPUSD1H - BB e estratégia durante lateralização


            Na imagem acima:
            • Compramos na barra inferior do indicador, fixamos o lucro na barra superior.
            • Ou entramos em uma posição de venda na barra superior e fixamos lucro na inferior.

            Desenvolvendo uma estratégia baseada nas bandas de Bollinger

            Nesta parte aprenderemos como desenvolver sistemas de negociação algorítmica baseados no indicador bandas de Bollinger e escrever código. Vamos programar as três estratégias de negociação que discutimos anteriormente (tendência para cima, tendência para baixo e tendência lateral).

            Você pode conceber qualquer sistema de negociação para si próprio, desde o simples ao avançado. Por exemplo, poderia desenvolver um que gera um sinal simples baseado em um princípio básico, e agir com base nesse sinal. Também pode escrever um avançado que não só gera o sinal, mas também o combina com outros princípios e o executa automaticamente. Há muitas abordagens diferentes. Neste artigo vamos trabalhar com sistemas de negociação simples. Vamos criá-los para aprender o princípio e suas possibilidades. Com base neste conhecimento, você será capaz de desenvolver sistemas similares ou seu próprio sistema de negociação conforme suas próprias condições. Espero que você considere este artigo útil e que o ajude a atingir seus objetivos de negociação u de investimento.

            Primeiro, vamos escrever o código das bandas de Bollinger que exibirá três comentários no gráfico com o valor da média móvel, o valor da banda superior e o valor da banda inferior.

            Eis o código resultante:

            //+------------------------------------------------------------------+
            //|                                       Simple Bollinger Bands.mq5 |
            //|                                  Copyright 2022, MetaQuotes Ltd. |
            //|                                             https://www.mql5.com |
            //+------------------------------------------------------------------+
            
            //+------------------------------------------------------------------+
            //| Expert tick function                                             |
            //+------------------------------------------------------------------+
            void OnTick()
              {
               //create an array for several prices
               double MiddleBandArray[];
               double UpperBandArray[];
               double LowerBandArray[];
               
               //sort the price array from the cuurent candle downwards
               ArraySetAsSeries(MiddleBandArray,true);
               ArraySetAsSeries(UpperBandArray,true);
               ArraySetAsSeries(LowerBandArray,true);
               
               //define Bollinger Bands
               int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
               
               //copy price info into the array
               CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
               CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
               CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
               
               //calcualte EA for the cuurent candle
               double MiddleBandValue=MiddleBandArray[0];
               double UpperBandValue=UpperBandArray[0];
               double LowerBandValue=LowerBandArray[0];
               
               //comments
               Comment("MiddleBandValue: ",MiddleBandValue,"\n",
               "UpperBandValue: ",UpperBandValue,"\n","LowerBandValue: ",LowerBandValue,"\n");
               
              }
            //+------------------------------------------------------------------+
            
            
            

            Depois de termos escrito o código e o termos compilado, devemos certificar-nos de que não existem erros ou avisos no código:

            1- SBB - sem erros

            A seguir, encontramos o arquivo na janela do navegador e o arrastamos sobre o gráfico ou fazer duplo clique sobre ele:

             2- SBB - arquivo


            3- SBB - execução na janela


            A imagem abaixo mostra um gráfico com o programa em execução:

            4- SBB no gráfico

            Passemos agora a estratégias simples baseadas no indicador bandas de Bollinger.
              Estratégia 1:
                • Gráfico que mostra uma estratégia baseada nas bandas de Bollinger durante uma tendência de alta: 
                • Preço > MA = compra, banda superior = take-profit ou = sem sinal

                Esquema mostrando as bandas de Bollinger para uma tendência de alta

                Eis o código resultante:

                //+------------------------------------------------------------------+
                //|                                          Uptrend BB strategy.mq5 |
                //|                                  Copyright 2022, MetaQuotes Ltd. |
                //|                                             https://www.mql5.com |
                //+------------------------------------------------------------------+
                //+------------------------------------------------------------------+
                //| Expert tick function                                             |
                //+------------------------------------------------------------------+
                void OnTick()
                  {
                   //define Ask, Bid
                   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                   
                   //create an array for several prices
                   double MiddleBandArray[];
                   double UpperBandArray[];
                   double LowerBandArray[];
                   
                   //sort the price array from the cuurent candle downwards
                   ArraySetAsSeries(MiddleBandArray,true);
                   ArraySetAsSeries(UpperBandArray,true);
                   ArraySetAsSeries(LowerBandArray,true);
                   
                   //define Bollinger Bands
                   int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                   
                   
                   //copy price info into the array
                   CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                   CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                   CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                   
                   //calcualte EA for the cuurent candle
                   double MiddleBandValue=MiddleBandArray[0];
                   double UpperBandValue=UpperBandArray[0];
                   double LowerBandValue=LowerBandArray[0];
                   
                   //giving buy signal when price > MA
                   if (
                      (Ask>=MiddleBandArray[0])
                   && (Ask<UpperBandArray[0])
                      )
                         {
                         Comment("BUY");
                         }
                    
                   //check if we have a take profit signal  
                   if (
                      (Bid>=UpperBandArray[0])
                      )
                         {
                         Comment("TAKE PROFIT");
                         }  
                   
                      //check if we have no signal 
                   if (
                      (Ask<MiddleBandArray[0])
                      )
                         {
                         Comment("NO SIGNAL");
                         }  
                  }
                //+------------------------------------------------------------------+
                
                

                Esta estratégia produz sinais como estes:

                BB tendência de alta - compra


                BB tendência de alta - take-profit

                BB tendência de alta - sem sinal

                Os passos são os seguintes:
                • Vemos que não há erros ou avisos no código
                • Encontramos o arquivo
                • Executamos o código arrastando o arquivo para o gráfico ou fazemos duplo clique sobre o mesmo

                5- UBB - sem erros

                 6- arquivo UBB


                7- janela de execução UBB


                A imagem abaixo mostra a janela depois de rodar nosso código. O programa está rodando no gráfico:

                8- O programa UBB rodar no gráfico

                  Estratégia 2:
                    • Esquema para estratégia baseada nas bandas de Bollinger durante uma tendência de baixa:
                    • Preços < MA = venda, banda inferior = fechamento

                    Esquema de estratégia baseada nas bandas de Bollinger para uma tendência de baixa

                    Eis o código resultante:

                    //+------------------------------------------------------------------+
                    //|                                        Downtrend BB strategy.mq5 |
                    //|                                  Copyright 2022, MetaQuotes Ltd. |
                    //|                                             https://www.mql5.com |
                    //+------------------------------------------------------------------+
                    //+------------------------------------------------------------------+
                    //| Expert tick function                                             |
                    //+------------------------------------------------------------------+
                    void OnTick()
                      {
                       //define Ask, Bid
                       double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                       double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                       
                       //create an array for several prices
                       double MiddleBandArray[];
                       double UpperBandArray[];
                       double LowerBandArray[];
                       
                       //sort the price array from the cuurent candle downwards
                       ArraySetAsSeries(MiddleBandArray,true);
                       ArraySetAsSeries(UpperBandArray,true);
                       ArraySetAsSeries(LowerBandArray,true);
                       
                       //define Bollinger Bands
                       int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                       
                       
                       //copy price info into the array
                       CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                       CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                       CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                       
                       //calcualte EA for the cuurent candle
                       double MiddleBandValue=MiddleBandArray[0];
                       double UpperBandValue=UpperBandArray[0];
                       double LowerBandValue=LowerBandArray[0];
                       
                       //giving sell signal when price < MA
                       if (
                          (Bid<=MiddleBandArray[0])
                       && (Bid>LowerBandArray[0])
                          )
                             {
                             Comment("SELL");
                             }
                        
                       //check if we have a take profit signal    
                       if (
                          (Ask<=LowerBandArray[0])
                          )
                             {
                             Comment("TAKE PROFIT");
                             }  
                       
                          //check if we have no signal   
                       if (
                          (Bid>MiddleBandArray[0])
                          )
                             {
                             Comment("NO SIGNAL");
                             }  
                      }
                    //+------------------------------------------------------------------+
                    
                    

                    Esta estratégia produz sinais como estes:

                    BB de baixa - venda

                    BB de baixa - take-profit

                    BB de baixa - sem sinal


                    Seguimos novamente os mesmos passos:
                    • Vemos que não há erros ou avisos no código
                    • Encontramos o arquivo
                    • Executamos o código arrastando o arquivo para o gráfico ou fazemos duplo clique sobre o mesmo

                     9- DBB - sem erros

                     10- arquivo DBB


                     11- janela de execução DBB


                    Assim é visto o programa no gráfico após a inicialização:

                     12- DBB em execução no gráfico



                      Estratégia 3:
                        • Esquema de estratégia baseada nas bandas de Bollinger durante uma tendência lateral:
                        • Preço na barra inferior = compra, barra superior = take-profit
                        • Preço na barra superior = venda, barra inferior = take-profit

                        Esquema de estratégia baseada nas bandas de Bollinger para uma tendência lateral


                        Eis o código resultante:

                        A - sinal de compra é gerado quando a barra inferior é tocada

                        //+------------------------------------------------------------------+
                        //|                                     Buy sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving buy signal when price > MA
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("BUY");
                                 }
                            
                           //check if we have a take profit signal
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                           
                          }
                        //+------------------------------------------------------------------+
                        
                        
                        

                        Os sinais gerados por esta estratégia

                        Sinal de compra baseado nas BB durante lateralização

                        Take-profit para sinal de compra baseado nas BB durante lateralização


                        A seguir, os mesmos passos (mostrados nas capturas de tela abaixo):
                        • Vemos que não há erros ou avisos no código
                        • Encontramos o arquivo
                        • Executamos o código arrastando o arquivo para o gráfico ou fazemos duplo clique sobre o mesmo

                        13- BSBB - sem erros

                         14- arquivo BSBB


                        15- janela de execução BSBB


                        Assim é visto o programa no gráfico após a inicialização:


                         16- BSBB em execução no gráfico

                        A - o sinal de venda é gerado quando a banda superior é tocada

                        Eis o código resultante:
                        //+------------------------------------------------------------------+
                        //|                                    Sell sideways BB strategy.mq5 |
                        //|                                  Copyright 2022, MetaQuotes Ltd. |
                        //|                                             https://www.mql5.com |
                        //+------------------------------------------------------------------+
                        //+------------------------------------------------------------------+
                        //| Expert tick function                                             |
                        //+------------------------------------------------------------------+
                        void OnTick()
                          {
                           //define Ask, Bid
                           double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
                           double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
                           
                           //create an array for several prices
                           double MiddleBandArray[];
                           double UpperBandArray[];
                           double LowerBandArray[];
                           
                           //sort the price array from the cuurent candle downwards
                           ArraySetAsSeries(MiddleBandArray,true);
                           ArraySetAsSeries(UpperBandArray,true);
                           ArraySetAsSeries(LowerBandArray,true);
                           
                           //define Bollinger Bands
                           int BollingerBands = iBands(_Symbol,_Period,20,0,2,PRICE_CLOSE);
                           
                           
                           //copy price info into the array
                           CopyBuffer(BollingerBands,0,0,3,MiddleBandArray);
                           CopyBuffer(BollingerBands,1,0,3,UpperBandArray);
                           CopyBuffer(BollingerBands,2,0,3,LowerBandArray);
                           
                           //calcualte EA for the cuurent candle
                           double MiddleBandValue=MiddleBandArray[0];
                           double UpperBandValue=UpperBandArray[0];
                           double LowerBandValue=LowerBandArray[0];
                           
                           //giving sell signal when price < MA
                           if (
                              (Bid>=UpperBandArray[0])
                              )
                                 {
                                 Comment("SELL");
                                 }
                            
                           //check if we have a take profit signal
                           if (
                              (Ask<=LowerBandArray[0])
                              )
                                 {
                                 Comment("TAKE PROFIT");
                                 }  
                          }
                        //+------------------------------------------------------------------+
                        
                        
                        

                        As imagens abaixo mostram os sinais gerados por esta estratégia:

                        Sinal de venda baseado nas BB durante lateralização

                        Take-profit para sinal de venda baseado nas BB durante lateralização


                        A seguir, os mesmos passos (mostrados nas capturas de tela abaixo):
                        • Vemos que não há erros ou avisos no código
                        • Encontramos o arquivo
                        • Executamos o código arrastando o arquivo para o gráfico ou fazemos duplo clique sobre o mesmo

                         17- SSBB - sem erros


                         18- arquivo SSBB


                         19- janela de execução do SSBB


                        Assim é visto o programa no gráfico após a inicialização:

                        20- SSBB em execução no gráfico


                        Epílogo

                        O princípio de negociação com as bandas é muito interessante, pois dá uma clara expectativa do que será o próximo movimento. Você certamente pode se beneficiar com isso. Existem muitos métodos de trading de bandas como as bandas de Bollinger, mas a vantagem destas últimas é que podem se expandir e se contrair dependendo do movimento de preços, de modo que podem ser usadas em qualquer condição de mercado.

                        Neste artigo revisamos o princípio do indicador bandas de Bollinger, seu cálculo, estratégias de negociação simples, e desenvolvemos um sistema simples baseado nestas estratégias simples.

                        Agora você pode desenvolver sua própria estratégia de acordo com seu estilo de operar. Espero que este artigo seja útil para você e o ajude a atingir seus alvos de negociação.


                        Literatura

                        • Bollinger on bandas de Bollinger por John Bollinger
                        • https://www.Bollingerbands.com/about-us
                        • https://www.investopedia.com/trading/using-Bollinger-bands-to-gauge-trends
                        • https://school.stockcharts.com/doku.php?id=technical_indicators:Bollinger_bands



                        Traduzido do Inglês pela MetaQuotes Software Corp.
                        Artigo original: https://www.mql5.com/en/articles/3039

                        Desenvolvendo um EA de negociação do zero (Parte 19): Um novo sistema de ordens (II) Desenvolvendo um EA de negociação do zero (Parte 19): Um novo sistema de ordens (II)
                        Aqui vamos desenvolver um sistema gráfico de ordens, do tipo veja o que esta acontecendo. Mas não iremos partir do zero, iremos modificar o sistema já existente adicionando ainda mais objetos e eventos ao gráfico do ativo que estamos operando.
                        Desenvolvendo um EA de negociação do zero (Parte 18): Um novo sistema de ordens (I) Desenvolvendo um EA de negociação do zero (Parte 18): Um novo sistema de ordens (I)
                        Primeira parte do novo sistema de ordens. Deste que este EA começou a ter seu desenvolvimento documentado em artigos, ele tem sofrido diversas mudanças e melhorias, mas no entanto tem mantido o mesmo modelo de sistema de ordens no gráfico.
                        O padrão de design MVC e suas possibilidades de uso (Parte 2): Esquema de interação entre três componentes O padrão de design MVC e suas possibilidades de uso (Parte 2): Esquema de interação entre três componentes
                        Este artigo dá continuação e complemento ao tópico que vimos no artigo anterior, isto é, ao padrão MVC em programas escritos em MQL. Neste artigo, estudaremos um possível esquema de interação entre esses três componentes.
                        Como desenvolver um sistema de negociação baseado no indicador Momentum Como desenvolver um sistema de negociação baseado no indicador Momentum
                        No meu artigo anterior, eu mencionei a importância de identificar a tendência que é a direção dos preços. Neste artigo, eu compartilharei um dos conceitos e indicadores mais importantes que é o indicador Momentum. Eu compartilharei como desenvolver um sistema de negociação com base no indicador Momentum.