Como desenvolver um sistema de negociação baseado no indicador Bull's Power

Mohamed Abdelmaaboud | 22 novembro, 2022

Introdução

Neste novo artigo da nossa série, nós vamos conhecer uma nova ferramenta técnica que pode ser usada a nosso favor para potencializar as nossas negociações. Neste artigo, nós aprenderemos sobre o indicador Bull's Power, que é um dos indicadores técnicos que pode ser usado para nos fornecer "insights" sobre a medição dos touros. Assim, nós conheceremos detalhadamente esse indicador técnico e nós abordaremos essa ferramenta técnica através dos seguintes tópicos:

  1. Definição do Bull's Power
  2. Estratégia do Bull's Power
  3. Esquema da estratégia do Bull's Power
  4. Sistema de negociação do Bull's Power
  5. Conclusão

Nós aprenderemos o que é o indicador Bull's Power, o que ele mede, como nós podemos calculá-lo manualmente para aprender o principal conceito por trás dele e como podemos lê-lo, isso será aprendido através do tópico definição do Bull's Power. Depois de aprender o básico e entender o conceito principal por trás deste indicador, nós aprenderemos como usá-lo através de algumas estratégias simples para aprofundar o nosso entendimento e obter mais informações sobre este tópico do artigo para melhorar a nossa negociação e isso será aprendido através do tópico da estratégia do Bull's Power. Após isso, nós aprenderemos a desenvolver um esquema passo a passo para cada uma das estratégias analisadas e isso será aprendido através do tópico do esquema da estratégia do Bull's Power. Em seguida, criaremos um sistema de negociação para cada estratégia mencionada para nos ajudar a automatizar nossos sinais, executando-os na plataforma de negociação MetaTrader 5.

Nós usaremos a plataforma de negociação MetaTrader 5 e escreveremos nossos códigos pela MetaQuotes Language 5 (MQL5). Se você quiser aprender como baixar a MetaTrader 5 e usar a MQL5, você pode ler o tópico "Escrevendo códigos em MQL5 no MetaEditor" de um artigo anterior para saber mais sobre isso. Eu aconselho que você aplique tudo neste artigo sozinho, pois ele desenvolverá suas habilidades rapidamente e lhe fornecerá uma compreensão profunda do tópico.

A importância da programação cresce dia após dia e este caso cria a importância de aprender esta importante ferramenta. Essa importância da programação vem dos benefícios da programação e eles são muitos. Os benefícios mais importantes da programação na negociação são que ela nos ajuda a economizar nosso tempo enquanto codificamos ou criamos um programa para fazer o que fazemos continuamente, ela nos dá resultados mais precisos do jeito que nós precisamos e nos ajuda a evitar emoções. o que pode prejudicar nossos resultados na negociação.

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, vamos começar com os tópicos deste artigo.

Definição do Bull's Power

Neste tópico, nós vamos identificar detalhadamente o indicador Bull's Power para entender o principal conceito por trás dele. O indicador Bull's Power é o oposto do Bear's Power que mencionamos no artigo anterior Como desenvolver um sistema de negociação baseado no indicador Bear's Power. O Bull's Power é desenvolvido por Alexander Elder, ele mede a tendência de alta no mercado e ele também pode indicar se os ursos entrarão em cena, vendo os touros se enfraquecerem. Ele é um indicador oscilador que oscila acima ou abaixo do nível zero. Portanto, esse indicador também nos dá uma visão importante sobre o fator mais importante do mercado que faz o mercado se mover e esse fator é a oferta e demanda.

Como nós podemos calcular esse indicador manualmente, é o que nós identificaremos nas etapas a seguir:

Bull's Power = máxima - EMA

Quando os touros controlam o mercado, eles continuam empurrando o mercado para novas máximas na maioria das vezes. Então, nós usamos o valor da máxima na fórmula para calcular o Bull's Power porque precisamos medir esses touros, então vamos obter a diferença entre essa máxima e a EMA para obter um indicador oscilador que oscila em torno do nível zero como mencionamos antes e quando descobrimos que o valor do bull's power se aproxima do nível zero e ficou menor do que antes, nós podemos obter uma indicação de que os touros enfraqueceram.

É bom usar esse indicador com outro indicador de tendências, pois ele fornecerá "insights" mais eficazes, da mesma forma que faremos em uma das estratégias mencionadas neste artigo. Esse conceito é muito útil e um dos recursos úteis da análise técnica é que nós podemos usar muitos conceitos para obter mais informações e ver o instrumento de diferentes perspectivas, o que nos dá mais peso à nossa decisão.

Hoje em dia, não precisamos calcular esse indicador manualmente, pois nós temos na plataforma de negociação MetaTrader 5 e tudo o que precisamos fazer é inseri-lo no gráfico pressionando Inserir --> Indicadores --> Osciladores --> Bulls Power. Nós podemos ver isso também através da imagem a seguir:

Inserção do Bulls Power

Após escolher o indicador, nós veremos a seguinte janela de seus parâmetros:

 Parâmetro do Bulls power

1 - Determinar o período que será utilizado no cálculo.

2 - Determinar a cor das barras do Bull's Power.

3 - Determinar a espessura das barras do Bull's Power.

Depois de determinar esses parâmetros e pressionar "OK", descobriremos que o indicador é inserido no gráfico da mesma forma que o seguinte:

 Bulls power anexado

Podemos ver no gráfico anterior que na parte inferior nós temos o indicador anexado ao gráfico e suas barras oscilam em torno de zero o mesmo que mencionamos quando encontramos o valor acima de zero. Isso significa que os touros tem o controle e se ele aproxima de zero e fica menor que isso, significa que eles estão se enfraquecendo. Quando os touros ficarem mais fracos, nós podemos ver que os ursos entraram em cena controlando o mercado, empurrando o preço para níveis baixos ou, pelo menos, o mercado é equilibrado por meio do equilíbrio entre touros e ursos.

Estratégia do Bull's Power

Nesta parte, nós vamos aprender como podemos utilizar o Bull's Power através de estratégias simples que podem ser utilizadas com base no conceito básico deste indicador. A seguir encontramos essas estratégias e suas condições. Eu reforço aqui que essas estratégias são para fins educacionais já que o principal objetivo é entender o conceito principal por trás do indicador e como nós podemos usá-lo. Eu aconselho você a testar qualquer coisa que você saiba antes de usar em uma conta real para se certificar de que ela é adequada para a sua negociação e seu plano.

De acordo com essa estratégia, nós precisamos buscar os sinais baseados na posição dos valores do bull's power atual e anterior. Se o valor atual for maior que o anterior, isso será um sinal de que o indicador Bull's Power está subindo. Vice versa, se o valor atual for maior que o anterior, isso será um sinal de que Bull's Power está em queda.

Para simplificar isso, será o mesmo que o seguinte:

Bull's Power atual > Bull's Power anterior --> Bull's Power está subindo

Bull's Power atual < Bull's Power anterior --> Bull's Power está em queda

De acordo com essa estratégia, nós precisamos obter um sinal que nos informe se há movimentos fortes ou divergências avaliando quatro valores e são eles: máxima atual e anterior, bull power atual e anterior. Se a máxima atual for maior que a anterior e o valor do bull power atual for maior que a anterior, isso será um sinal de um forte movimento. No outro caso, se a máxima atual for menor que a anterior e o valor do bull's power atual for maior que o anterior, isso será um sinal de divergência de baixa

Para simplificar isso, será o mesmo que o seguinte:

Máxima atual > máxima anterior e bull's power atual > bull's power anterior --> movimento forte

Máxima atual < máxima anterior e bull's power atual > bull's power anterior --> divergência de baixa

Com base nessa estratégia, precisamos de um sinal que possa ser usado para obter os sinais de compra e venda e avaliaremos quatro valores para fazer isso com base nessa estratégia. Esses quatro valores são o bull's power atual, nível zero, valor de fechamento atual e média móvel exponencial atual. Se o bull's power atual for menor que o nível zero e o fechamento atual for menor que a média móvel exponencial, consideraremos isso como um sinal de venda. Se o bull's power atual for maior que o nível zero e o fechamento atual for maior que a média móvel exponencial, isso será um sinal de compra.

Para simplificar isso, será o mesmo que o seguinte:

Bull's power atual < nível zero e fechamento atual < EMA --> venda

Bear's power atual > nível zero e o fechamento atual > EMA --> compra

Esquema da estratégia do Bull's Power

Neste tópico, nós aprenderemos como desenvolver um esquema passo a passo para cada estratégia mencionada para nos ajudar a criar nossos sistemas de negociação de maneira fácil após organizar as nossas ideias nas etapas deste esquema.

Precisamos que o computador verifique dois valores a cada tick, e isso acontecerá depois de criar esses valores, esses valores são o Bull's Power atual e o anterior. Precisamos que o programa verifique esses valores para saber a posição de todos. Se o valor de bull's power atual for maior que o anterior, nós precisamos que o programa ou o expert retorne um sinal como um comentário no gráfico com o seguinte:

Há um outro cenário que nós precisamos considerar. Se o valor de bull's power atual for menor que o anterior, nós precisamos que o programa ou o expert retorne um sinal como um comentário no gráfico com o seguinte:

A seguir está o esquema para este sistema de negociação baseado nesta estratégia.

 Esquema do Movimento do Bulls Power

Com base nessa estratégia, nós precisamos que o sistema de negociação verifique quatro valores e eles são os valores da máxima atual e anterior e bull power atual e anterior. Após isso, nós precisamos decidir se o valor da máxima atual é maior que a anterior e, ao mesmo tempo, o valor do bull's power atual é maior que o anterior, precisamos que o sistema de negociação retorne um sinal como um comentário no gráfico com os seguintes valores e cada um deles estará em uma linha separada:

No outro caso, se o valor da máxima atual for maior que a anterior e ao mesmo tempo, o valor do bull's power atual for menor que o anterior, precisamos que o sistema de negociação retorne um sinal com um comentário no gráfico com os seguintes valores:

A seguir está um plano passo a passo para nos ajudar a criar um sistema de negociação baseado nesta estratégia.

   Bulls Power - Forte ou Divergência

Com base nessa estratégia, nós precisamos criar um sistema de negociação que verifique quatro valores a cada tick e eles são o bull's power atual, o nível zero, o fechamento atual e a média móvel exponencial atual. Nós precisamos decidir se o bull's power atual é menor que o nível zero e, ao mesmo tempo, se o fechamento atual é menor que a média móvel exponencial, precisamos que o expert advisor retorne um sinal como um comentário no gráfico com os seguintes valores e cada um deles em uma linha separada:

No outro caso, se o bull's power atual for maior que zero e, ao mesmo tempo, o fechamento atual for maior que a média móvel exponencial, precisamos que o sistema de negociação retorne um sinal como um comentário com os seguintes valores:

A seguir está um esquema passo a passo para organizar nossas ideias para criar um sistema de negociação baseado nesta estratégia.

 Esquema dos Sinais do Bull Power

Sistema de negociação do Bull's Power

Neste tópico, nós aprenderemos como criar um sistema de negociação para cada estratégia mencionada, mas nós criaremos primeiro um sistema de negociação simples para que gere um sinal na forma de um comentário no gráfico com o valor atual do Bull's Power como base para todas as estratégias.

A seguir está o código de como criar este sistema de negociação:

Passo um: Nós criaremos um array para o "bullpower" usando a função do tipo double:

double bullpowerArray[];

Passo dois: nós vamos ordenar esse array criado usando a função "ArraySetAsSeries" para retornar um valor booleano.

