English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
preview
Como desenvolver um sistema de negociação baseado no indicador Oscilador de Chaikin

Como desenvolver um sistema de negociação baseado no indicador Oscilador de Chaikin

MetaTrader 5Negociação | 19 outubro 2022, 08:59
369 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Aqui está um novo artigo que completa a nossa série sobre como desenvolver um sistema de negociação pelos indicadores técnicos mais populares, nós aprenderemos como fazer isso usando o indicador técnico Oscilador de Chaikin.

Nós aprenderemos sobre este indicador técnico em detalhes através dos seguintes tópicos:

  1. Definição do Oscilador de Chaikin
  2. Estratégia do Oscilador de Chaikin
  3. Esquema da estratégia do Oscilador de Chaikin
  4. Sistema de negociação utilizando o Oscilador de Chaikin
  5. Conclusão

Através deste novo artigo, nós aprenderemos como desenvolver um sistema de negociação pelo indicador Oscilador de Chaikin. Nós aprenderemos o que é o indicador Oscilador de Chaikin, o que ele mede e como nós podemos calculá-lo manualmente para aprender o principal conceito por trás dele. Aprendemos como nós podemos usar este indicador através das estratégias simples baseadas no conceito básico por trás dele através do tópico da estratégia do Oscilador de Chaikin. Após isso, nós aprenderemos a desenvolver um esquema passo a passo para cada uma das estratégias analisadas, que são usadas para desenvolver os sistemas de negociação baseados no Oscilador de Chaikin de maneira suave e fácil. Em seguida, nós criaremos um sistema de negociação para cada estratégia mencionada e executá-las para receber os sinais de forma automática pela MetaTrader 5. Isso será através do tópico sistema de negociação utilizando o Oscilador de Chaikin.

Nós usaremos a MQL5 (MetaQuotes Language) para escrever o código da estratégia de negociação para executá-la na MetaTrader 5 para nos fornecer os sinais de maneira automática. Se você quiser baixar e usar a MetaTrader 5 para usar a MQL5, você pode ler o tópico Escrevendo em MQL5 no MetaEditor do artigo anterior.

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 nosso artigo com os nossos tópicos.


Definição do Oscilador de Chaikin

Nesta parte, nós aprenderemos em detalhes sobre o indicador Oscilador de Chaikin, o que nos permitirá entender o conceito básico por trás do indicador. O indicador Oscilador de Chaikin é um indicador de momentum, criado por Marc Chaikin e está muito claro que o indicador tem o nome do seu criador. Ele mede o momentum da linha de distribuição e acumulação usando a fórmula da média móvel convergência e divergência (MACD). Ao medir esse momentum, nós podemos obter "insights" sobre as mudanças direcionais na linha de distribuição e acumulação.

Se nós quisermos calcular o Oscilador de Chaikin manualmente para entender melhor o conceito por trás dele, nós podemos fazer isso através das seguintes etapas:

  1. Cálculo do multiplicador do fluxo de dinheiro = ((fechamento - mínima) - (máxima - fechamento))/(máxima - mínima)
  2. Cálculo do volume do fluxo de dinheiro = multiplicador do fluxo de dinheiro * volume
  3. Cálculo da Linha de Distribuição e Acumulação (ADL) = ADL anterior + volume do fluxo de dinheiro atual
  4. Oscilador de Chaikin = (EMA de 3 períodos de ADL) - (EMA de 10 períodos de ADL)

Hoje em dia, nós não precisamos calcular o indicador manualmente, pois você pode simplesmente inseri-lo no gráfico já que ele se ecnontra embutido na MetaTrader 5. O que você precisa fazer é escolhê-lo entre os indicadores disponíveis, mas aqui nós aprenderemos como nós podemos fazer isso para aprender o conceito principal por trás dele.

Nós podemos inseri-lo no gráfico clicando na guia Inserir na MetaTrader 5 --> Indicadores --> Oscilladores --> Oscilador de Chaikin. A imagem a seguir é para essas etapas:

Inserção do oscilador Chaikin

Após escolher o indicador Oscilador de Chaikin, nós encontraremos a janela de parâmetros do indicador igual à seguinte:

 Parâmetros do Oscilador de Chaikin

1- Determinar o tipo do volume.

2- Determinar o período da média móvel rápida.

3- Determinar o período da média móvel lenta.

4- Determinar o tipo da média móvel.

5- Determina a cor da linha do indicador.

6- Determinar o tipo da linha do indicador.

7- Determinar a espessura da linha do indicador.

Após determinar os parâmetros desejados, nós podemos encontrar o indicador inserido no gráfico como a seguir.

Oscilador de Chaikin inserido

Como nós podemos ver, o indicador está inserido na parte inferior da imagem anterior e mostrando que a linha do indicador está oscilando acima e abaixo do nível zero.


Estratégia do Oscilador de Chaikin

Neste tópico, nós aprenderemos as estratégias simples para usar o indicador Osiclador de Chaikin com base em seu conceito principal. Ela será uma boa abordagem quando nós pensarmos em como nós podemos usar outra ferramenta técnica para aprimorar e dar mais peso à nossa decisão e essa é uma das características do uso da análise técnica. No entanto, não devemos esquecer o quão importante é testar minuciosamente qualquer ferramenta antes de usá-la em uma conta ativa. Afinal, o que funciona para os outros pode não funcionar para você.

  • Estratégia um: Cruzamento do Oscilador de Chaikin:

De acordo com essa estratégia, nós precisamos obter os sinais de compra ou venda com base no cruzamento entre o valor atual de Chaikin e o nível zero. Quando o valor atual de Chaikin ficar acima do nível zero, isso será um sinal de compra. No outro cenário, quando o valor atual de Chaikin ficar abaixo do nível zero, isso será um sinal de venda.

Simplesmente,

O valor atual de Chaikin > nível zero --> sinal de compra.

O valor atual de Chaikin < nível zero --> sinal de venda.

  • Estratégia dois: Movimento do Oscilador de Chaikin:

De acordo com essa estratégia, nós precisamos obter um sinal com o movimento da curva do indicador de Chaikin com base nos dois últimos valores. Quando o valor atual de Chaikin for maior que o valor anterior, isso será um sinal de um movimento ascendente. E vice-versa, quando o valor atual de Chaikin for menor que o valor anterior, isso será um sinal de um movimento de declínio.

Simples,

O valor de Chaikin atual > o valor de Chaikin anterior --> movimento ascendente.

O valor de Chaikin atual < o valor de Chaikin anterior --> movimento de declínio.

  • Estratégia três: Oscilador de Chaikin - Tendência de alta:

Com base nessa estratégia, durante a tendência de alta, nós precisamos saber se há um forte movimento de alta ou se há uma divergência de baixa com base na avaliação dos valores das máximas atuais e anteriores e dos valores de Chaikin atuais e anteriores. Se a máxima atual for maior que a máxima anterior e o valor de Chaikin atual for maior que o anterior, isso será um sinal de um forte movimento de alta durante a tendência de alta. Se a máxima atual for maior que a máxima anterior e o valor de Chaikin atual for menor que o anterior, isso será um sinal de divergência de baixa.

A máxima atual > a máxima anterior e Chaikin atual > Chaikin anterior --> Movimento forte para cima durante a tendência de alta.

A máxima atual > a máxima anterior e Chaikin atual < Chaikin anterior --> divergência de baixa.

  • Estratégia quatro: Oscilador de Chaikin - Tendência de baixa:

Com base nessa estratégia, durante a tendência de baixa, nós precisamos saber se há um forte movimento de baixa ou se há uma divergência de alta com base na avaliação dos valores das mínimas atuais e anteriores e dos valores atuais e anteriores de Chaikin. Se a mínima atual for inferior à mínima anterior e o valor atual de Chaikin for inferior ao anterior, este será um forte movimento de baixa durante a tendência de baixa. Se a mínima atual for menor que a anterior e Chaikin atual for maior que a anterior, isso será um sinal de divergência de alta.

