Capturar a Data da Vela

 

Olá a todos!!

Eu estou construindo um robô que opera no inicio do pregão, porém algumas operações ele está pegando com base na ultima vela do pregão anterior. Eu pensei em resolver esse problema definindo o horario de operação dele a partir do fechamento da primeira vela do Timeframe de M15, que é o que ele vai operar, porém em um dia em que o pregão abra um pouco depois das 9h, pode dar algum tipo de problema. 

Então eu pensei em comprar a data do candle anterior com a data do candle atual, pra verificar se o candle anterior é do mesmo dia que o atual. Tantei com candle[1].time, porpem isso me retorna data e hora do candle, eu gostaria de saber como eu capturo apenas a data do candle para conseguir comparar.




Agradeço dês de já.

 

Pra tentar resolver esse problema eu acabei programando essa gambiarra... kkk


Usei a função "nova barra" pra identificar se é uma barra nova.

Quando o dia inicia, a função novabarra é igual a 0. Então eu fiz um if pra verificar se a barra fechou, e se fechou eu adiciono +1 ao contador, o que indica que eu tenho a primeira barra do dia fechada.



Aparentemente estou conseguindo contar as velas fechadas, sendo assim, consigo saber se a primeira barra do dia fechou, mas não acredito ser um método eficiente, pois se o EA for executado por exemplo no meio do dia, ele vai aguardar uma barra fechar pra iniciar as operações e pode ser que ele deixe de fazer uma operação. Acredito que a forma mais eficiente seria realmente comparar a data do candle anteror com a data do candle atual. Como citei acima, tentei com cande[1].time, mas ele me retorna a hora, e isso impossibilita fazer a comparação, tentei com MqlDateTime, com data.day, mas isso só me retorna o dia atual e não o anterior, então ainda não consigo fazer a comparação.

Handler de evento "nova barra"
Handler de evento "nova barra"
  • www.mql5.com
Os autores dos indicadores e especialistas sempre estiveram interessados em escrever o código compacto em termos de tempo de execução. Você pode resolver este problema a partir de diferentes ângulos. A partir deste amplo tópico neste artigo, cobriremos o problema, que aparentemente foi solucionado: verifique por uma nova barra. Este é um meio...
 

Amigos!! Problema resolvido. Segue a solução.

DataAtual = TimeToString(candle[0].time,TIME_DATE);
DataAnterior = TimeToString(candle[1].time,TIME_DATE);
   
Print("Atual: "+DataAtual+" Anterior: "+DataAnterior);



 

Olá! estou com problema parecido, queria recuperar somente a hora do ultimo candle para poder comparar com o candle atual, o objetivo é descobrir se o candle atual é o primeiro do dia.

MqlDateTime mqlDateTime;

 TimeCurrent(mqlDateTime);

  int hora = mqlDateTime.hour;


dessa maneira é possível descobrir a hora atual, alguém sabe me dizer como consigo a do candle anterior?

Razão: