Indicadores: Bollinger Bandwidth 1.0 para MetaTrader 5

 

Bollinger Bandwidth 1.0 para MetaTrader 5:

O indicador mede a distância entre as Bandas Bollinger ®, fornecendo um indicador singular que utiliza as técnicas do MetaTrader 5 para simplificar os cálculos Bollinger.

Esta nova versão projetado com MetaTrader 5 utiliza os cálculos da iBands e eles são chamados para executar os cálculos necessários a fim de obter a diferença entre larguras de banda superiores e inferiores.

Bollinger Bandwidth 1.0 para MetaTrader 5

Autor: Larry

 
Automated-Trading писал(а)  :

Bollinger Bandwidth 1.0 para MT5:

Autor: Larry

distância entre BBs = 2 * RMS...
 

Finalmente, depois de alguns anos negociando com o BollingerBand... Agora encontrei esse indicador simples e útil para calcular o intervalo superior-inferior do BB.....

Funciona muito bem nos pares principais, mas ainda tem um erro quando anexado ao JPY (EURJPY e USDJPY) no corretor de 4 dígitos,,,,, o valor da largura está errado.

Espero que haja uma versão 2.0 para corrigir esse problema.

Arquivos anexados:
JPY_Value.jpg  38 kb
 

Olá, Larry, obrigado pelo indicador. Eu recomendaria não copiar todos os dados o tempo todo, pois isso leva a uma enorme desvantagem de desempenho.

Aqui está uma cópia revisada de seu método OnCalculate():


  {
//--- variáveis
   double upper_band[];
   double lower_band[];

// --- Transforme as matrizes em matrizes de séries dinâmicas 
// ArraySetAsSeries(lower_band,true);
// ArraySetAsSeries(upper_band,true);
// ArraySetAsSeries(BBandwidthBuffer,true);

//--- verificar se todos os dados foram calculados
   if(BarsCalculated(BBHandle)<rates_total) return(0);
//--- podemos copiar todos os dados
   
   int barstocopy = 0;
   if(prev_calculated>rates_total||prev_calculated<=0) {
      barstocopy = rates_total;
   } else {
      barstocopy = rates_total-prev_calculated;
      if(prev_calculated>0) barstocopy++;
   }

   if(IsStopped()) return(0);
   
   if(CopyBuffer(BBHandle,1,0,barstocopy,upper_band) <=0) return(0);
   if(CopyBuffer(BBHandle,2,0,barstocopy,lower_band) <=0) return(0);

   for(int i=0;i<barstocopy-1;i++)
     {
         BBandwidthBuffer[i]=upper_band[i]-lower_band[i];
     }

//--- valor de retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }
 
Olá, fiz uma versão com esta fórmula: largura de banda = (( banda superior - banda inferior ) / banda média ) * 100
Arquivos anexados: