カスタムシンボル。エラー、バグ、質問、提案。 - ページ 25 1...181920212223242526272829303132...34 新しいコメント Roman 2020.02.18 08:20 #241 jaffer wilson: 私のところでは、これはうまくいきません。 私のMT5バージョンの詳細です。 システム時刻の誤差を変更してみてください。 //+------------------------------------------------------------------+ //| SpeedupSystemTimer.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property description "Уменьшает погрешность системного таймера до 1 ms" #import "winmm.dll" int timeBeginPeriod(uint per); #import //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void OnInit() { timeBeginPeriod(1); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { ExpertRemove(); } //+------------------------------------------------------------------+ jaffer wilson 2020.02.18 10:52 #242 Roman : システム時刻の誤差を変更してみてください。 試してみました。ファイルをご確認ください。そして動画。きっとわかるはずです。司会者にも、添付ファイルを見るようにお願いしています。 カスタムキャラクターでも 同じことが起こります。 ファイル: timer_issue.zip 1465 kb Time_Left_Timer_Based.mq5 9 kb Roman 2020.02.18 12:31 #243 jaffer wilson:試してみました。ファイルをご確認ください。そして動画。きっとわかるはずです。司会者にも、添付ファイルを見るようにお願いしています。カスタムキャラクターでも同じことが起こります。 TimeCurrent() についてのドキュメントを読む jaffer wilson 2020.02.18 12:50 #244 Roman : TimeCurrent() についてのドキュメントを読む。 ファイルを実行していないのでしょう。どうぞ、あなたの側で一度実行してみてください。私のプログラムでは、TimeCurrent()を使って、秒が0以下になったときの現在時刻を取得しています。これは、SetTime()関数を呼び出します。 そして、残り時間が50秒になったら、TimeCurrent()をチェックせずに、秒数を減らしていくのです。OnTimer()が呼ばれたときに表示されるようにすればよいと思います。しかし、それは目に見えるものではありません。一度ご確認ください。 Roman 2020.02.18 13:32 #245 jaffer wilson: ファイルを実行されていないのでしょう。どうぞ、あなたの側で一度実行してみてください。私のプログラムでは、TimeCurrent()を使って、秒が0以下になったときの現在時刻を取得しています。これは、SetTime()関数を呼び出します。 そして、残り時間が50秒になったら、TimeCurrent()をチェックせずに、秒数を減らしていくのです。OnTimer()が呼ばれたときに表示されるようにすればよいと思います。しかし、それは目に見えるものではありません。一度ご確認ください。 あなたのファイルを実行しましたが、あなたのコード内のハンドラが優先されました。 この2つの指標は、TimeCurrent()の仕様を考えると、ほとんど同じように動作します。 追加されました。この投稿から OnTimer()の遅延に開発者の注意を喚起した方が良いですね。 ファイル: Time_Left_Timer_Based.mq5 10 kb b-clock.mq5 9 kb Slava 2020.02.18 14:33 #246 Roman: むしろ、この投稿から OnTimer()の遅延に開発者の注意を喚起したいです。 タイマーはミリ秒単位の精度を保証するものではありません。また、ハードウェアの制限により、保証されません。 Nikolai Semko 2020.02.18 15:18 #247 Roman: むしろ、この投稿から OnTimer()の遅延に開発者の注意を喚起したいです。 16ミリ秒は、ミリ秒が入るものの精度です。これはすでにどこかで議論されていることです。 マイクロ秒だと精度は大丈夫ですが、スピードが遅くなります。 Roman 2020.02.18 15:47 #248 Nikolai Semko: 16ミリ秒は、ミリ秒が入るものの精度です。これはすでにどこかで議論されていることです。 マイクロ秒だと精度は問題ないのですが、速度が遅くなります。 システムの精度が〜16ミリ秒であることは明らかである。 この例では16より大きく設定されているので、EventSetMillisecondTimer(20)。 これがOnTimer()ハンドラで、20ミリ秒単位で実行されます。 しかし、コメントに表示されているカウンターは、数ミリ秒ハングアップしているようです。 ハンドラ OnTimer() が遅くなるのか、チャートイベントの処理 キューが遅くなるのか、理由はわかりません。 Nikolai Semko 2020.02.18 15:55 #249 Roman: システムの精度が〜16ミリ秒であることは明らかである。 この例では16より大きく設定されているので、EventSetMillisecondTimer(20)。 これがOnTimer()ハンドラで、20ミリ秒単位で実行されます。 しかし、コメントに表示されているカウンターは、数ミリ秒ハングアップしているようです。 ハンドラ OnTimer() が遅くなるのか、チャートイベントの処理 キューが遅くなるのか、理由はわかりません。 発見 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム ミリ秒単位で処理する関数を作るには? ニコライ・セムコ さん 2018.09.13 04:45 そう、そういうことなんです。(最大周波数=64Hz)。 一応、補足しておきます。 タイマーの周期ステップ=15.625ミリ秒。 つまり、EventSetMillisecondTimer(1) コマンドと EventSetMillisecondTimer(10) コマンドでは、実時間が 15.625ms となります。 EventSetMillisecondTimer(21) コマンドと EventSetMillisecondTimer(30) コマンドを使用した場合、実際の周期は 31.25ms となります。 EventSetMillisecondTimer(95) コマンドと EventSetMillisecondTimer(105) コマンドでは、実際の周期は 109.375 ms になります。 など GetTickCount()は1/(2^6)=1/64秒(15625マイクロ秒)毎に変化 します。 ミリ秒単位で処理する関数を作るには? Custom symbols. Errors, bugs, Need help with coding Roman 2020.02.18 16:14 #250 Nikolai Semko:造るGetTickCount()の値は1/(2^6)=1/64秒(15625マイクロ秒)ごとに変化 します。 ありがとうございます、これで理由がわかりました。システムタイマーの ステップ変更、やはり15.625の倍数。 追加されました。 しかし、システムタイマーの周期を変更しました。win api function timeBeginPeriod(1) つまり、アイデアとしては、システムタイマーを1ミリ秒単位でインクリメントするようにしたのです。 そして、システムタイマーのステップは1ミリ秒でいいんですよね? コメント内のカウンターがフリーズしたままなのはなぜですか? 1...181920212223242526272829303132...34 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私のところでは、これはうまくいきません。
私のMT5バージョンの詳細です。
システム時刻の誤差を変更してみてください。
システム時刻の誤差を変更してみてください。
試してみました。ファイルをご確認ください。そして動画。きっとわかるはずです。司会者にも、添付ファイルを見るようにお願いしています。
カスタムキャラクターでも 同じことが起こります。
試してみました。ファイルをご確認ください。そして動画。きっとわかるはずです。司会者にも、添付ファイルを見るようにお願いしています。
カスタムキャラクターでも同じことが起こります。
TimeCurrent() についてのドキュメントを読む
TimeCurrent() についてのドキュメントを読む。
ファイルを実行していないのでしょう。どうぞ、あなたの側で一度実行してみてください。私のプログラムでは、TimeCurrent()を使って、秒が0以下になったときの現在時刻を取得しています。これは、SetTime()関数を呼び出します。
そして、残り時間が50秒になったら、TimeCurrent()をチェックせずに、秒数を減らしていくのです。OnTimer()が呼ばれたときに表示されるようにすればよいと思います。しかし、それは目に見えるものではありません。一度ご確認ください。
ファイルを実行されていないのでしょう。どうぞ、あなたの側で一度実行してみてください。私のプログラムでは、TimeCurrent()を使って、秒が0以下になったときの現在時刻を取得しています。これは、SetTime()関数を呼び出します。
そして、残り時間が50秒になったら、TimeCurrent()をチェックせずに、秒数を減らしていくのです。OnTimer()が呼ばれたときに表示されるようにすればよいと思います。しかし、それは目に見えるものではありません。一度ご確認ください。
あなたのファイルを実行しましたが、あなたのコード内のハンドラが優先されました。
この2つの指標は、TimeCurrent()の仕様を考えると、ほとんど同じように動作します。
追加されました。
この投稿から OnTimer()の遅延に開発者の注意を喚起した方が良いですね。
むしろ、この投稿から OnTimer()の遅延に開発者の注意を喚起したいです。
むしろ、この投稿から OnTimer()の遅延に開発者の注意を喚起したいです。
16ミリ秒は、ミリ秒が入るものの精度です。これはすでにどこかで議論されていることです。
システムの精度が〜16ミリ秒であることは明らかである。
この例では16より大きく設定されているので、EventSetMillisecondTimer(20)。
これがOnTimer()ハンドラで、20ミリ秒単位で実行されます。
しかし、コメントに表示されているカウンターは、数ミリ秒ハングアップしているようです。
ハンドラ OnTimer() が遅くなるのか、チャートイベントの処理 キューが遅くなるのか、理由はわかりません。
システムの精度が〜16ミリ秒であることは明らかである。
この例では16より大きく設定されているので、EventSetMillisecondTimer(20)。
これがOnTimer()ハンドラで、20ミリ秒単位で実行されます。
しかし、コメントに表示されているカウンターは、数ミリ秒ハングアップしているようです。
ハンドラ OnTimer() が遅くなるのか、チャートイベントの処理 キューが遅くなるのか、理由はわかりません。
発見
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ミリ秒単位で処理する関数を作るには?
ニコライ・セムコ さん 2018.09.13 04:45
そう、そういうことなんです。(最大周波数=64Hz)。
一応、補足しておきます。
タイマーの周期ステップ=15.625ミリ秒。
つまり、EventSetMillisecondTimer(1) コマンドと EventSetMillisecondTimer(10) コマンドでは、実時間が 15.625ms となります。
EventSetMillisecondTimer(21) コマンドと EventSetMillisecondTimer(30) コマンドを使用した場合、実際の周期は 31.25ms となります。
EventSetMillisecondTimer(95) コマンドと EventSetMillisecondTimer(105) コマンドでは、実際の周期は 109.375 ms になります。
など
造る
ありがとうございます、これで理由がわかりました。
追加されました。システムタイマーの ステップ変更、やはり15.625の倍数。
しかし、システムタイマーの周期を変更しました。win api function timeBeginPeriod(1)
つまり、アイデアとしては、システムタイマーを1ミリ秒単位でインクリメントするようにしたのです。
そして、システムタイマーのステップは1ミリ秒でいいんですよね?
コメント内のカウンターがフリーズしたままなのはなぜですか?