Como desenvolver um sistema de negociação baseado no indicador MFI
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:
- Definição do MFI
- Estratégia do MFI
- Esquema da estratégia do MFI
- Sistema de negociação do MFI
- 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:
Calculamos o fluxo de dinheiro bruto = volume * TP
Determinamos o movimento do TP: para cima ou para baixo
Encontramos 1+MF = MF bruto de períodos ascendentes
Encontramos 1-MF = MF bruto de períodos descendentes
Calculamos 14+MF = soma de 14 (1+MF)
Calculamos 14-MF = soma de 14 (1-MF)
Calculamos a razão de 14 MF = 14+MF/14-MF
Calculamos MFI = 100-100/(1+MF)
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
Os parâmetros do indicador aparecerão após a escolha do Índice de Fluxo de Dinheiro:
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:
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:
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:
- 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:
- 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:
- 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:
- 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:
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:
Ao clicar duas vezes, a seguinte janela será exibida:
Após clicar em OK, o EA é anexado ao gráfico:
A seguir é um exemplo do sinal de teste gerado:
Se nós quisermos ter certeza de que o valor do MFI gerado é o mesmo que o valor do indicador MFI embutido:
- 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:
Arraste e solte-o no gráfico para abrir a sua janela:
Após clicar em OK, ele é anexado ao gráfico:
Segue um exemplo de sinais gerados de acordo com este sistema de negociação.
Sinal de sobrevenda:
Sinal de sobrecompra:
Sem sinal:
- 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:
A janela do EA será a mesma que a seguir:
Após clicar em OK, ele é anexado ao gráfico:
Segue um exemplo dos sinais de teste gerados:
Sinal de compra:
Sinal do take profit:
- 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:
Após clicar em OK, ele é anexado ao gráfico:
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:
Sinal do take profit:
- 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:
O mesmo se aplica à sua execução. Arraste e solte-o ou clique duas vezes nele para abrir sua janela:
Em seguida, clique em OK para anexá-lo ao gráfico:
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:
Sinal forte com a janela de dados anterior:
Sinal de divergência com a janela de dados 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:
Após a execução, sua janela tem a seguinte aparência:
Após clicar em OK, ele é anexado ao gráfico:
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:
Forte baixa com a janela de dados anterior:
Divergência de alta com a janela de dados atual:
Divergência de alta com a janela de dados 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
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso