Temporizador - página 3

 
TheXpert:

Usando o gestor do temporizador. Queria escrever um artigo, mas depois foi desviado. Embora possa não ser suficiente para um artigo.

Não o obterá num tempo específico devido ao código de um único fio e fila de eventos, mas com um erro médio inferior a um segundo (o máximo é limitado pelo tempo máximo de execução do evento pelo código).

Quanto mais, existe apenas um temporizador.

Precisa dele?

Sim, a margem de erro é quase imperceptível. Talvez queira carregá-lo de imediato para a Base de Código? Perder-se-á no fórum, e outra pessoa irá precisar dele lá.
 
Yedelkin:
Sim, o erro é quase imperceptível. Porque não o coloca de imediato na Base de Código? Vai perder-se no fórum, e outra pessoa vai precisar dele.

Ainda não acabei, estou ocupado com o meu File Unlimited por 5. Terminarei em breve.

A questão não é se vamos precisar dela ou não. É a única forma normal e correcta de trabalhar com temporizadores múltiplos.

 
TheXpert:

Ainda não acabei, estou ocupado com o meu File Unlimited por 5. Terminarei em breve.

Não faz mal, vamos esperar. Contactarei a SD, talvez eles tornem possível iniciar o primeiro evento Temporizador com um certo atraso.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

Existe alguma forma de conseguir que a EA gere eventos temporais num momento específico? Por exemplo, no início do último minuto da hora ou do dia.

Qual é o problema? Executar um temporizador normal e analisar o tempo. Se não se ajustar ao tempo, deixar o OnTimer imediatamente.
 
TheXpert:

Mais uma vez, este é um grande substituto para a função do sono nos perus, e mais uma vez, um segundo é um pouco exagerado.

O tema está aberto a discussão. O que pensa?

Há uma nuance. O temporizador no indicador não funciona se não estiver anexado ao gráfico. Portanto, mesmo um segundo temporizador é frequentemente inútil em indicadores.

Aqui está uma solução para a monitorização de eventos de menos de um segundo. Talvez, um temporizador possa ser feito em conjunto com GetTickCount().

 
stringo:
Qual é o problema? É necessário executar um temporizador normal e analisar o tempo. Se o tempo não for adequado - sair imediatamente do OnTimer.

E porque deveria eu bombardear a fila com cada segundo eventos de Temporizador e perder o meu tempo a verificar OnTimer() a cada segundo, se eu quiser executar OnTimer() uma vez por dia (por hora, etc.) mas a uma determinada hora?

Creio que seria muito mais racional e elegante utilizar esta função com dois parâmetros:

   bool EventSetTimer(
                   int seconds,      // количество секунд для OnTimer
                   int задержка=0     // количество секунд задержки запуска первого события Timer 
                   );

Que é o que o SD sugeriu.

Adição: o valor do parâmetro de atraso pode ser facilmente e uma vez calculado no OnInit().

 
Yedelkin:

E porquê...

Bem, na verdade, era isso que eu estava a sugerir. Apenas embrulhado num conveniente pacote.

Uma vez por segundo é uma ninharia assustadora, especialmente se se saltar eventos desnecessários.

 
Basta converter o atraso em segundos para milissegundos.
bool EventSetTimer(1000);// количество миллисекунд для 1 секунды задержки для OnTimer

e isto.

int задержка=0     // количество секунд задержки запуска первого события Timer 

não o fazer de todo, pois é apenas uma treta.

 
pusheax:

int задержка=0     // количество секунд задержки запуска первого события Timer 

não o fazer de todo, pois é apenas uma treta.

Vou perguntar como perito em tretas. Qual é a ideia por detrás deste atraso(int delay=0), e para que fim foi sugerido (atraso)? Como o entendeu?

E a segunda pergunta que quero esclarecer, qual é o objectivo de especificar"número de milissegundos de atraso de 1 segundo para o OnTimer"? Que objectivo está a tentar alcançar? Por exemplo, atrasar cada segundo no OnTimer por três milissegundos?

 
TheXpert:

Bem, na verdade era isso que eu estava a sugerir. Apenas embrulhado num conveniente pacote.

Uma vez por segundo é uma ninharia assustadora, especialmente se se saltar eventos desnecessários.

Como compreende, neste caso, o meu lema é: "Abaixo todos os avarentos, se puder passar sem eles". A única coisa a fazer é permitir o atraso da geração do primeiro evento temporizador a nível de terminal pelo tempo escolhido por um utilizador. Assim, não estou a menosprezar a importância do vosso código, especialmente porque simplesmente ainda não o vi.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5