Executar função todo dia no mesmo horário

Otavio Konmin Clemente  

Olá,

Estou desenvolvimento meu primeiro EA. Ele é baseado no primeiro candle de 15 minutos do dia. De forma que eu quero que ele rode todo dia às 10:15:00.

Estou usando o seguinte código: 

void OnTick()
  { 
datetime horafpc=TimeCurrent();                              // Carrega na variável horafpc a data e hora do servidor
string stringhorafpc=TimeToString(horafpc,TIME_SECONDS);     // Carrega a hora, minuto e segundo na variável stringhorafpc
if(stringhorafpc=="10:15:00")                                // Verifica se são 10:15

Ocorre que eventualmente ele executa o código depois do IF mais de uma vez, acredito que isso ocorra quando existe mais de um ticket no mesmo segundo, mas não tenho certeza.

Eu fiz uma gambiarra para ele só executar uma vez, mas gostaria de saber se alguém consegui me sugerir uma solução mais "correta".

Obrigado,

Otávio 

crisaf  
otaviokc:

Olá,

Estou desenvolvimento meu primeiro EA. Ele é baseado no primeiro candle de 15 minutos do dia. De forma que eu quero que ele rode todo dia às 10:15:00.

Estou usando o seguinte código: 

Ocorre que eventualmente ele executa o código depois do IF mais de uma vez, acredito que isso ocorra quando existe mais de um ticket no mesmo segundo, mas não tenho certeza.

Eu fiz uma gambiarra para ele só executar uma vez, mas gostaria de saber se alguém consegui me sugerir uma solução mais "correta".

Obrigado,

Otávio 

Eu normalmente verifico se já existe uma ordem aberta com o MagicNumber no gráfico atual para impedir novas ordens. Mas não sei se isso pode te ajudar, não sei direito o que você quer.
Bestxavier  
otaviokc:

Olá,

Estou desenvolvimento meu primeiro EA. Ele é baseado no primeiro candle de 15 minutos do dia. De forma que eu quero que ele rode todo dia às 10:15:00.

Estou usando o seguinte código: 

Ocorre que eventualmente ele executa o código depois do IF mais de uma vez, acredito que isso ocorra quando existe mais de um ticket no mesmo segundo, mas não tenho certeza.

Eu fiz uma gambiarra para ele só executar uma vez, mas gostaria de saber se alguém consegui me sugerir uma solução mais "correta".

Obrigado,

Otávio 

Utiliza o calculo para detectar uma nova barra neste caso a cada 15 minutos Barhttps://www.mql5.com/en/articles/159.

 O OnTick() é acionado em varias circunstancias oque pode acionar este evento em termos de milissegundos.

https://www.mql5.com/en/articles/22 

The "New Bar" Event Handler
The "New Bar" Event Handler
  • 2010.10.11
  • Konstantin Gruzdev
  • www.mql5.com
MQL5 programming language is capable of solving problems on a brand new level. Even those tasks, that already have such solutions, thanks to object oriented programming can rise to a higher level. In this article we take a specially simple example of checking new bar on a chart, that was transformed into rather powerful and versatile tool. What tool? Find out in this article.
Otavio Konmin Clemente  
Bestxavier:

Utiliza o calculo para detectar uma nova barra neste caso a cada 15 minutos Barhttps://www.mql5.com/en/articles/159.

 O OnTick() é acionado em varias circunstancias oque pode acionar este evento em termos de milissegundos.

https://www.mql5.com/en/articles/22 

Muito obrigado Bestxavier, Era exatamente isso que eu estava precisando!
Otavio Konmin Clemente  
Bruno Salles Pereira:

Pessoal, eu to tentando obter somente o horário atual, por exemplo, o TimeTradeServer() me retorna '2016.06.17 21:40', pois bem, eu quero pegar somente a hora, que nesse caso é '21'.

 

Alguma sugestão? 

Bruno,

Lá no começo do post já tem um exemplo de como fazer isso.

Há outras formas, eu mesmo atualmente creio ser mais eficiente transformar a data em segundos para poder também definir intervalos que o robô deve trabalhar. 

Abs,

Otávio 

Bestxavier  
Bruno Salles Pereira:

Pessoal, eu to tentando obter somente o horário atual, por exemplo, o TimeTradeServer() me retorna '2016.06.17 21:40', pois bem, eu quero pegar somente a hora, que nesse caso é '21'.

 

Alguma sugestão? 

Também é possível utilizar o MqlDateTime conforme abaixo

MqlDateTime mqlDateTime;
     
TimeCurrent(mqlDateTime);
     
int hora = mqlDateTime.hour;
Bruno Salles Pereira  
Bestxavier:

Também é possível utilizar o MqlDateTime conforme abaixo

Pessoal, muito obrigado pela colaboração.
Emerson2020  
oi pessoal sou novo com EA tenho um que quero colocar horario de inicio e de parada dentro de um dia alguem pode me ajudar?
Ruy Christian Hoffmann  
Emerson2020:
oi pessoal sou novo com EA tenho um que quero colocar horario de inicio e de parada dentro de um dia alguem pode me ajudar?

Emerson, bom dia,

Use o "buscar/localizar", tem vários exemplos de códigos do que você quer fazer.

Jonathan Pereira  
Ruy Christian Hoffmann:

Emerson, bom dia,

Use o "buscar/localizar", tem vários exemplos de códigos do que você quer fazer.

Na verdade, se tivesse ao menos lido o tópico já saberia como fazer.
Razão: