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

Uma visão geral das bandas de Bollinger

Três linhas compõem as Bandas de Bollinger:

Banda Superior: A linha que representa a média móvel simples (SMA) do preço de fechamento multiplicada por um múltiplo do desvio padrão do preço é a linha superior.
Banda Inferior: Essa linha também é uma linha que mostra o SMA do preço de fechamento depois de subtraído o múltiplo do desvio padrão do preço.
Banda do Meio ou Linha de Base: A SMA do preço de fechamento, localizada no centro das Bandas de Bollinger, é esta.

 

As bandas são úteis para detectar a volatilidade no mercado. Quando as bandas se estreitam, significa que o mercado está em uma fase de volatilidade baixa, enquanto quando as bandas se expandem, significa que o mercado está em uma fase de volatilidade maior.

 

Negociação com as Bandas de Bollinger

A abordagem que vamos utilizar é simples:

Compra: Uma vela indica compra quando fecha acima da banda superior.
Vendas: Um sinal de venda é quando uma vela fecha abaixo da banda inferior.

 

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.