タイマー - ページ 5

 
Yedelkin:
ああ、トンネルの先に光が!?OnTimer()自体の中でEventSetTimer()を呼び出せば いいのですね。ターミナルに着いたら、ぜひ試してみます。スマートな解決策をありがとうございました

私はこの解決策をずっと見てきました。

に最適な方法を試していないだけです。

EventKillTimer()または EventSetTimer(0);でタイマーを終了 させます。

 
MetaDriver:

ミリ秒が非常に望まれます。願いに参加する。

Expert Advisorでは今、危険です。例えば、同期型のMessageBox()関数は、ユーザが端末から離れるとすぐにキューに入るかもしれません(もちろん、そのような関数の前にタイマーを無効化することができると言ってもよいでしょう)。

でも、もし割り込み処理をされたら...。

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

ミリ秒にするのはもう無理です。

すでに書かれているExpert Advisorのうち、作者の意図の1000倍ものタイマーイベントを発生させ始めるものがどれだけあるでしょうか。

いや、違う...そんな風に変えなくても いいんです。新しい関数EventSetTimerMS(long ms) を追加すればいいのです。

互換性のために、古いものを残しておく必要があるのです。(EventSetTimerMS(1000); を呼び出す ことで簡単にエミュレートできます)。

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

Expert Advisorでは危険な状態になっています。例えば、同期型のMessageBox()関数は、ユーザが端末から離れると素早くキューに入れることができます(もちろん、このような関数の前にタイマーを無効化することができると言えます)。

割り込み処理さえ作ってくれれば...。

割り込みは使わないでください。 でも意味がわからない、もしかしたらいいものかもしれない...。:)

キューについて - セコンドも、スリープに入れば使えるようになります。:) 結果の処理方法を知らない人は使わないでください。シンプルなレシピで万能です。

 
Yurich:

.........例えば、同期型のMessageBox()関数は、ユーザが端末から離れるとすぐにキューに入ることができます。 (もちろん、このような関数の前にタイマーを無効化することもできると言えます) .........................。

もちろん、そうしますよ。;)
 
ミリ秒の場合、ティック間の時間を測定し、500ミリ秒以下であれば、相場が動き始めようとしていることを示すことができます。
 
stringo:

すでに書かれている専門家が、作者の意図の1000倍ものタイマーイベントを発生させるようになるのか?

一意見ですが、もしミリ秒を追加する可能性があり、それが古いEAにしかないのであれば、新しい機能を導入してはどうでしょう。

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

すべてをマルチ秒にし、switch=falseの場合は秒の値を一旦1000倍にする(古いEAの場合など)。

 
Yurich:

Expert Advisorでは危険な状態になっています。例えば、同期型のMessageBox()関数は、ユーザが端末から離れると素早くキューに入れることができます(もちろん、このような関数の前にタイマーを無効化することができると言えます)。

でも、もし割り込み処理をされたら...。


OnTimer, OnTick, OnTrade...これがインタラプトです。

 
pusheax:

OnTimer, OnTick, OnTrade...これらは割り込みです。

割り込みとは、OnTickが実行されているときに、OnTimerなどのより重要なイベントが到来したときのことです。OnTickが一時停止し、OnTimerのコードが実行され、その後、OnTickが再び実行され続けます。
 
Yurich:
割り込みとは、OnTickが実行されているときに、OnTimerなどのより重要なイベントが到来した場合です。OnTickが一時停止し、OnTimerのコードが実行され、その後、OnTickが再び実行され続けます。
このような仕組みになっています。