При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится. При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit()), пропускаются.
スタティック変数の動作はこれでいいのでしょうか?
タイムフレームの切り替えやパラメーターの変更を行っても、その値は変わりません。
EAを起動し、タイムフレームを切り替えた後の結果です。
静的変数これはヘルプからです。
静的変数は、プログラム実行時に存在し、専用関数OnInit()が呼ばれる前に一度だけ初期化されます。
つまり、OnInit()を呼び出すたびに1回、または起動前に1回、ただし再初期化は2回目の実行に近い。
テスターでもこの現象は起こるのでしょうか?
グローバル変数もこのような挙動をします。
タイムフレームを切り替えてもExpert Advisorは再起動せず、動作を継続する。
https://www.mql5.com/ru/docs/runtime/running
При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится. При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit()), пропускаются.
タイムフレームを切り替えてもExpert Advisorは再起動せず、動作を継続する。
https://www.mql5.com/ru/docs/runtime/running
今までのMetaTraderにはなかった、ある特殊性に気づきました。エキスパートアドバイザーをチャートから削除(コンテキストメニューのコマンドを使用)すると、チャートが閉じてしまいます。従来は、Expert Advisorを削除してもチャートが閉じませんでした。
今までのMetaTraderにはなかった、ある特殊性に気がつきました。Expert Advisor をチャートから削除すると(コンテキストメニューのコマンドを使用)、その後にチャートが閉じてしまいます。従来は、Expert Advisor を削除してもチャートが閉じないことがありました。
EA自体にプログラムすることもできますし、他のEAで確認することもできます...。
win7で履歴データをデバッグすると、観測に追加された変数がその値を表示しません。実データをデバッグすると、すべてうまくいきます。
変数を追加しても、すぐにウィンドウに表示されず、次回デバッグを開始したときに表示されますが、その値はすでに<未実装>になっていることがわかりました。
EA自体にプログラムされている可能性もありますので、他のEAで確認してみてください...。
確かに、標準のEAをチャートに投げました。問題なく削除しました。Expert AdvisorのソースでChartCloseを見つけようとしました。どこを探してもないんです。Expert Advisorを削除する際にチャートを閉じることは、最初から意図していませんでした。CAppDialogなど、標準的なUI要素を使用しています。もしかしたら、標準クラスの どこかにチャートの閉じ方が書いてあったのかもしれない...。
確かに、標準的なEAをチャートに投げました。問題なく削除しました。Expert AdvisorのソースでChartCloseを見つけようとしました。どこを探してもないんです。当初はExpert Advisorを削除する際にチャートを閉じないように考えていました。CAppDialogなど、標準的なUI要素を使用しています。もしかしたら、チャートの閉じ方が標準クラスの どこかに書いてあったのかもしれない...。
見つけた。CAppDialogクラスはCChart m_chartフィールドを持っています。
CAppDialogが削除されると(その子孫は私のExpert Advisorで使われています)、 m_chartの デストラクタはおそらくチャートを閉じます。
残念ながら、この処理はデバッガーを使って追跡することはできません。しかし、CAppDialogやCChartの ソースコードに目を通すと、すべてが明らかに なります。開発者の方々の注意を喚起します。
見つけた。CAppDialog クラスは、CChart m_chart フィールドを持ちます。
CAppDialogが削除されると(その子孫であるCDialogは 私のExpert Advisorで使われています)、m_chart デストラクタはおそらくチャートを閉じます。
残念ながら、この処理はデバッガーを使って追跡することはできません。しかし、CAppDialogやCChartの ソースコードに目を通すと、すべてが明らかに なります。開発者の方々の注意を喚起したいと思います。
チャートからの切り離し、など。
SignalBaseTotal() が常に1000を返す理由を教えてください。
mql5.comのシグナルサービスには1000以上の放送信号がありますが、端末で利用できるのは1000程度です。なぜ?
この千の中に一組の信号があり、一時間後には違う信号になっていることがあるのでしょうか?ファイルからの保存/読み込み時に、新しいデータが追加されない派生構造でエラーが発生する。