mql5言語の特徴、微妙なニュアンスとテクニック - ページ 204 1...197198199200201202203204205206207208209210211...247 新しいコメント fxsaber 2021.06.30 12:55 #2031 Andrey Khatimlianskii:他のイベントハンドラが中断される(実行されない)ことは、誰も保証していない。アラートの後、deinitとinitの両方が起こりますよね? そう、完全なリブートが行われているのです。ただ、タイマー(2回目でも)がとんでしまうのは、バグではなく特徴です。 fxsaber 2021.06.30 13:19 #2032 fxsaber:口座切り替え時にアラートを出すアドバイザーです。ルールからすると、してはいけないことだと思われます。しかし、これはタイマーを使っているからこそ起こることです。 この特異性を利用して、定式化は簡単だが実装は複雑 な問題を解決することができる。 // Если произошла смена счета, советник выгружается. const bool Init = EventSetMillisecondTimer(1); void OnTimer() { static const long Account = AccountInfoInteger(ACCOUNT_LOGIN); if (Account != AccountInfoInteger(ACCOUNT_LOGIN)) ExpertRemove(); } Andrey Khatimlianskii 2021.06.30 13:43 #2033 fxsaber:この機能を使えば、定式化は単純でも実装が複雑 な問題を解決することができる。 各On-functionの入力でアカウント変更を確認するのではダメなのでしょうか? なぜミリ秒タイマーなのか?実行中に再ログインが発生しても、とりあえずプログラムの実行を中断することはない。 fxsaber 2021.06.30 13:45 #2034 Andrey Khatimlianskii:各On-functionの入力でアカウント変更を確認するのではダメなのでしょうか?なぜミリ秒タイマーなのか?実行中に再ログインが起こっても、とにかくプログラムの実行を中断させない。 試してみてください。このテーマについては、上のリンクに長い議論があります。 Artyom Trishkin 2021.06.30 15:57 #2035 fxsaber:そう、完全なリブートが行われているのです。ただ、タイマー(セカンドタイマーでも)がぶつかるのは、バグではなく、機能です。 ExpertRemove()コマンドの後、ストップフラグは単に上がり、EAは次のティックまで動作を継続します。新しいティックでは、ストップフラグが立つとEAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。 従って、このフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があるのです。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。 それとも私の勘違いで、質問が違うのでしょうか? fxsaber 2021.06.30 16:15 #2036 Artyom Trishkin:ExpertRemove()コマンドの後、停止フラグが単に設定され、EAは次のティックまで動作し続けます。新しいティックでストップフラグが立つと、EAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。したがって、もしこのフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があります。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。それとも、私の勘違いで、質問が違うのでしょうか? どのような問題があるのかわからない。 Alexey Viktorov 2021.06.30 16:43 #2037 Artyom Trishkin:ExpertRemove()コマンドの後、停止フラグが単に設定され、EAは次のティックまで動作し続けます。新しいティックで ストップフラグが立つと、EAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。したがって、もしこのフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があるのです。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。それとも、私の勘違いで、質問が違うのでしょうか? 新しいティックではなく、次のリターンで。 OnInit()にExpertRemove()を入れて、デバッグで一歩一歩確認してください。 Artyom Trishkin 2021.06.30 17:13 #2038 Alexey Viktorov:新しいティックではなく、次のリターンで。OnInit()にExpertRemove()を入れて、デバッグで順次確認してください。 はい、私のミスです。次のイベントは実行されません。必要のない機能のヘルプを見るのは久しぶりです :) Artyom Trishkin 2021.06.30 17:14 #2039 fxsaber:どのような問題があるのかわからない。 回答の意味は不明です。そんなことはどうでもいいんです。 fxsaber 2021.06.30 17:34 #2040 Artyom Trishkin:回答の意味は不明です。 ExpertRemoveは起動 されていません。 1...197198199200201202203204205206207208209210211...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
他のイベントハンドラが中断される(実行されない)ことは、誰も保証していない。
アラートの後、deinitとinitの両方が起こりますよね?
そう、完全なリブートが行われているのです。ただ、タイマー(2回目でも)がとんでしまうのは、バグではなく特徴です。
口座切り替え時にアラートを出すアドバイザーです。ルールからすると、してはいけないことだと思われます。
この特異性を利用して、定式化は簡単だが実装は複雑 な問題を解決することができる。
この機能を使えば、定式化は単純でも実装が複雑 な問題を解決することができる。
各On-functionの入力でアカウント変更を確認するのではダメなのでしょうか?
なぜミリ秒タイマーなのか?実行中に再ログインが発生しても、とりあえずプログラムの実行を中断することはない。
各On-functionの入力でアカウント変更を確認するのではダメなのでしょうか?
なぜミリ秒タイマーなのか?実行中に再ログインが起こっても、とにかくプログラムの実行を中断させない。
試してみてください。このテーマについては、上のリンクに長い議論があります。
そう、完全なリブートが行われているのです。ただ、タイマー(セカンドタイマーでも)がぶつかるのは、バグではなく、機能です。
ExpertRemove()コマンドの後、ストップフラグは単に上がり、EAは次のティックまで動作を継続します。新しいティックでは、ストップフラグが立つとEAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。
従って、このフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があるのです。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。
それとも私の勘違いで、質問が違うのでしょうか?
ExpertRemove()コマンドの後、停止フラグが単に設定され、EAは次のティックまで動作し続けます。新しいティックでストップフラグが立つと、EAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。
したがって、もしこのフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があります。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。
それとも、私の勘違いで、質問が違うのでしょうか?
どのような問題があるのかわからない。
ExpertRemove()コマンドの後、停止フラグが単に設定され、EAは次のティックまで動作し続けます。新しいティックで ストップフラグが立つと、EAがアンロードされます。新しいティックが来るまでは、すべてのOn機能は通常モードで動作し続けるということです。
したがって、もしこのフラグの状態をプログラム的に取得できないのであれば(特にこの機能を探したわけではありません)、グローバルにカスタムフラグを用意する必要があるのです。ExpertRemove()コマンドの前に独自のフラグを設定し、各On関数でチェックします。フラグが立っていれば、出発する。そうすると、タイマーに書き込まれたコードは実行されません。
それとも、私の勘違いで、質問が違うのでしょうか?
新しいティックではなく、次のリターンで。
OnInit()にExpertRemove()を入れて、デバッグで一歩一歩確認してください。
新しいティックではなく、次のリターンで。
OnInit()にExpertRemove()を入れて、デバッグで順次確認してください。
はい、私のミスです。次のイベントは実行されません。必要のない機能のヘルプを見るのは久しぶりです :)
どのような問題があるのかわからない。
回答の意味は不明です。そんなことはどうでもいいんです。
回答の意味は不明です。
ExpertRemoveは起動 されていません。