ArraySetAsSeries(bullpowerArray,true);

Passo três: Nós criaremos uma variável inteira para o "bullpowerDef", nós definiremos o indicador de bull power usando a função "iBullsPower" para retornar o manipulador do indicador. Os parâmetros são:

symbol: usaremos o (_Symbol) para ser aplicado ao símbolo atual.

period: usaremos o (_Period) para ser aplicado ao período atual.

ma_period: usaremos 13 para o período da média móvel.

int bullpowerDef = iBullsPower(_Symbol,_Period,13);

Passo quatro: Nós vamos preencher o array criado usando a função "CopyBuffer" para obter os dados do indicador Bull's Power. Parâmetros desta função:

indicator_handle: para o manipulador do indicador e usaremos (bullpowerDef).     

buffer_num: para o número do buffer do indicador, nós usaremos (0).

start_pos: para a posição inicial nós usaremos (0).         

count: para o valor a ser copiado e usaremos (3).                

buffer[]: para copiar o array de destino e usaremos (bullpowerArray).

CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);

Passo cinco: nós obteremos o "bullpowerVal" após criar uma variável usando a função "NormalizeDouble" para retornar o valor do tipo double. Parâmetros desta função:

value: usaremos (bullpowerArray[0]) como um número normalizado.

dígits: nós usaremos (6) como o número de dígitos após o ponto decimal.

double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);

Passo seis: nós usaremos a função comment para gerar um comentário no gráfico com o valor atual do bull power:

Comment("Bull's Power Value is ",bullpowerVal);

A seguir está o código completo dos passos anteriores:

//+------------------------------------------------------------------+
//|                                          Simple Bull's Power.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()
  {
   double bullpowerArray[];

   ArraySetAsSeries(bullpowerArray,true);

   int bullpowerDef = iBullsPower(_Symbol,_Period,13);

   CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);

   Comment("Bull's Power Value is ",bullpowerVal);

  }
//+------------------------------------------------------------------+

Após compilar este código, nós encontraremos o arquivo do Expert Advisor na janela do navegador da seguinte forma.

 Bulls power Nav

Ao clicar duas vezes sobre este Simple Bull's Power para executá-lo na plataforma MetaTrader 5, nós veremos sua janela igual seguinte maneira:

Janela Simple Bulls Power

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

 Simple Bulls Power anexado

Como nós podemos ver no gráfico anterior no canto superior direito, o expert já está anexado ao gráfico. Agora, nós estamos prontos para receber o comentário automático com o valor atualizado do bull power atual no gráfico, igual ao exemplo de teste a seguir: 

 Sinal do Simple Bulls Power

Como nós podemos ver no gráfico anterior no canto superior esquerdo, nós temos um comentário sobre o valor atual do bull power.

