As Bandas de Bollinger são um dos indicadores técnicos mais populares e amplamente utilizados no mundo do trading.

Elas foram desenvolvidas por John Bollinger na década de 1980 e têm sido uma ferramenta valiosa para traders em diversos mercados financeiros.

Aqui  vamos entender o funcionamento desse indicador e criar um robô de negociação em MQL5 que compra quando um candle fecha acima da banda superior e vende quando um candle fecha abaixo da banda inferior.

 

bandas de bollinger
Fonte: Hantec Markets

Bandas de Bollinger: Uma Visão Geral

As Bandas de Bollinger são compostas por três linhas:

  1. Banda Superior: Esta é uma linha que representa a média móvel simples (SMA) do preço de fechamento, acrescida de um múltiplo do desvio padrão do preço.
  2. Banda Inferior: Também é uma linha que representa a SMA do preço de fechamento, subtraída de um múltiplo do desvio padrão do preço.
  3. Banda do Meio (Linha de Base): Esta é a SMA do preço de fechamento, que está no centro das Bandas de Bollinger.

 

As Bandas são úteis para identificar a volatilidade do mercado. Quando as bandas se estreitam, indica que o mercado está em uma fase de baixa volatilidade, e quando as bandas se expandem, indica uma maior volatilidade.

Estratégia de Negociação com as Bandas de Bollinger

A estratégia que vamos implementar é simples:

  • Compra: Quando um candle fecha acima da banda superior, consideramos isso um sinal de compra.
  • Venda: Quando um candle fecha abaixo da banda inferior, consideramos isso um sinal de venda.

Criando um Robô em MQL5

Vamos agora criar um robô (Expert Advisor) em MQL5 que implementa essa estratégia.

mql5
//+------------------------------------------------------------------+
//|                                           Bollinger Bands EA     |
//|                                 Copyright 2023, Forum Boa Dica   |
//|                                      https://forumboadica.com.br |
//+------------------------------------------------------------------+
#property copyright "Forum Boa Dica"
#property link      "https://forumboadica.com.br"
#property version   "1.00"
#property description "Bollinger Bands Expert Advisor"
#property strict

input int Period = 20;      // Período das Bandas de Bollinger
input double Deviation = 2; // Desvio padrão das Bandas de Bollinger
input double LotSize = 0.1; // Tamanho do Lote de Negociação

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // Inicializa o EA
   Print("EA Iniciado");

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double UpperBand[], MiddleBand[], LowerBand[];
   int counted_bars = IndicatorCounted();
   
   // Calcula as Bandas de Bollinger
   if (iBands(Symbol(), 0, Period, Deviation, 0, PRICE_CLOSE, UpperBand, MiddleBand, LowerBand) < 0)
     {
      Print("Erro ao calcular as Bandas de Bollinger");
      return;
     }
   
   // Verifica os sinais de compra e venda
   if (Close[1] > UpperBand[1] && Close < UpperBand)
     {
      Print("Sinal de Compra: Fechamento acima da Banda Superior");
      int ticket = OrderSend(Symbol(), OP_BUY, LotSize, MarketInfo(Symbol(), MODE_ASK), Slippage, 0, 0, "", 0, clrNONE);
      if (ticket > 0)
        {
         OrderSend(Symbol(), OP_SELL, LotSize, MarketInfo(Symbol(), MODE_BID), Slippage, 0, 0, "", 0, clrNONE);
         OrderSend(Symbol(), OP_SELL, LotSize, MarketInfo(Symbol(), MODE_BID), Slippage, 0, 0, "", 0, clrNONE);
        }
     }
   else if (Close[1] < LowerBand[1] && Close > LowerBand)
     {
      Print("Sinal de Venda: Fechamento abaixo da Banda Inferior");
      int ticket = OrderSend(Symbol(), OP_SELL, LotSize, MarketInfo(Symbol(), MODE_BID), Slippage, 0, 0, "", 0, clrNONE);
      if (ticket > 0)
        {
         OrderSend(Symbol(), OP_BUY, LotSize, MarketInfo(Symbol(), MODE_ASK), Slippage, 0, 0, "", 0, clrNONE);
         OrderSend(Symbol(), OP_BUY, LotSize, MarketInfo(Symbol(), MODE_ASK), Slippage, 0, 0, "", 0, clrNONE);
        }
     }
  }
//+------------------------------------------------------------------+

 

Este Expert Advisor calcula as Bandas de Bollinger com base nos parâmetros definidos (Período e Desvio) e verifica se o preço de fechamento fecha acima da banda superior (compra) ou abaixo da banda inferior (venda).

Com este EA, você tem um ponto de partida para explorar estratégias mais avançadas envolvendo as Bandas de Bollinger e outras ferramentas de análise técnica.

Certifique-se de entender completamente como funciona o código antes de usá-lo no mercado real.