OnDeinit()の利用方法
MQL4 (MT4)のOnDeinit()の使い方をChatGPTに確認しました。
使用GPTs:EA Creator
MT4 MQL4のOnDeinitの利用方法を実装例を交えて教えて下さい。補足で気を付ける点なども教えて下さい。
回答
OnDeinit
はMetaTrader 4 (MT4) プラットフォームのMQL4言語において、主にインディケータやエキスパートアドバイザ(EA)がチャートから削除されたり、MT4が閉じられたりするときに呼び出される関数です。この関数は、リソースの解放、開放されているファイルやデータベースの接続のクローズ、またはユーザーに通知を行うなどのクリーンアップ作業に使用されます。
OnDeinit関数の基本形式
void OnDeinit(const int reason)
{
// ここにクリーンアップコードを記述します
}
reason
パラメータは、OnDeinit
関数が呼び出された理由を示します。これには、インディケータまたはEAがチャートから手動で削除された場合、チャートやターミナルが閉じられた場合、シンボルまたはチャートの期間が変更された場合などが含まれます。
使用例:グラフィカルオブジェクトの削除
以下の例では、インディケータまたはEAがチャートから削除されるときに、そのインディケータやEAによって作成されたグラフィカルオブジェクトをすべて削除する方法を示します。
void OnDeinit(const int reason)
{
// すべてのグラフィカルオブジェクトを削除
ObjectsDeleteAll(0, OBJ_ALL);
// クリーンアップが完了したことをユーザーに通知
Print("インディケータ/EAがチャートから削除されました。リソースをクリーンアップしました。");
}
注意点
reason
パラメータの利用:OnDeinit
関数内でreason
パラメータを利用して、関数が呼び出された具体的な理由に基づいた条件分岐を行うことができます。これにより、異なるシナリオで異なるクリーンアップ処理を実行することが可能です。- リソースの解放: 開いているファイル、ネットワーク接続、または確保されたメモリなど、使用されているリソースに応じて適切なクリーンアップ処理を行うことが重要です。
- ユーザーへの通知: 必要に応じて、
OnDeinit
関数からユーザーに対して最終的なメッセージを出力することができます。これは、リソースの解放が成功したことをユーザーに知らせる良い方法です。
OnDeinit
関数を適切に使用することで、インディケータやEAの終了処理を適切に管理し、MT4プラットフォームの安定性とパフォーマンスを維持することができます。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/basis/function/events#ondeinit
他のイベントハンドリング関数の利用方法
以下のそれぞれのリンク先で確認していますので、ご参照ください。
関数名 | 概要 |
---|---|
OnInit | エキスパートアドバイザーやインジケータがチャートに読み込まれた時に一度だけ呼ばれる初期化関数です。初期設定やリソースの準備に使用されます。 |
OnDeinit | エキスパートアドバイザーやインジケータがチャートから削除される時、またはMT4が閉じられる時に呼ばれる終了関数です。使用したリソースの解放などの後処理に使用されます。 |
OnStart | スクリプトが実行された時に呼ばれる関数です。エキスパートアドバイザーでは使用されません。 |
OnCalculate | カスタムインジケーターが新しい価格データを受け取った時に呼ばれる関数です。価格データの分析やインジケーター値の計算に使用されます。 |
OnTick | 新しい市場のティックデータ(価格更新)が到着した時にエキスパートアドバイザーによって呼ばれる関数です。トレードの決定や価格分析に使用されます。 |
OnTimer | 設定された時間間隔で定期的に呼ばれる関数です。定期的なタスクの実行や状態のチェックに使用されます。 |
OnTester | バックテスト中に呼ばれる関数です。バックテストの最後に特定の処理を行うために使用されます。 |
OnChartEvent | チャートイベント(マウス操作、キーボード入力、カスタムイベント)が発生した時に呼ばれる関数です。ユーザーの操作に応じた処理やインタラクティブな機能の実装に使用されます。 |
コメント