A seguir está o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                                         Bulls Power Movement.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()
  {
   double bullpowerArray[];

   ArraySetAsSeries(bullpowerArray,true);

   int bullpowerDef = iBullsPower(_Symbol,_Period,13);

   CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);
   double bullpowerPrevVal = NormalizeDouble(bullpowerArray[1],6);

   if(bullpowerVal>bullpowerPrevVal)
     {
      Comment("Bull's Power is rising","\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

   if(bullpowerVal<bullpowerPrevVal)
     {
      Comment("Bull's Power is declining","\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }
  }
//+------------------------------------------------------------------+

As diferenças neste código são iguais às seguintes:

Definindo o valor do bull's power atual "bullpowerVal" e o valor do bull's power anterior "bullpowerPrevVal":

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);
   double bullpowerPrevVal = NormalizeDouble(bullpowerArray[1],6);

Condições da estratégia:

Em caso de subida:

   if(bullpowerVal>bullpowerPrevVal)
     {
      Comment("Bull's Power is rising","\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

Em caso de declínio:

   if(bullpowerVal<bullpowerPrevVal)
     {
      Comment("Bull's Power is declining","\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

Após a compilação, nós encontraremos o expert na janela do navegador:

 Bulls power Nav

Ao arrastá-lo e soltá-lo no gráfico desejado, nós encontraremos a janela do mesmo igual à seguinte:

 Janela do Bulls Power Movement

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

 Bulls Power Movement anexado

Como nós podemos ver no gráfico anterior no canto superior direito do gráfico, nós temos o expert anexado ao gráfico e agora estamos prontos para obter os seus sinais da mesma forma que a seguir.

Em caso de alta com os dados atuais:

 Bulls Power Movement - subindo - dados atuais

Como nós podemos ver no gráfico anterior na parte superior do gráfico, nós geramos um sinal ascendente, o valor bull's power atual e anterior. Na janela de dados, nós podemos encontrar o valor atual do bull's power.

Em caso de subida com dados anteriores:

 Bulls Power Movement - subindo - dados anteriores

Como nós podemos ver no gráfico anterior, podemos encontrar uma diferença na janela de dados, pois podemos encontrar o valor anterior do bulls power.

Em caso de declínio com os dados atuais:

Bulls Power Movement - em declínio - dados atuais

Como nós podemos ver no gráfico anterior na parte superior do gráfico, nós geramos um sinal descendente, o valor do bull's power atual e anterior. Na janela de dados, nós podemos encontrar o valor atual do bull's power.

Em caso de declínio com os dados anteriores:

 Bulls Power Movement - em declínio - dados anteriores

Como nós podemos ver no gráfico anterior, nós podemos encontrar uma diferença na janela de dados, pois nós podemos encontrar o valor anterior de bulls power.

A seguir está o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                          Bull's Power - Strong or Divergence.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()
  {
   double bullpowerArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(bullpowerArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int bullpowerDef = iBullsPower(_Symbol,_Period,13);

   CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);
   double bullpowerPrevVal = NormalizeDouble(bullpowerArray[1],6);

   double currentHighVal=NormalizeDouble(priceArray[2].high,6);
   double prevHighVal=NormalizeDouble(priceArray[1].high,6);

   if(currentHighVal>prevHighVal && bullpowerVal>bullpowerPrevVal)
     {
      Comment("Strong Move","\n",
              "Current High Value is ",currentHighVal,"\n",
              "Previous High Value is ",prevHighVal,"\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

   if(currentHighVal>prevHighVal && bullpowerVal<bullpowerPrevVal)
     {
      Comment("Bearish divergence","\n",
              "Current High Value is ",currentHighVal,"\n",
              "Previous High Value is ",prevHighVal,"\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }
  }
//+------------------------------------------------------------------+

A seguir estão as diferenças neste código:

Criação de dois arrays, bullpowerArray e priceArray:

   double bullpowerArray[];
   MqlRates priceArray[];

Ordenação desses arrays criados, para o bullpowerArray usaremos a função "ArraySetAsSeries" da mesma forma que aprendemos anteriormente. Para o priceArray, usaremos a função "CopyRates" para obter os dados históricos de "MqlRates" e seus parâmetros são:

   ArraySetAsSeries(bullpowerArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

Definimos os valores atuais e anteriores do bulls' power e suas máximas usando a função "NormalizeDouble".

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);
   double bullpowerPrevVal = NormalizeDouble(bullpowerArray[1],6);

   double currentHighVal=NormalizeDouble(priceArray[2].high,6);
   double prevHighVal=NormalizeDouble(priceArray[1].high,6);

Condições da estratégia:

Em caso de movimento forte:

   if(currentHighVal>prevHighVal && bullpowerVal>bullpowerPrevVal)
     {
      Comment("Strong Move","\n",
              "Current High Value is ",currentHighVal,"\n",
              "Previous High Value is ",prevHighVal,"\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

Em caso de divergência de baixa:

   if(currentHighVal>prevHighVal && bullpowerVal<bullpowerPrevVal)
     {
      Comment("Bearish divergence","\n",
              "Current High Value is ",currentHighVal,"\n",
              "Previous High Value is ",prevHighVal,"\n",
              "Bull's Power Value is ",bullpowerVal,"\n",
              "Bull's Power Previous Value is ",bullpowerPrevVal);
     }

Após compilar este código, nós encontraremos o Expert Advisor dessa estratégia de negociação na janela do navegador da seguinte forma:

Bulls power Nav2

Ao clicar duas vezes neste expert para execução, nós encontraremos sua janela igual à seguinte:

 Janela Bulls Power - Forte ou Divergência

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

 Bulls Power - Forte ou Divergência anexado

Como nós podemos ver no canto superior direito, o expert está conectado e nós estamos prontos para receber os seus sinais da mesma forma que a seguir.

No caso de um movimento forte com dados atuais:

Bulls Power - Forte ou Divergência - forte - dados atuais

Como podemos ver no gráfico temos o sinal desejado igual ao que queremos com base nesta estratégia com um comentário com os seguintes valores:

Em caso de sinal forte com os dados anteriores:

 Bulls Power - Forte ou Divergência - forte - dados anteriores

Podemos ver no gráfico anterior, que nós temos o mesmo comentário como um sinal no gráfico com os mesmos valores, mas com a janela de dados anterior.

Em caso de divergência de baixa com os dados atuais:

Bulls Power - Forte ou Divergência - Divergência de baixa - dados atuais

Podemos ver no gráfico anterior que temos um comentário no gráfico como um comentário com os seguintes valores:

Em caso de divergência de baixa com os dados anteriores:

 Bulls Power - Forte ou Divergência - Divergência de baixa - dados anteriores

Podemos ver no gráfico anterior, que temos um comentário no gráfico com o mesmo valor, mas aqui nós encontramos uma janela com o dado anterior.

A seguir está o código completo para criar um sistema de negociação baseado nesta estratégia.

//+------------------------------------------------------------------+
//|                                         Bulls' Power signals.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()
  {
   double bullpowerArray[];
   double maArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(bullpowerArray,true);
   ArraySetAsSeries(maArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int bullpowerDef = iBullsPower(_Symbol,_Period,13);
   int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);

   CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);

   double emaVal = NormalizeDouble(maArray[0],6);

   double currentClose=NormalizeDouble(priceArray[2].close,6);

   if(bullpowerVal<0 && currentClose<emaVal)
     {
      Comment("Sell Signal","\n",
              "Current Close Value is ",currentClose,"\n",
              "Current EMA Value is ",emaVal,"\n",
              "Bull's Power Value is ",bullpowerVal);
     }

   if(bullpowerVal>0 && currentClose>emaVal)
     {
      Comment("Buy Signal","\n",
              "Current Close Value is ",currentClose,"\n",
              "Current EMA Value is ",emaVal,"\n",
              "Bull's Power Value is ",bullpowerVal);
     }
  }
//+------------------------------------------------------------------+

Diferenças neste código:

Criação de três arrays, bullpowerArray, maArray e priceArray.

   double bullpowerArray[];
   double maArray[];
   MqlRates priceArray[];

Ordenação desses três arrays criados.

   ArraySetAsSeries(bullpowerArray,true);
   ArraySetAsSeries(maArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

Definiremos o indicador Bull's Power usando o "iBullsPower" da mesma forma que mencionamos antes, depois de criar uma variável inteira para o "bullpowerDef" e o indicador Moving Average usando a função "iMA" que retorna o manipulador do indicador de média móvel depois de criar uma variável inteira para a "maDef".

   int bullpowerDef = iBullsPower(_Symbol,_Period,13);
   int maDef = iMA(_Symbol,_Period,13,0,MODE_EMA,PRICE_CLOSE);

Preenchendo o array usando a função "CopyBuffer" para obter os dados do Bull's Power e os indicadores da média móvel.

   CopyBuffer(bullpowerDef,0,0,3,bullpowerArray);
   CopyBuffer(maDef,0,0,3,maArray);

Nós definiremos o bull's power atual, a média móvel exponencial e o preço de fechamento atual.

   double bullpowerVal = NormalizeDouble(bullpowerArray[0],6);
   double emaVal = NormalizeDouble(maArray[0],6);
   double currentClose=NormalizeDouble(priceArray[2].close,6);

Condições desta estratégia:

No caso do sinal de venda

   if(bullpowerVal<0 && currentClose<emaVal)
     {
      Comment("Sell Signal","\n",
              "Current Close Value is ",currentClose,"\n",
              "Current EMA Value is ",emaVal,"\n",
              "Bull's Power Value is ",bullpowerVal);
     }

No caso do sinal de compra:

   if(bullpowerVal>0 && currentClose>emaVal)
     {
      Comment("Buy Signal","\n",
              "Current Close Value is ",currentClose,"\n",
              "Current EMA Value is ",emaVal,"\n",
              "Bull's Power Value is ",bullpowerVal);
     }

Após compilar este código, nós encontraremos o expert na janela do navegador igual a imagem a seguir:

 Bulls power Nav3

Ao clicar duas vezes neste expert para execução, nós encontraremos sua janela igual à seguinte:

 Janelas do Bulls Power Signals

Após pressionar "OK", o expert será anexado ao gráfico da mesma forma que a imagem a seguir:

Bulls Power Signals anexado

Podemos ver que o expert está anexado ao gráfico no canto superior direito. Então, podemos encontrar os sinais gerados com base neste sistema de negociação da mesma forma que o seguinte:

No caso do sinal de venda:

 Bulls Power Signals - venda

Como podemos ver no gráfico temos um comentário com os seguintes valores:

Em caso de sinal de compra:

 Bulls Power Signals - compra

Podemos ver no gráfico o sinal desejado com um comentário no gráfico com os seguintes valores:

Nós criamos um sistema de negociação para cada estratégia mencionada para gerar sinais automatizados.

Conclusão

Espero que eu tenha abordado o básico deste indicador através dos tópicos anteriores. Aprendemos com mais detalhes o que é o indicador Bulls's Power, o que ele mede, como nós podemos calculá-lo, como podemos lê-lo e como podemos inserir e usar o indicador Bull's Power, que está integrado na MetaTrader 5 através do tópico Definição do Bulls's Power. Após isso, aprendemos como usar o indicador com base na ideia básica por trás do indicador por meio de algumas estratégias simples mencionadas, o objetivo básico dessas estratégias é aprender como podemos usar esse indicador. Eu aconselho você a testar qualquer coisa que você saiba antes de usar em uma conta real para se certificar de que ela é adequada para a sua negociação e seu plano. Essas estratégias foram as mesmas que a seguir:

Após isso, desenvolvemos um esquema passo a passo para cada estratégia mencionada para nos ajudar a criar um sistema de negociação de maneira suave e fácil, depois de organizar as nossas ideias por meio desses esquemas. Então, nós aprendemos como criar um sistema de negociação para cada estratégia mencionada para obter os sinais automaticamente após desenvolvê-los em MQL5 para serem executados na plataforma de negociação MetaTrader 5. Espero que você tenha aplicado e tentado escrever o código mencionado sozinho, pois isso o ajudará a melhorar seu processo de codificação e aprendizado, se desejar, e isso melhorará sua curva de aprendizado como programador.

Espero também que você ache este artigo útil para aprimorar sua negociação e melhorar os seus resultados de negociação. Se você quiser ler mais artigos semelhantes sobre como desenvolver um sistema de negociação com base nos indicadores técnicos mais populares, você pode ler os meus outros artigos desta série, pois temos muitos indicadores técnicos que compartilhamos nesses artigos e sistemas de negociação projetados com base neles e no conceito básico por trás deles por meio de estratégias simples.