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:
- www.mql5.com
Boa tarde Diogo!
Veja se as funções dessa biblioteca lhe ajudam:
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
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));} //+------------------------------------------------------------------+
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...
;)
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.
- 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
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?