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

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

MetaTrader 5Negociação | 22 setembro 2022, 09:21
492 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introdução

Neste artigo nós continuaremos a nossa série sobre como desenvolver sistemas de negociação simples com base nos indicadores técnicos mais populares para nos ajudar a aprender a programar em MQL5. Neste novo artigo, nós veremos o novo indicador técnico chamado Índice de Fluxo de Dinheiro (MFI). Nós aprenderemos este indicador em detalhes e descobriremos como desenvolver um sistema de negociação simples baseado no conceito principal por trás dele. Por isso, nós abordaremos esse indicador através dos seguintes tópicos:

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

Se você leu os outros artigos da série, poderá descobrir que ele tem o mesmo arranjo de tópicos com novas informações sobre o indicador e alguns códigos conforme as estratégias mencionadas para tentar aprender novos conceitos sobre a negociação e o desenvolvimento em MQL5. Nós aprenderemos o que é o indicador MFI, o que ele mede e como nós podemos calculá-lo manualmente para aprender o principal conceito por trás dele. Em seguida, nós veremos um exemplo de cálculo do indicador MFI. Claro, estes são apenas o básico. Nós precisamos aprender um tópico mais importante sobre como usá-lo em estratégias simples, considerando o conceito básico por trás dele. Depois disso, nós projetaremos um plano passo a passo para cada estratégia mencionada para nos ajudar a projetar um sistema de negociação para eles. O tópico mais interessante é descobrir como nós podemos criar um sistema de negociação para essas estratégias por meio da linguagem MQL5 e poder executá-lo na plataforma de negociação MetaTrader 5.

Para poder criar o seu próprio sistema de negociação com base em sua estratégia de negociação vencedora, eu aconselho que você faça todo o desenvolvimento sozinho. Não fique satisfeito apenas lendo, mas aplique o que você lê e desenvolva cada código sozinho. Será melhor buscar por funções e conceitos de programação para saber mais sobre eles, pois isso o ajudará a conhecer cada vez mais. Não se esqueça que uma das habilidades mais importantes de qualquer programador de sucesso é saber pesquisar efetivamente além da prática, pois essas duas coisas são muito importantes em qualquer processo de aprendizado ou desenvolvimento.

Além disso, você deve testar qualquer estratégia antes de usá-la, principalmente se o objetivo principal for educacional. Não existe uma estratégia que seja adequada para todas as pessoas. Então, o que pode ser útil para mim, pode não ser útil para você.

Através deste artigo, nós usaremos a linguagem de programação MetaQuotes Language (MQL5) para escrever os códigos das estratégias utilizando o MetaEditor que está embutido na MetaTrader 5. Se você quiser saber como baixar e usar o MetaEditor, leia o tópico Escrevendo o código 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 estudar um novo tema e expandir o nosso arsenal de ferramentas de negociação.


Definição do MFI

Nesta seção, nós descreveremos o indicador Índice de Fluxo de Dinheiro (MFI) em detalhes e veremos o conceito por trás desse indicador, que é um dos indicadores baseados no volume. Nós aprenderemos o que ele é, o que ele mede e como podemos calculá-lo manualmente através da análise de um exemplo.

Como já mencionado no artigo anterior, o volume é um fator vital na negociação. A análise completa do volume nos dá uma vantagem na negociação, pois o mercado tem muitos aspectos que podem afetá-lo. Quanto mais aspectos você compreender, melhores decisões poderão serem tomadas, pois o conhecimento adquirido aumenta o peso das evidências que o orientam a uma direção específica para a tomada de decisões.

Se nós tivermos um ativo apresentando compras e vendas com um alto volume, então esse ativo é de maior significância comparado com aquele que possui uma quantidade menor de negócios. Nos mercados financeiros, o volume é um número de ações ou contratos negociados durante um período de tempo. É bom ver um volume alto quando o preço rompe a resistência durante uma tendência de alta ou um suporte durante uma tendência de baixa, pois esse é um dos sinais importantes da força do movimento. É melhor quando o volume se move com a tendência de subir durante o movimento de alta e diminuir durante uma correção na tendência de alta, bem como diminuir durante um movimento de baixa e subir durante uma correção. Se nós vemos o movimento do volume com a tendência, este é um dos sinais importantes que confirmam a tendência atual.

O indicador Índice de Fluxo de Dinheiro (MFI) foi criado por Gene Quong e Avrum Soudack. Este é um indicador baseado em volume, mas ele usa o preço e o volume em seu cálculo para medir a pressão de compra e venda. Ele se move entre zero e 100. Um aumento no indicador MFI significa que há pressão de compra e vice-versa, uma diminuição no MFI significa que há pressão de venda. Ele pode confirmar a direção da tendência ou pode dar um aviso para reversões. Se você quiser saber mais sobre a tendência, você pode ler o tópico da definição da tendência de um dos artigos anteriores.

O cálculo manual do MFI consiste em várias etapas:

  • Cálculo do preço típico (TP) = (máxima+mínima+fechamento)/3
  • Cálculo do fluxo do dinheiro bruto = volume * TP
  • Determinação do movimento do TP: ascendente ou descendente. Se TP atual > TP anterior = ascendente, se TP atual < TP anterior = descendente.
  • Cálculo 1+MF = MF bruto de períodos ascendentes
  • Cálculo 1-MF = MF bruto de períodos descendentes
  • Cálculo 14 +MF = soma de 14 (1+MF)
  • Cálculo 14 -MF = soma de 14 (1-MF)
  • Cálculo da razão de 14 MF = 14+MF / 14-MF
  • Cálculo do MFI = 100-100/(1+MF)

Vejamos um exemplo para aplicar este cálculo supondo que nós tivéssemos os seguintes dados para um instrumento:

Dia Máxima Mínima Fechamento Volume
1 55 53 54 12000
2 56 54 55 10000
3 61 59 60 15000
4 67 64 65 20000
5 63 58 60 10000
6 58 52 55 5000
7 64 58 60 7000
8 52 47 50 7500
9 52 48 48 8000
10 50 48 49 5000
11 49 47 48 6000
12 48 47 47 7500
13 50 46 48 9000
14 52 45 47 10000
15 55 46 49 7000
16 53 45 47 7500
17 51 43 46 6000
18 50 42 44 5000
19 50 43 45 15000

Se nós precisarmos calcular o indicador MFI a partir dos dados anteriores, nós seguiremos as seguintes etapas:

Calculamos o preço típico (TP) = (máxima+mínima+fechamento)/3

Em seguida, obteremos os seguintes valores de TP:

 MFI calc2

Calculamos o fluxo de dinheiro bruto = volume * TP

MFI calc3

Determinamos o movimento do TP: para cima ou para baixo

MFI calc4

Encontramos 1+MF = MF bruto de períodos ascendentes

Encontramos 1-MF = MF bruto de períodos descendentes

 MFI calc5

Calculamos 14+MF = soma de 14 (1+MF)

Calculamos 14-MF = soma de 14 (1-MF)

MFI calc6

Calculamos a razão de 14 MF = 14+MF/14-MF

 MFI calc7

Calculamos MFI = 100-100/(1+MF)

MFI calc8

Durante as etapas anteriores, nós calculamos o indicador MFI manualmente, mas hoje em dia nós não precisamos fazer isso. Agora que nós aprendemos o conceito por trás do indicador, nós podemos usar o indicador embutido na MetaTrader 5. Tudo o que você precisa fazer é escolhê-lo entre os indicadores disponíveis:

Ao abrir a MetaTrader 5 -> clique na guia Inserir -> Indicadores -> Volumes -> Índice de Fluxo de Dinheiro

Inserção do MFI

Os parâmetros do indicador aparecerão após a escolha do Índice de Fluxo de Dinheiro:

Janela de parâmetros do MFI

1. Período do indicador desejado.

2. Tipo do volume (Tick ou Real).

3. Cor da linha do MFI.

4. Tipo da linha.

5. Espessura da linha do MFI.

Após clicar em OK, o indicador MFI é anexado ao gráfico:

 MFI anexado


Estratégia do MFI

Nesta seção, nós aprenderemos como nós podemos usar o indicador MFI depois de identificarmos o que ele é, o que ele mede e o principal conceito por trás dele. Agora, nós vamos aprender algumas estratégias simples que podem ser usadas.

  • Estratégia um: MFI - OB e OS:

De acordo com essa estratégia, nós identificaremos as áreas de sobrecompra (OB) e sobrevenda (OS). Quando o MFI se aproximar do nível 20, ele será um OS, e quando se aproximar do nível 80, ele será um OB. As áreas sobrevendidas aumentam o potencial de ascensão e, vice-versa, as áreas sobrecompradas aumentam o potencial de declínio.

Então, nós podemos dizer: 

MFI <= 20 --> OS

MFI >= 80 --> OB

  • Estratégia dois: MFI - tendência de alta - compra:

De acordo com essa estratégia, nós vamos esperar para ver o MFI abaixo ou igual a 50 para ver o sinal de compra ser acionado. Aproximar-se do nível 70 será um sinal de lucro. A lógica por trás dessa estratégia é que, na maioria das vezes, o MFI se move entre 50 e 70 durante uma tendência de alta.

Então,

MFI <= 50 --> Sinal de compra

MFI >= 70 --> Sinal de lucro

  • Estratégia três: MFI - tendência de baixa - venda:

Essa estratégia será o oposto da anterior (MFI - tendência de alta - compra), pois nós precisamos ver o MFI maior ou igual ao nível 50 para dizer que o sinal de venda é acionado e o lucro será sinalizado quando o MFI ficar menor ou igual ao nível 30. A lógica por trás disso é que, na maioria das vezes, o MFI se move entre os níveis 50 e 30 durante uma tendência de baixa.

Então,

MFI >=50 --> Sinal de venda

MFI <= 30 --> Lucro

  • Estratégia quatro: MFI - tendência de alta ou divergência:

De acordo com essa estratégia, nós precisamos do indicador para confirmar se o movimento atual é forte ou não. Nós podemos ver isso comparando o valor do MFI atual e anterior e a máxima atual e anterior e ver se há uma confirmação de que o movimento atual é forte ou há uma divergência. Então, durante uma tendência de alta, se o MFI atual for maior que o MFI anterior e a máximo atual for maior que o máxima anterior, isso significa que o movimento atual é forte, mas se o MFI atual for menor que o anterior e a máxima atual for maior que a alta anterior, isso significa que há uma divergência de baixa, pois o indicador não confirma o movimento do preço. Você pode ajustar o tamanho dos valores para compará-los, o que ajuda a entender o conceito.

Então,

MFI atual > MFI anterior e máxima atual > máxima anterior --> forte movimento de alta

MFI atual < MFI anterior e máxima atual > máxima anterior --> divergência de baixa

  • Estratégia cinco: MFI - tendência de baixa ou divergência:

Essa estratégia é o oposto da anterior (MFI - tendência de alta ou divergência), pois nós precisamos do indicador também para confirmar se o movimento atual é forte ou se há divergência em sua forma simples ao comparar apenas os dois valores. Então, se o MFI atual for menor que o anterior e a mínima atual for menor que a anterior, isso significa que o movimento de baixa atual é forte, mas se o MFI atual for maior que o anterior e a mínima atual for menor que a anterior, isso significa que há uma divergência de alta.

Simplesmente,

MFI atual < MFI anterior e mínima atual < mínima anterior --> forte movimento de baixa

MFI atual > MFI anterior e mínima atual < mínima anterior --> divergência de alta


Esquema da estratégia do MFI

Nesta seção, nós projetaremos um esquema para cada estratégia para nos ajudar na criação de um sistema de negociação para cada uma delas, mas primeiro nós desenvolveremos um esquema para um sistema de negociação simples para ser a base de todas as estratégias de negociação mencionadas. Este sistema simples exibirá o valor atual do MFI apenas como um comentário no gráfico. Então, nós precisamos que o computador verifique o valor do MFI a cada tick e depois exiba esse valor no gráfico como um comentário. O esquema para fazer isso é exibido abaixo:

Esquema simples do MFI

Agora, nós vamos projetar um esquema para cada estratégia da seguinte forma:

  • Estratégia um: MFI - OB e OS:

Com base nessa estratégia, nós precisamos fornecer instruções ao sistema de negociação para verificar o valor do MFI a cada tick e comparar esse valor com os níveis específicos (20 e 80) e decidir ou retornar o resultado como um comentário no gráfico de acordo com essa comparação. Se o MFI for menor ou igual a 20, ela retornará o valor do MFI sobrevendido e o atual como comentários em uma linha separada no gráfico. Se o MFI for maior ou igual a 80, ele retorna o MFI sobrecomprado e o atual como comentários em uma linha separada no gráfico. Se o MFI estiver acima de 20 e abaixo de 80, ele retornará apenas o valor atual do MFI. O esquema para fazer isso é o seguinte:

Esquema MFI -OB-OS

  • Estratégia dois: MFI - tendência de alta - compra:

De acordo com essa estratégia, nós precisamos que o sistema de negociação verifique também o valor do MFI, nos níveis 50 e 70 a cada tick para decidir se o MFI é menor ou igual a 50, portanto, ele deve retornar o sinal de compra. Se o MFI for maior ou igual a 70, ela deve retornar um sinal de lucro e a seguir está o esquema para fazer isso:

 Esquema MFI - Uptrend - Buy

  • Estratégia três: MFI - tendência de baixa - venda:

De acordo com essa estratégia, nós precisamos que o programa de negociação nos alerte com um sinal gerado com base na comparação entre os valores 50 e 30 do MFI. Se o MFI for maior ou igual a 50, ele deve retornar um sinal de venda e se o MFI for menor ou igual a 30, ela deve retornar um sinal de lucro. Segue o esquema para isso:

Esquema MFI - Downtrend - Sell

  • Estratégia quatro: MFI - tendência de alta ou divergência:

De acordo com essa estratégia, nós precisamos projetar um sistema de negociação capaz de verificar quatro valores (o MFI atual, anterior, máxima atual e máxima anterior) a cada tick e decidir qual sinal será gerado.

MFI atual > MFI anterior e máxima atual > máxima anterior --> sinal de alta forte

MFI atual < MFI anterior e máxima atual > máxima anterior --> divergência de baixa

A seguir está o esquema para fazer isso:

 Esquema MFI - Uptrend or divergence

 

  • Estratégia cinco: MFI - tendência de baixa ou divergência:

Esta estratégia é o oposto da anterior. De acordo com ela, nós precisamos desenvolver um sistema de negociação capaz de verificar quatro valores (o MFI atual, anterior, mínima atual e mínima anterior) a cada tick e decidir qual sinal será gerado.

MFI atual < MFI anterior e mínima atual < mínima anterior --> forte sinal de baixa

MFI atual > MFI anterior e mínima atual < mínima anterior --> divergência de alta

A seguir está o esquema para fazer isso:

Esquema MFI - Downtrend or divergence


Sistema de negociação do MFI

Nesta seção, nós projetaremos um sistema de negociação para cada estratégia mencionada escrevendo os nossos códigos em MQL5 para executá-los na MetaTrader 5. Nós começaremos com o MFI simples que gera um comentário no gráfico com o valor atual do MFI.

  • Criamos uma matriz para o MFI usando a função 'double' para representar os valores com frações.
double MFIArray[];
  • Ordenamos a matriz MFI dos dados atuais usando a função ArraySetAsSeries para retornar um resultado booleano (true ou false) e seus parâmetros são (array[] e flag).
ArraySetAsSeries(MFIArray,true);
  • Definimos o MFI usando a função iMFI depois de criar uma variável inteira para MFIDef. A função iMFI retorna o manipulador do indicador MFI e os seus parâmetros são (símbolo, período, período da ma e volume aplicado).
int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);
  • Preenchemos a matriz usando a função CopyBuffer para obter os dados do indicador MFI.
CopyBuffer(MFIDef,0,0,3,MFIArray);
  • Calculamos o valor do MFI atual usando a NormalizeDouble para retornar um valor do tipo double após a criação de um valor do MFI de variável do tipo double.
double MFIValue=NormalizeDouble(MFIArray[0],5);
  • Criamos um comentário no gráfico usando a função Comment.
Comment("MFI Value is: ",MFIValue);

Portanto, o código completo será o seguinte:

//+------------------------------------------------------------------+
//|                                                   Simple MFI.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()
  {
//Create an array for MFI
   double MFIArray[];

//sorting the array from the current data
   ArraySetAsSeries(MFIArray,true);

//defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);

//filling the array
   CopyBuffer(MFIDef,0,0,3,MFIArray);

//calculating current MFI value
   double MFIValue=NormalizeDouble(MFIArray[0],5);

//creating a comment with MFI value
   Comment("MFI Value is: ",MFIValue);
  }
//+------------------------------------------------------------------+

Após a compilação, nós podemos encontrar o Expert Advisor na janela do Navegador:

MFI nav1

Ao clicar duas vezes, a seguinte janela será exibida:

Janela MFI simples

Após clicar em OK, o EA é anexado ao gráfico:

MFI simples anexado

A seguir é um exemplo do sinal de teste gerado:

MFI simples - sinal

Se nós quisermos ter certeza de que o valor do MFI gerado é o mesmo que o valor do indicador MFI embutido:

MFI simples - mesmo sinal

  • Estratégia um: MFI - OB e OS:

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

//+------------------------------------------------------------------+
//|                                                  MFI - OB&OS.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()
  {
   //Create an array for MFI
   double MFIArray[];
   
   //sorting the array from the current data
   ArraySetAsSeries(MFIArray,true);
   
   //defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);
   
   //filling the array
   CopyBuffer(MFIDef,0,0,3,MFIArray);
   
   //calculating current MFI value
   double MFIValue=NormalizeDouble(MFIArray[0],5);
   
   
   //Conditions of OS&OS
   //OS
   if(MFIValue<=20)
   {
   Comment("Oversold","\n","MFI value is : ",MFIValue);
   }
   
   //OB
   if(MFIValue>=80)
   {
   Comment("Overbought","\n","MFI value is : ",MFIValue);
   }
   
   //no signal
   if(MFIValue>20 && MFIValue<80 )
   {
   Comment("MFI value is : ",MFIValue);
   }   
  }
//+------------------------------------------------------------------+

A diferença neste código é:

Condições de sobrevenda e sobrecompra:
   //Conditions of OS&OS
   //OS
   if(MFIValue<=20)
   {
   Comment("Oversold","\n","MFI value is : ",MFIValue);
   }
   
   //OB
   if(MFIValue>=80)
   {
   Comment("Overbought","\n","MFI value is : ",MFIValue);
   }
   
   //no signal
   if(MFIValue>20 && MFIValue<80 )
   {
   Comment("MFI value is : ",MFIValue);
   } 

Após compilar este código, nós encontraremos o EA na janela do Navegador:

MFI nav 2

Arraste e solte-o no gráfico para abrir a sua janela:

 Janela do MFI - OB_OS

Após clicar em OK, ele é anexado ao gráfico:

 MFI - OB_OS anexado

Segue um exemplo de sinais gerados de acordo com este sistema de negociação.

Sinal de sobrevenda:

MFI simples - OB_OS - OS

Sinal de sobrecompra:

MFI simples - OB_OS - OB

Sem sinal:

MFI simples - OB_OS - no signal

  • Estratégia dois: MFI - tendência de alta - compra:

Veja a seguir como escrever o código dessa estratégia:

//+------------------------------------------------------------------+
//|                                          MFI - Uptrend - Buy.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()
  {
   //Create an array for MFI
   double MFIArray[];
   
   //sorting the array from the current data
   ArraySetAsSeries(MFIArray,true);
   
   //defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);
   
   //filling the array
   CopyBuffer(MFIDef,0,0,3,MFIArray);
   
   //calculating current MFI value
   double MFIValue=NormalizeDouble(MFIArray[0],5);
   
   
   //Buy signal
   if(MFIValue<=50)
   {
   Comment("Buy signal");
   }
   
   //TP
   if(MFIValue>=70)
   {
   Comment("Take profit");
   }
  }
//+------------------------------------------------------------------+

A diferença com este código:

Condições dos sinais:

Sinal de compra:

//Buy signal
   if(MFIValue<=50)
   {
   Comment("Buy signal");
   }

Sinal do take profit:

//TP
   if(MFIValue>=70)
     {
      Comment("Take profit");
     }

Após a compilação, o EA aparecerá na janela do Navegador:

MFI nav3

A janela do EA será a mesma que a seguir:

Janela de compra - MFI - Uptrend

Após clicar em OK, ele é anexado ao gráfico:

 MFI - Uptrend - Buy anexado

Segue um exemplo dos sinais de teste gerados:

Sinal de compra:

 MFI - Tendência de alta - Sinal de compra

Sinal do take profit:

MFI - Tendência de alta - Sinal de lucro

  • Estratégia três: MFI - tendência de baixa - venda:

Segue o código completo para criar esse tipo de estratégia:

//+------------------------------------------------------------------+
//|                                      MFI - Downtrend - Short.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()
  {
//Create an array for MFI
   double MFIArray[];

//sorting the array from the current data
   ArraySetAsSeries(MFIArray,true);

//defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);

//filling the array
   CopyBuffer(MFIDef,0,0,3,MFIArray);

//calculating current MFI value
   double MFIValue=NormalizeDouble(MFIArray[0],5);


//Sell signal
   if(MFIValue>=50)
     {
      Comment("Sell signal");
     }

//TP
   if(MFIValue<=30)
     {
      Comment("Take profit");
     }
  }
//+------------------------------------------------------------------+

A diferença neste código é:

Condições dos sinais:

Sinal de venda:

//Sell signal
   if(MFIValue>=50)
     {
      Comment("Sell signal");
     }

Sinal do take profit:

//TP
   if(MFIValue<=30)
     {
      Comment("Take profit");
     }

Após a compilação, nós podemos executá-lo clicando duas vezes no Navegador:


Após clicar duas vezes, a seguinte janela será exibida:

 Janela MFI - Downtrend - Short

Após clicar em OK, ele é anexado ao gráfico:

MFI - Downtrend - Short anexado

A seguir está um exemplo de sinais gerados com base no MFI - tendência de baixa - teste da estratégia de venda:

Sinal de venda:

MFI - Tendência de baixa - Sinal de venda

Sinal do take profit:

MFI - tendência de baixa - sinal de lucro

  • Estratégia quatro: MFI - tendência de alta ou divergência:

A seguir está o código completo do MFI - teste estratégia de tendência de alta ou divergência:

//+------------------------------------------------------------------+
//|                                  MFI - Uptrend 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()
  {
//Create arrays for MFI and price
   double MFIArray[];
   MqlRates PriceArray[];

//sorting arrays from the current data
   ArraySetAsSeries(MFIArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);

//defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);

//filling the MFI array
   CopyBuffer(MFIDef,0,0,3,MFIArray);

//calculating current and previous MFI values
   double MFICurrentValue=NormalizeDouble(MFIArray[0],5);
   double MFIPrevValue=NormalizeDouble(MFIArray[1],5);

//calculating current and previous highs
   double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5);
   double PrevHighValue=NormalizeDouble(PriceArray[1].high,5);

//conditions of strong move or divergence
//strong up
   if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue)
     {
      Comment("Strong up move");
     }

//bearish divergence
   if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue)
     {
      Comment("Bearish divergence");
     }
  }
//+------------------------------------------------------------------+

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

Criação das matrizes do MFI e preços usando a função MqlRates que armazena as informações do preço, volumes e spread:

   double MFIArray[];
   MqlRates PriceArray[];

Ordenando as matrizes:

Para o MFI, o uso da função ArraySetAs Series é o mesmo mencionado anteriormente.

Para os preços, nós usamos a função CopyRates para obter os dados históricos de MqlRates, os seus parâmetros são (nome do símbolo, período de tempo, hora de início, hora de fim e matriz MqlRates).

   ArraySetAsSeries(MFIArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);

Calculando os valores do MFI atual e anterior:

   double MFICurrentValue=NormalizeDouble(MFIArray[0],5);
   double MFIPrevValue=NormalizeDouble(MFIArray[1],5);

Calculando as máximas atuais e anteriores:

   double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5);
   double PrevHighValue=NormalizeDouble(PriceArray[1].high,5);

Condições do MFI - estratégia de tendência de alta ou divergência:

Alta forte:

   if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue)
     {
      Comment("Strong up move");
     }

Divergência:

   if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue)
     {
      Comment("Bearish divergence");
     }

Depois de compilar este código, nós vamos encontrá-lo também nos Expert Advisors do Navegador:

 MFI nav5

O mesmo se aplica à sua execução. Arraste e solte-o ou clique duas vezes nele para abrir sua janela:

 Janela MFI - Uptrend or divergence

Em seguida, clique em OK para anexá-lo ao gráfico:

MFI - Uptrend or divergence anexado

Veja a seguir um exemplo dos sinais gerados com a janela de dados baseada nesta estratégia:

Sinal forte com a janela de dados atual:

MFI - Uptrend or divergence - strong - atual

Sinal forte com a janela de dados anterior:

MFI - Uptrend or divergence - strong - anterior

Sinal de divergência com a janela de dados atual:

MFI - Uptrend or divergence - Bearish divergence - atual

Sinal de divergência com a janela de dados anterior:


  • Estratégia cinco: MFI - tendência de baixa ou divergência:

Segue o código completo desta estratégia:

//+------------------------------------------------------------------+
//|                                MFI - Downtrend 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()
  {
//Create arrays for MFI and price
   double MFIArray[];
   MqlRates PriceArray[];

//sorting arrays from the current data
   ArraySetAsSeries(MFIArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);

//defining MFI
   int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);

//filling the array
   CopyBuffer(MFIDef,0,0,3,MFIArray);

//calculating current and previous MFI values
   double MFICurrentValue=NormalizeDouble(MFIArray[0],5);
   double MFIPrevValue=NormalizeDouble(MFIArray[1],5);

//calculating current and previous highs
   double CurrentLowValue=NormalizeDouble(PriceArray[2].low,5);
   double PrevLowValue=NormalizeDouble(PriceArray[1].low,5);

//conditions of strong move or divergence
//strong down
   if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue)
     {
      Comment("Strong down move");
     }

//bullish divergence
   if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue)
     {
      Comment("Bullish divergence");
     }
  }
//+------------------------------------------------------------------+

A diferença neste código:

Condições dos sinais gerados com base nesta estratégia:

Sinal forte de movimento de baixa:

   if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue)
     {
      Comment("Strong down move");
     }

Divergência de alta:

   if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue)
     {
      Comment("Bullish divergence");
     }

Após a compilação, a janela do Navegador tem a seguinte aparência:

MFI nav6

Após a execução, sua janela tem a seguinte aparência:

Janela MFI - Downtrend or divergence

Após clicar em OK, ele é anexado ao gráfico:

MFI - Downtrend or divergence anexado

A seguir está um exemplo dos sinais gerados com a janela de dados para exibir os sinais gerados com base nos valores do teste:

Forte baixa com a janela de dados atual:

MFI - Downtrend or divergence - Strong - atual

Forte baixa com a janela de dados anterior:

MFI - Downtrend or divergence - Strong - anterior

Divergência de alta com a janela de dados atual:

MFI - Downtrend or divergence - Bullish divergence - atual

Divergência de alta com a janela de dados anterior:

MFI - Downtrend or divergence - Bullish divergence - anterior

Conclusão

Eu abordei o tópico do indicador Índice de Fluxo de Dinheiro (MFI) fornecendo novas informações que podem melhorar a sua negociação, pois agora sabemos o que o volume é, por que ele é tão importante na negociação, o que é o indicador MFI, o que ele mede, além de aprender como nós podemos calculá-lo manualmente e inserir o indicador MFI embutido na MetaTrader 5. Depois de aprender o básico do indicador MFI e entender o conceito básico por trás dele, nós aprendemos algumas estratégias simples: estas são as estratégias de sobrecompra e sobrevenda que podem revelar as áreas de sobrecompra e sobrevenda de um instrumento, a estratégia de tendência de alta do MFI - que pode ser usada para detectar os sinais de compra e lucro durante a tendência de alta com base no indicador MFI, a estratégia MFI - tendência de baixa que pode ser usada para gerar os sinais de venda e obter lucro durante a tendência de baixa com base no indicador MFI, a estratégia do MFI - tendência de alta ou divergência que pode ser usado para confirmar a força dos movimentos de alta durante a tendência de alta ou nos avisar de uma divergência de baixa, e o MFI - tendência de baixa ou divergência que pode ser usado para confirmar se os movimentos de baixa atuais são fortes ou alertar para uma divergência de alta.

Além disso, nós desenvolvemos um plano para cada estratégia para nos ajudar a criar um sistema de negociação para gerar os sinais automaticamente na MetaTrader 5 pelo desenvolvimento de um esquema passo a passo. Depois disso, nós criamos um sistema de negociação para cada estratégia por meio da MQL5 para ser executado na plataforma de negociação MetaTrader 5 para funcionar de forma automática e precisa sem interferência humana para facilitar nossa negociação e economizar o nosso tempo, além de fazer as coisas com eficiência.

Espero que você tenha tentado aplicar e praticar o que aprendeu com este artigo. Eu também espero que este artigo tenha dado informações úteis sobre a negociação e informações relacionadas ao tópico atual ou a quaisquer tópicos relacionados. Como eu já disse, não deixe de testar qualquer estratégia antes de usá-la em uma conta real, pois o objetivo principal deste artigo é contribuir para fornecer informações para que os iniciantes aprendam a desenvolver estratégias de negociação simples por conta própria. Assim, você pode descobrir que essas estratégias precisam de otimização ou ajuste ou pode achar que será melhor combiná-las com outra ferramenta técnica. Esta é uma abordagem útil para combinar as ferramentas técnicas essenciais e revelar muitas perspectivas para uma tomada de decisão adequada. Depois de combinar essas ferramentas, você também pode criar um sistema de negociação para elas, pois nós podemos encontrar todos os tipos de sistemas de negociação, dos simples aos complicados, e isso nos permitirá fazer exatamente o que precisamos, superando o problema da subjetividade que pode ser um obstáculo para alcançar os seus objetivos de negociação. A programação é uma ferramenta incrível que nos ajuda a fazer o que nós precisamos de forma fácil, precisa e suave. Isso nos poupa de fazer as mesmas tarefas todas as vezes, além de muitos outros bons recursos.

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. Espero que eles o ajudem a melhorar os seus resultados de negociação.

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

Gráfico de montanha ou gráfico Iceberg Gráfico de montanha ou gráfico Iceberg
Que tal adicionar um novo tipo de gráfico ao MetaTrader 5 ? Muita gente diz, que ele carece de algumas coisas, que já estão presentes em outras plataformas, mas a verdade, é que o MetaTrader 5, é uma plataforma muito prática, que nos permite fazer coisas, que em muitas das outras, não é possível de ser feita, pelo menos, não com tanta facilidade.
O modelo de movimento dos preços e suas principais disposições (Parte 1): A versão do modelo mais simples e suas aplicações O modelo de movimento dos preços e suas principais disposições (Parte 1): A versão do modelo mais simples e suas aplicações
O artigo fornece os fundamentos de um movimento de preços matematicamente rigoroso e a teoria do funcionamento do mercado. Até o presente, nós não tivemos nenhuma teoria de movimento de preços matematicamente rigorosa. Em vez disso, nós tivemos que lidar com as suposições baseadas na experiência, afirmando que o preço se move de uma certa maneira após um determinado padrão. É claro que essas suposições não foram apoiadas nem pela estatística e nem pela teoria.
Como desenvolver um sistema de negociação baseado no indicador Volumes Como desenvolver um sistema de negociação baseado no indicador Volumes
Aqui está um novo artigo da nossa série sobre como aprender a desenvolver um sistema de negociação com base nos indicadores técnicos mais populares. O artigo atual será dedicado ao indicador de Volumes. O volume como conceito é um dos fatores mais importantes na negociação nos mercados financeiros e nós temos que prestar atenção quanto a isso. Através deste artigo, nós aprenderemos como desenvolver um sistema de negociação simples pelo indicador Volumes.
DoEasy. Controles (Parte 9): Reorganizando métodos de objetos WinForms, controles "RadioButton" e "Button" DoEasy. Controles (Parte 9): Reorganizando métodos de objetos WinForms, controles "RadioButton" e "Button"
No artigo de hoje, organizaremos os nomes dos métodos das classes dos objetos WinForms e criaremos os objetos WinForms Button e RadioButton.