Operação primeiro candle

 

Estou desenvolvendo um EA que opere baseado nas condições do primeiro candle do dia, mas aparentemente não está funcionando. Estou fazendo assim:

nt Condicao_operacao(){
   MqlRates rates[];
   ArraySetAsSeries(rates, true);
   CopyRates(_Symbol, _Period, 0, 500, rates);
   int y = ContagemCandles(); // qtd candles
   
   if(HabOperar && HorarioEntrada_fc()){
      if(rates[y].high - rates[y].low >= candle_ref &&
         rates[y].high - rates[y].low <= candle_max && 
         rates[y].close > rates[y].open && 
         rates[y].open - rates[y].low >= pavil_ref &&
         rates[0].close == rates[y].low) return 1;
         
      if(rates[y].high - rates[y].low >= candle_ref &&
         rates[y].high - rates[y].low <= candle_max &&
         rates[y].close < rates[y].open &&
         rates[y].high - rates[y].open >= pavil_ref &&
         rates[0].close == rates[y].high) return -1;
   }
   
   return 0;
  }

O CopyRates eu deixei com 500 pois não se sabe quando a condição será cumprida ao longo do dia, mas eu estou desconfiado que isso está atrapalhando.
Existe alguma maneira mais simples de se fazer?

 
Marcel Cardoso:

Estou desenvolvendo um EA que opere baseado nas condições do primeiro candle do dia, mas aparentemente não está funcionando. Estou fazendo assim:

O CopyRates eu deixei com 500 pois não se sabe quando a condição será cumprida ao longo do dia, mas eu estou desconfiado que isso está atrapalhando.
Existe alguma maneira mais simples de se fazer?

Na verdade me parece que se voce quer fazer uma operacao no primeiro candle do dia e esta falhando nao seria mais logico pensar que a falha estaria na deteccao do primeiro candle? Assim, seria onde voce atribui valor ao candle_ref, candle_max e pavil_ref?

Nesse caso recomendaria olhar iBarShift para identificar corretamente a primeira vela no timeframe desejado. O valor de iBarShift poderia ser usado para recuperar todos as velas de um unico dia no seu periodo dai acredito que comparar o y com zero vai dar certo mesmo nao tendo conhecimento das variaveis mencionadas anteriormente.

Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / iBarShift
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / iBarShift
  • www.mql5.com
iBarShift - Séries Temporais e Acesso a Indicadores - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5