Verificar se candle anterior é um tipo de candle específico

 

Boa tarde;

Estou finalizando um EA e queria fazer uma verificação do candle anterior. Ele já armazena os 5 últimos candles em um array na variável candles[].

Durante os testes, percebi que o EA sofre Loss quando o candles[1] (anterior) são os seguintes padrões de velas são  "Doji" e/ou "Piões" (spinning tops).

O que eu queria: Criar uma função booleana para verificar o candle anterior. Se o candle anterior for um candle como as imagens em anexo, retornar um true para bloquear a entrada da operação.

Alguém pode me ajudar como fazer essa verificação? 

Documentação sobre MQL5: Informações de Mercado / SymbolInfoDouble
Documentação sobre MQL5: Informações de Mercado / SymbolInfoDouble
  • www.mql5.com
SymbolInfoDouble - Informações de Mercado - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Arquivos anexados:
doji.JPG  9 kb
pi6o.JPG  9 kb
 
Diogo Silva:

Boa tarde;

Estou finalizando um EA e queria fazer uma verificação do candle anterior. Ele já armazena os 5 últimos candles em um array na variável candles[].

Durante os testes, percebi que o EA sofre Loss quando o candles[1] (anterior) são os seguintes padrões de velas são  "Doji" e/ou "Piões" (spinning tops).

O que eu queria: Criar uma função booleana para verificar o candle anterior. Se o candle anterior for um candle como as imagens em anexo, retornar um true para bloquear a entrada da operação.

Alguém pode me ajudar como fazer essa verificação? 

Boa tarde Diogo!


Veja se as funções dessa biblioteca lhe ajudam:

Download livre da biblioteca 'Assistente MQL5 - Classe Padrões Candles' por 'MetaQuotes' para MetaTrader 5 no CodeBase MQL5, 2014.01.15

Assistente MQL5 - Classe Padrões Candles
Assistente MQL5 - Classe Padrões Candles
  • www.mql5.com
As classes podem ser usadas para a criação de classes de sinais de negociação com padrões candles de reversão.
 
Vinicius de Oliveira:

Boa tarde Diogo!


Veja se as funções dessa biblioteca lhe ajudam:

Download livre da biblioteca 'Assistente MQL5 - Classe Padrões Candles' por 'MetaQuotes' para MetaTrader 5 no CodeBase MQL5, 2014.01.15

Opa ajudam sim, sabe me dizer como posso importar ele dentro do meu EA e como posso verificar o candles[1] qual o formato do candle dele? Ainda tô aprendendo a programar em MQL5 rs

 
Diogo Silva:

Opa ajudam sim, sabe me dizer como posso importar ele dentro do meu EA e como posso verificar o candles[1] qual o formato do candle dele? Ainda tô aprendendo a programar em MQL5 rs

Ok, outro exemplo bem simples pra você colar no seu EA, editar de acordo com sua necessidade, e testar . . .

//+--------------------------------------------------------------------------------------------------------------------+
//| Checks formation of Doji candlestick pattern                                                                       |
//+--------------------------------------------------------------------------------------------------------------------+
bool IsDoji()
  {
//--- consider 7% or less body size for Doji
   double DOJI_PCT = 0.07;

   double sizeBody = MathAbs(Open(1) - Close(1));
   double sizeBar  = High(1) - Low(1);

   return (sizeBody <= DOJI_PCT * sizeBar && sizeBar >= AvgBar());
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Returns the averaged value of candle size                                                                          |
//+--------------------------------------------------------------------------------------------------------------------+
double AvgBar()
  {
//--- period considered in the calculation
   double NR_CANDLES  = 12;

   double avg_bar = 0;

//--- calculate the averaged size of the candle
   for(int i = 1; i <= NR_CANDLES; i ++)
     {
      avg_bar += High(i) - Low(i);
     }
   avg_bar /= NR_CANDLES;

//--- return candle size
   return(avg_bar);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Methods used for check of the candles datas                                                                        |
//+--------------------------------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Time                                                             |
//+------------------------------------------------------------------+
datetime Time(int ind)  {return(iTime(_Symbol,PERIOD_CURRENT,ind));}
//+------------------------------------------------------------------+
//| Open                                                             |
//+------------------------------------------------------------------+
double   Open(int ind)  {return(iOpen(_Symbol,PERIOD_CURRENT,ind));}
//+------------------------------------------------------------------+
//| High                                                             |
//+------------------------------------------------------------------+
double   High(int ind)  {return(iHigh(_Symbol,PERIOD_CURRENT,ind));}
//+------------------------------------------------------------------+
//| Low                                                              |
//+------------------------------------------------------------------+
double   Low(int ind)   {return(iLow(_Symbol,PERIOD_CURRENT,ind));}
//+------------------------------------------------------------------+
//| Close                                                            |
//+------------------------------------------------------------------+
double   Close(int ind) {return(iClose(_Symbol,PERIOD_CURRENT,ind));}
//+------------------------------------------------------------------+
 
Vinicius de Oliveira:

Ok, outro exemplo bem simples pra você colar no seu EA, editar de acordo com sua necessidade, e testar . . .

Chequem SEMPRE o retorno das funções "i"... elas podem falhar... e aí você tem que tomar as devidas medidas de correção de nova tentativa...

JAMAIS acredite que TUDO vai funcionar de primeira em MQL5...

;)

 
Flavio Jarabeck:

Chequem SEMPRE o retorno das funções "i"... elas podem falhar... e aí você tem que tomar as devidas medidas de correção de nova tentativa...

JAMAIS acredite que TUDO vai funcionar de primeira em MQL5...

;)


Obrigado Flavio!!


. . . e, também, revendo o código, identifiquei outro erro e substituí a função anterior AvgBody() por AvgBar() . . .



Diogo, para implementar a verificação sugerida pelo Flavio, confira sempre se o retorno das funções Open(), High(), Low() e Close() é diferente de (ou maior que) zero.

Razão: