全オブジェクトの削除
オブジェクトを削除するにはObjectDelete関数を使用しますが、MQL4のプログラムではチャート上の全てのオブジェクトを削除する関数がObjectDelete関数とは別に用意されています。全てのオブジェクトをループで処理してObjectDelete関数で削除しても良いのですが、開発工数の削減や不具合の防止、動作確認作業の軽減という観点で考えると、公式に用意されている関数がある場合はそちらを使用した方が最終的なMQL4プログラムの品質向上に繋がる事になります。
全オブジェクトを削除するObjectsDeleteAll関数
全てのオブジェクトを削除するには、MQL4で提供されているObjectsDeleteAll関数を使用します。
int ObjectsDeleteAll( long chart_id, // chart ID int sub_window = EMPTY, // window index int object_type = EMPTY // object type );
引数
chart_id
第一引数のchart_idには、削除するオブジェクトが表示されているチャートのIDを指定します。MQL4プログラムが設定されたチャートの場合はChartID関数でチャートIDを取得できるためChartID関数の戻り値、または「0」を指定します。それ以外のチャートの場合は削除対象のオブジェクトが表示されているチャートIDを取得して指定します。
sub_window
第二引数のsub_windowには、削除対象のウィンドウを指定します。ローソク足が表示されているメインウィンドウからオブジェクトを削除する場合は「0」、サブウィンドウのオブジェクトを削除する場合はサブウィンドウの番号を指定します。この引数は省略可能となり、省略した場合はメインウィンドウやサブウィンドウに関わらず、チャート上の全てのオブジェクトが削除対象となります。
object_type
第三引数のobject_typeには、削除対象となるオブジェクトの種類を定数で指定します。省略した場合はオブジェクトの種類に関わらず、全てのオブジェクトが削除対象となります。オブジェクトの種類と定数については以下のリンク先をご参照ください。
オブジェクトを作りたい! – MQL4逆引きリファレンス
https://www.mql4-encyclopedia.com/objectcreate/
戻り値
全てのオブジェクトの削除に成功した場合はtrue、失敗した場合はfalseが返却されます。
使用例
1.チャート上の全てのオブジェクトを削除
ObjectsDeleteAll(ChartID());
全てのウィンドウに表示された全てのオブジェクトを削除します。
2.メインウィンドウ上の全ての売りサインを削除
ObjectsDeleteAll(ChartID(), 0, OBJ_ARROW_SELL);
第二引数に「0(メインウィンドウ)」、第三引数に「OBJ_ARROW_SELL(売りサイン)」と指定する事で、メインウィンドウ上にある全ての売りサインを削除します。
3.チャート上の全てのトレンドラインを削除
ObjectsDeleteAll(ChartID(), EMPTY, OBJ_TREND);
チャート上の全てのトレンドライン、という条件を指定するには第二引数を省略した上で第三引数に「OBJ_TREND(トレンドライン)」を指定する必要があります。この場合の第二引数は「EMPTY(-1)」を指定するこで第二引数を省略扱い、つまりチャート上の全てのオブジェクトを対象とする、という指定が可能となります。
同じ接頭辞のオブジェクトだけを削除
ObjectsDeleteAll関数には引数が異なるパターンが用意されており、接頭辞(prefix)を指定して該当する名前のオブジェクトだけを削除することも可能です。そのため一部のオブジェクトを複数同時に削除することがあるMQL4プログラムの場合は、それらのオブジェクトに同じ接頭辞を付与しておくことでObjectsDeleteAll関数が使える事になります。接頭辞を指定してObjectsDeleteAll関数を使うパターンについては以下のリンク先もご参照ください。
ObjectsDeleteAll – MQL4 Reference
https://docs.mql4.com/objects/objectsdeleteall
オブジェクトの削除タイミング
ObjectsDeleteAll関数によるオブジェクト削除のタイミングは、オブジェクトの作成や削除と同じく一連の処理が終了するか、もしくは処理中にChartRefresh関数を実行したタイミングとなります。詳細については以下のリンク先をご参照ください。
オブジェクトを作りたい! – MQL4逆引きリファレンス
https://www.mql4-encyclopedia.com/objectcreate/
まとめ
参考URL
ObjectsDeleteAll – MQL4 Reference
https://docs.mql4.com/objects/objectsdeleteall