A mínima atual < a baixa anterior e Chaikin atual < Chaikin anterior --> Forte movimento de baixa durante a tendência de baixa.

A mínima atual < a mínima anterior e Chaikin atual > Chaikin anterior --> divergência de alta.


Esquema da estratégia do Oscilador de Chaikin

Neste tópico, nós vamos desenvolver um esquema passo a passo para nos ajudar a criar o nosso sistema de negociação para cada estratégia mencionada. Eu acredito que este passo é muito importante, pois ele irá organizar as nossas ideias de forma a atingir o nosso objetivo. Agora vamos começar a fazer isso.

  • Estratégia um: Cruzamento do Oscilador de Chaikin:

De acordo com essa estratégia, nós precisamos criar um sistema de negociação que retorne um comentário específico no gráfico quando uma condição específica for atendida. Nós precisamos que o sistema de negociação verifique o valor do Oscilador de Chaikin a cada tick e quando esse valor se tornar acima do nível zero, nós precisamos que o sistema de negociação mostre um comentário no gráfico com o sinal de compra e o valor atual de Chaikin. No outro cenário, precisamos que o sistema de negociação mostre um comentário no gráfico com um sinal de venda e o valor atual de Chaikin, quando o valor de Chaikin estiver abaixo do nível zero.

Segue uma imagem deste projeto.

Esquema do cruzamento do Oscilador de Chaikin

  • Estratégia dois: Movimento do Oscilador de Chaikin:

Com base nessa estratégia, nós precisamos que o sistema de negociação verifique os dois valores a cada tick e decida qual deles é maior que o outro. Esses dois valores são o Oscilador de Chaikin atual e anterior. Quando o valor atual for maior que o anterior, nós precisamos que o sistema de negociação mostre um comentário dizendo que o Oscilador de Chaikin está subindo e com o valor atual e anterior de Chaikin. Quando o valor atual for menor que o anterior, nós precisamos que o sistema de negociação mostre um comentário dizendo que o Oscilador de Chaikin está caindo e com o valor atual e anterior de Chaikin.

A imagem a seguir contém o esquema desta estratégia.

Esquema do Movimento do Oscilador de Chaikin

  • Estratégia três: Oscilador de Chaikin - Tendência de alta:

De acordo com essa estratégia, nós precisamos que o sistema de negociação verifique a cada tick quatro valores, sendo a máxima atual e anterior e o valor atual e anterior de Chaikin. Nós precisamos do sistema de negociação após a verificação desses valores para decidir qual valor é maior que o outro entre as máximas atuais e anteriores e entre os valores atuais e anteriores de Chaikin. Quando a alta atual é maior que a alta anterior e o Chaikin atual é maior que o valor Chaikin anterior, precisamos que o sistema de negociação retorne um comentário com um forte movimento ascendente durante a tendência de alta, valor alto atual, valor alto anterior, Chaikin atual valor, e o valor anterior de Chaikin cada valor em uma linha separada. No outro cenário, quando a máxima atual for maior que a máxima anterior e o valor de Chaikin atual for menor que o anterior, nós precisamos que o sistema de negociação mostre os comentários no gráfico dizendo que há divergência de baixa, o valor da máxima atual e anterior e o valor de Chaikin atual e anterior.

A seguir está uma imagem do esquema desta estratégia.

Esquema do Oscilador de Chaikin

  • Estratégia quatro: Oscilador de Chaikin - Tendência de baixa:

