Temporizador - página 5

 
Yedelkin:
Oh, luz ao fundo do túnel! Deve chamar o EventSetTimer( ) dentro do próprio OnTimer()? Irei sem dúvida tentar quando chegar ao terminal. Obrigado pela solução inteligente!

Eu sempre vi esta solução.

Só ainda não tentei a melhor maneira de

EventKillTimer() ou EventSetTimer(0); para matar o temporizador.

 
MetaDriver:

Milissegundos é muito desejado. Associo-me aos desejos.

Agora é perigoso em Expert Advisor. Por exemplo, a função sincronizada MessageBox() pode rapidamente fazer fila quando o utilizador deixa o terminal (claro que se pode dizer que o temporizador pode ser desactivado antes de tais funções).

Mas se eles fizessem o tratamento de interrupções...

Документация по MQL5: Общие функции / MessageBox
Документация по MQL5: Общие функции / MessageBox
  • www.mql5.com
Общие функции / MessageBox - Документация по MQL5
 
stringo:

Já não é possível ir a milissegundos.

Quantos Consultores Especialistas que já foram escritos irão começar a gerar 1000 vezes mais eventos temporais do que o pretendido pelo autor?

Não, não... Não é necessário mudá-lo dessa forma. Basta adicionar uma nova função EventSetTimerMS(long ms);

É necessário deixar o antigo, apenas por compatibilidade. (Pode ser facilmente emulado chamando EventSetTimerMS(1000); )

Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
Yurich:

Isto é agora perigoso no Expert Advisor. Por exemplo, a função sincronizada MessageBox() pode rapidamente fazer fila quando o utilizador deixa o terminal (claro que se pode dizer que o temporizador pode ser desactivado antes de tais funções).

Se ao menos fizessem um tratamento de interrupção...

Não use interrupções. Mas não sei a que se refere, talvez seja uma boa... :)

Sobre filas - também podem ser usados segundos, se for dormir. :) Não a utilize se não souber como processar as consequências - é uma receita simples e universal.

 
Yurich:

......... Por exemplo, a função sincronizada MessageBox(), pode rapidamente fazer fila quando o utilizador se afasta do terminal.(Claro que pode dizer que pode desactivar o temporizador antes de tais funções) ........

Claro que o farei. ;)
 
Com milisegundos pode tentar medir o tempo entre carrapatos, se menos de 500 ms o mercado estiver prestes a começar a mover-se.
 
stringo:

Quantos peritos já escritos irão começar a gerar 1000 vezes mais eventos temporais do que o autor pretendia?

Apenas uma opinião: e se existe a própria possibilidade de adicionar milissegundos para aqueles que o querem, e o problema está apenas nos antigos EAs, então porque não introduzir uma nova função

   bool EventSetTimer(
                    int  seconds,            // количество секунд для OnTimer
                    bool переключатель=false // переключатель: false - период измеряется в секундах, true - в миллисекундах
                   );

Faça tudo em vários segundos, e se a troca===falso, multiplique o valor de segundos uma vez por 1000 (para os antigos EAs, por exemplo).

 
Yurich:

Isto é agora perigoso no Expert Advisor. Por exemplo, a função sincronizada MessageBox() pode rapidamente fazer fila quando o utilizador deixa o terminal (claro que se pode dizer que o temporizador pode ser desactivado antes de tais funções).

Mas se eles fizessem o tratamento de interrupções...


OnTimer, OnTick, OnTrade... Estas são as interrupções.

 
pusheax:

OnTimer, OnTick, OnTrade... Estas são interrupções.

Uma interrupção é quando o OnTick está a executar e um evento mais importante, como o OnTimer, chegou. OnTick é pausado, o código OnTimer é executado, depois OnTick continua a correr novamente.
 
Yurich:
Uma interrupção é quando o OnTick está a ser executado e um evento mais importante, como o OnTimer, chegou. OnTick é pausado, o código OnTimer é executado, depois OnTick continua a correr novamente.
É assim que funciona.