Com base nessa estratégia, nós precisamos criar um sistema de negociação que verifique a cada tick os quatro valores e esses valores são a mínima atual e anterior e o valor de chaikin atual e anterior. Em seguida, decidir se o valor da mínima atual é menor que a mínima anterior e o valor de chaikin atual é menor que o anterior, nós precisamos que o sistema de negociação mostre os comentários no gráfico que diz um forte movimento para baixo, o valor da mínima atual e anterior e valor atual e anterior de Chaikin. O outro cenário para detectar a divergência ocorre quando o valor da mínima atual é menor que o anterior e o valor atual de chaikin é maior que o anterior, nós precisamos que o sistema de negociação mostre um comentário com a divergência de alta, o valor da mínima atual e anterior e o valor de Chaikin atual e anterior.

A imagem a seguir é deste esquema.

Oscilador de Chaikin - esquema da tendência de baixa

O oscilador de Chaikin está subindo

Sistema de negociação utilizando o Oscilador de Chaikin

Nesta parte, nós aprenderemos como transformar as estratégias mencionadas em um sistema de negociação em MQL5 para funcionar de maneira automática. Então, agora nós vamos começar a desenvolver um sistema de negociação simples para mostrar o valor atual do Oscilador de Chaikin no gráfico como um comentário automático e usaremos esse sistema de negociação como base nas nossas estratégias mencionadas. Segue como criar este sistema de negociação.

  • Criamos uma matriz do Oscilador de Chaikin usando a função "double" que representa os valores fracionários. O tipo de dado double é um dos tipos de ponto flutuante.
double chaiArray[];
  • Ordenamos esta matriz criada a partir dos dados atuais e faremos isso usando a função "ArraySetAsSeries" que retorna um valor booleano. Os parâmetros do "ArraySetAsSeries" são:
    • Uma matriz[]
    • Sinalizador
ArraySetAsSeries(chaiArray,true);
  • Criamos uma variável inteira do chaiDef para definir o Oscilador de Chaikin usando a função "iChaikin". Esta função retorna o manipulador do indicador Oscilador de Chaikin. Os parâmetros desta função são:
    • símbolo, para definir o nome do símbolo, nós especificaremos "_Symbol" a ser aplicado no gráfico atual.
    • period, para definir o período de tempo, especificaremos "_Period" a ser aplicado aos períodos atuais.
    • fast_ma_period, para definir o o período da média rápido, nós definiremos 3 como padrão.
    • slow_ma_period, para definir o período da média lenta, nós definiremos 10 como padrão.
    • ma_method, para determinar o tipo da média móvel, nós usaremos a média móvel exponencial (MODE_EMA).
    • applied_volume, para determinar o tipo de volume, usaremos o volume do tick (VOLUME_TICK).
int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);
  • Copiamos os dados de preço para o array de chaiArray usando a função "CopyBuffer" que retorna a contagem de dados copiados ou -1 se houver um erro. Os parâmetros desta função são:
    • indicator_handle, especificaremos a definição do indicador Definição "chaiDef".
    • buffer_num, para definir o número do buffer do indicador, definiremos um valor igual a 0.
    • start_pos, para definir a posição inicial, definiremos um valor igual a 0.
    • count, para definir a quantidade a ser copiada, definiremos um valor igual a 3.
    • buffer[], para determinar o array de destino a ser copiado, nós determinaremos "chaiArray".
CopyBuffer(chaiDef,0,0,3,chaiArray);
  • Obtemos o valor do oscilador Chaikin usando a função do tipo double "NormalizeDouble" após a criação de uma variável do tipo double de "chaiVal". Os parâmetros do "Normalizeddouble" são:
    • valor, para determinar o número normalizado, especificaremos "chaiArray[0]", usaremos 0 para retornar o valor atual
    • dígitos, para determinar o número de dígitos após o ponto decimal, determinaremos 6.
int chaiVal = NormalizeDouble(chaiArray[0],6);
  • Usando a função comment para mostrar no gráfico o valor atual do Oscilador de Chaikin..
Comment("Chaikin Oscillator Value is ",chaiVal);

A seguir está o código completo para criar este sistema de negociação simples.

//+------------------------------------------------------------------+
//|                                    Simple Chaikin Oscillator.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);

   Comment("Chaikin Oscillator Value is ",chaiVal);

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

Após compilar este código, nós podemos encontrar o arquivo deste programa na janela do navegador na pasta Expert Advisors igual ao seguinte.

Nav

Quando nós quisermos executar este expert no gráfico, nós vamos arrastá-lo e soltá-lo no gráfico e então a seguinte janela se abrirá:

Janela Simple Chaikin Oscillator

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

Simple Chaikin Oscillator anexado

É possível visualizar no canto direito da imagem anterior que o expert está anexado ao gráfico. Então, nós podemos encontrar os sinais gerados da mesma forma que o seguinte.

Sinal do Oscilador de Chaikin

Como nós podemos ver no exemplo anterior do teste, no canto superior esquerdo do gráfico nós temos um comentário com o valor atual do Oscilador de Chaikin. Se nós quisermos ter certeza de que o valor gerado será o mesmo que o valor do indicador embutido na MetaTrader5, nós podemos inserir o indicador embutido com os parâmetros após anexar o expert advisor e encontrar os mesmos valores.

Oscilador de Chaikin mesmo valor

Como nós podemos ver no canto direito do gráfico o expert advisor está anexado ao gráfico e no canto esquerdo nós podemos encontrar o valor gerado de acordo com o expert, que é o mesmo valor do indicador inserido na janela abaixo.

  • Estratégia um: Cruzamento do Oscilador de Chaikin:

Segue o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator Crossover.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);
   
   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

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

Diferenças neste código:

Condições do cruzamento do oscilador de Chaikin:

No caso de um sinal de compra,

   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

No caso de um sinal de venda,

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

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

Nav1

Depois de arrastá-lo e soltá-lo no gráfico, a janela do expert aparecerá da seguinte forma:

Janela do Cruzamento do Oscilador de Chaikin

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

Chaikin Oscillator Crossover anexado

Nós podemos ver no canto superior direito que o expert do Cruzamento do Oscilador de Chaikin está anexado ao gráfico, sendo possível ver os sinais gerados de acordo com essa estratégia. A seguir temos um exemplo.

No caso de um sinal de compra,

Chaikin Oscillator Crossover - sinal de compra

Podemos ver no canto superior esquerdo do gráfico, que o sinal de compra foi gerado quando o valor do Oscilador de Chaikin cruzou acima do nível zero.

No caso de um sinal de venda,

Chaikin Oscillator Crossover - sinal de venda

Podemos ver no canto superior esquerdo do gráfico, que o sinal de venda foi gerado quando o valor do Oscilador de Chaikin cruzou abaixo do nível zero.

  • Estratégia dois: Movimento do Oscilador de Chaikin:

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

//+------------------------------------------------------------------+
//|                                  Chaikin Oscillator 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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

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

Definição dos valores atuais e anteriores do Oscilador de Chaikin.

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Condições da estratégia.

Em caso de alta,

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Em caso de baixa,

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Depois de compilar este código, nós vamos encontrá-lo na janela do navegador da seguinte forma:

 Nav2

Depois de arrastar e soltar o expert no gráfico, nós encontraremos a janela do programa da seguinte forma:

Janela Chaikin Oscillator Movement

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

Chaikin Oscillator Movement anexado

A seguir estão exemplos dos sinais gerados com base nesta estratégia.

Em caso de alta com os dados atuais:

Movimento do Oscilador de Chaikin - sinal ascendente com o atual

Em caso de aumento com os dados anteriores,

Movimento do Oscilador de Chaikin - sinal ascendente com o anterior

Como nós podemos ver nos gráficos anteriores no canto superior esquerdo temos três linhas:

  • Oscilador de Chaikin está subindo
  • Valor atual do Oscilador de Chaikin
  • Valor anterior do Oscilador de Chaikin

O outro cenário em caso de queda com os dados atuais,

Movimento do oscilador de Chaikin - sinal em queda com o atual

Em caso de queda com os dados anteriores,

Movimento do Oscilador de Chaikin - sinal em queda com o anterior

Nós podemos ver nos gráficos anteriores, que nós temos um comentário no gráfico no canto superior esquerdo:

O Oscilador de Chaikin está em queda.

Valor atual do Oscilador de Chaikin.

Valor anterior do Oscilador de Chaikin.

  • Estratégia três: Oscilador de Chaikin - Tendência de alta:

Segue o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator - Uptrend.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 chaiArray[];
   MqlRates priceArray[];

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

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


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

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

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

Criação de dois arrays para o ChaiArray e o priceArray usando a função "MqlRates" que armazena as informações sobre preços, volumes e o spread.

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

Definição dos valores do Oscilador de Chaikin atual e anterior.

int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Definição do valor da máxima atual e anterior.

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

Condições desta estratégia:

No caso de um movimento forte durante a tendência de alta:

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Em caso de divergência de baixa:

   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Após a compilação, nós podemos encontrar este expert advisor na janela do navegador para executá-lo:

 Nav3

Depois de arrastá-lo e soltá-lo no gráfico, a janela do expert aparecerá da seguinte forma:

Janela do Chaikin Oscillator - Uptrend

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

Chaikin Oscillator - Uptrend anexado

A seguir estão os exemplos dos sinais gerados com base neste sistema de negociação.

No caso de um movimento forte com os dados atuais:

Chaikin Oscillator - Uptrend - forte - dados atuais

No caso de um movimento forte com os dados anteriores:

Chaikin Oscillator - Uptrend - forte - dados anteriores

Nós podemos ver nos dois gráficos anteriores que temos cinco linhas de comentários no canto superior esquerdo do gráfico, são elas:

  •  Um forte movimento de alta durante a tendência de alta
  • O valor da máxima atual
  • O valor da máxima anterior
  • O valor atual de Chaikin
  • O valor anterior de Chaikin

No outro cenário quando nós temos uma divergência de baixa com os dados atuais nós podemos ver um exemplo para este caso igual ao seguinte:

Chaikin Oscillator - Uptrend - divergência - dados atuais

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

Chaikin Oscillator - Uptrend - divergência - dados anteriores

Como nós podemos ver nos dois gráficos anteriores, nós temos um comentário com cinco linhas:

Divergência de baixa.

O valor da máxima atual.

O valor da máxima anterior.

O valor atual de Chaikin.

O valor anterior de Chaikin.

  • Estratégia quatro: Oscilador de Chaikin - Tendência de baixa:

Segue o código completo para criar um sistema de negociação baseado nesta estratégia:

//+------------------------------------------------------------------+
//|                               Chaikin Oscillator - Downtrend.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 chaiArray[];
   MqlRates priceArray[];

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

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentLowVal=NormalizeDouble(priceArray[2].low,6);
   double prevLowVal=NormalizeDouble(priceArray[1].low,6);

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

A diferença neste código são as condições desta estratégia:

No caso de um forte movimento de baixa durante a tendência de baixa,

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Em caso de divergência de alta:

   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

 Nav4

Depois de arrastar e soltar o expert no gráfico, nós encontraremos a janela do programa da seguinte forma:

Janela do Chaikin Oscillator - Downtrend

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

Chaikin Oscillator - Downtrend anexado

Veja a seguir os exemplos de sinais gerados com base nessa estratégia durante o teste:

Em caso de forte queda durante a tendência de baixa com os dados atuais,

Chaikin Oscillator - Downtrend - forte - dados atuais

Em caso de forte queda com os dados anteriores,

Chaikin Oscillator - Downtrend - forte - dados anteriores

Como nós podemos ver nos dois gráficos anteriores, nós temos um comentário com cinco linhas:

  • Forte movimento de baixa durante a tendência de baixa
  • O valor da mínima atual
  • O valor da mínima anterior
  • O valor atual de Chaikin
  • O valor anterior de Chaikin

No outro cenário de divergência de alta nós podemos ver os exemplos dos sinais gerados como a seguir:

Em caso de divergência de alta com os dados atuais,

Chaikin Oscillator - Downtrend - divergência - dados atuais

Em caso de divergência de alta com os dados anteriores,

Chaikin Oscillator - Downtrend - divergência - dados anteriores 

Como nós podemos ver nos dois gráficos anteriores, nós temos um comentário com cinco linhas:

  • Divergência de alta
  • O valor da mínima atual
  • O valor da mínima anterior
  • O valor atual de Chaikin
  • O valor anterior de Chaikin


Conclusão

Após os tópicos anteriores, nós aprendemos detalhadamente sobre o Oscilador de Chaikin. Nós aprendemos o que ele é, o que ele mede, como podemos calculá-lo manualmente e como podemos usar e inserir o indicador embutido na MetaTrader 5. Também vimos como usá-lo com estratégias simples baseadas em seu conceito básico. Analisamos as três estratégias a seguir:

  • Cruzamento do Oscilador de Chaikin: para obter os sinais de compra e venda com base no cruzamento do nível zero.
  • Movimento do Oscilador de Chaikin: para obter sinais e nos informar se o movimento da linha do indicador é de alta ou de queda.
  • Oscilador de Chaikin - Tendência de alta: para obter os sinais quando nós temos um forte movimento de alta durante a tendência de alta ou se há uma divergência de baixa.
  • Oscilador de Chaikin - Tendência de baixa: para receber os sinais quando nós temos um forte movimento de baixa durante a tendência de baixa ou se há uma divergência de alta.

Nós desenvolvemos também um esquema para cada estratégia para nos ajudar a criar um sistema de negociação para cada uma delas, pois este é um passo muito importante para organizar a nossa ideia e alcançar o nosso objetivo de forma suave. Nós aprendemos como criar um sistema de negociação para cada estratégia analisada e gerar os sinais de maneira automática após executá-los na MetaTrader 5 para facilitar e aprimorar nossas negociações e obter um melhor resultado, além de economizar o nosso tempo.

É importante confirmar novamente que você deve testar qualquer estratégia antes de usá-la em sua conta real, pois não há nada adequado para todas as pessoas. Eu aconselho você a aplicar o que você leu neste artigo pois a prática é um fator importante para a melhoria. Se você achar este artigo útil e precisar ler mais artigos semelhantes, você pode ler meus outros artigos nesta série sobre como você pode desenvolver um sistema de negociação com base nos indicadores técnicos mais populares.

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/11242

DoEasy. Controles (Parte 10): Objetos WinForms, dando vida à interface DoEasy. Controles (Parte 10): Objetos WinForms, dando vida à interface
Chegou a hora de dar vida à interface gráfica e criar funcionalidades para a interação de objetos com o usuário e outros objetos. E para que objetos mais complexos funcionem corretamente, já precisamos que os objetos interajam entre si e interajam com o usuário.
Como desenvolver um sistema de negociação baseado no indicador Desvio Padrão Como desenvolver um sistema de negociação baseado no indicador Desvio Padrão
Aqui está um novo artigo em nossa série sobre como desenvolver um sistema de negociação pelos indicadores técnicos mais populares na plataforma de negociação MetaTrader 5. Neste novo artigo, nós aprenderemos como desenvolver um sistema de negociação pelo indicador Desvio Padrão.
DoEasy. Controles (Parte 11): Objetos WinForms - grupos, objeto WinForms CheckedListBox DoEasy. Controles (Parte 11): Objetos WinForms - grupos, objeto WinForms CheckedListBox
Neste artigo, consideraremos como agrupar objetos WinForms e criar um objeto-lista de objetos CheckBox.
Aprendendo a construindo um EA que opera de forma automática (Parte 01): Conceitos e estruturas Aprendendo a construindo um EA que opera de forma automática (Parte 01): Conceitos e estruturas
Aprenda como criar um EA que opera de forma automática, isto de forma simples e o mais seguro possível.