ObjectsDeleteAll

指定された型のオブジェクトを全て指定されたチャートまたはチャートサブウィンドウから削除します。

int  ObjectsDeleteAll(
  long  chart_id,           // チャート識別子
  int  sub_window=-1,      // ウィンドウ番号
  int  type=-1            // オブジェクトの型
  );

オブジェクト名のプレフィックスを使用して、指定された型のオブジェクトを全て削除します。

int  ObjectsDeleteAll(
  long           chart_id// チャート識別子
  const string     prefix// オブジェクト名のプレフィックス
  int      sub_window=-1// ウィンドウ番号
  int     object_type=-1   // オブジェクトの型
  );

パラメータ

chart_id

[in]  チャート識別子( 0 は現在のチャート)

prefix

[in]  オブジェクト名のプレフィックス。名称がこの文字のセットから始まる全てのオブジェクトがチャートから削除されます。プレフィックスは 'name' または 'name*' として指定でき、両バージョンの機能は同じです。空の文字列がプレフィックスとして指定された場合、全ての名称のオブジェクトが削除されます。

sub_window=-1

[in] チャートサブウィンドウの番号( 0 はメインウィンドウ、-1 はメインウィンドウを含む全てのサブウィンドウ)

type=-1

[in]  オブジェクトの型。値は ENUM_OBJECT 列挙のいずれかです。-1 は全ての型を意味します。

戻り値

削除されたオブジェクトの数。エラーの詳細を読むには GetLastError() を呼びます。

注意事項

この関数は同期呼び出しを使用します。つまり、この関数が呼び出される前にこのチャートのエンキューされたすべてのコマンドの実行が待機されるため、この関数は時間がかかることがあります。チャート上で多数のオブジェクトを操作する場合は、この特徴を考慮する必要があります。

 

例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
 
#property script_show_inputs
 
enum ENUM_REMOVE_MODE
 {
  REMOVE_MODE_TRADE_ARROWS, // すべての矢印を削除する
  REMOVE_MODE_AUTOTRADE     // すべての自動売買矢印を削除する
 };
 
input ENUM_REMOVE_MODE InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS;  /*Remove Method*/ // 削除対象(すべての矢印または自動売買矢印のみ)
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- チャートIDおよび削除されたオブジェクトの数
  long chart_id=ChartID();
  int count=0;
 
  ResetLastError();
//--- すべてのオブジェクトの削除が選択された場合
//--- OBJ_ARROW_BUYとOBJ_ARROW_SELLタイプのすべてのオブジェクトを削除し、これにより自動売買の取引アイコンも削除する
//--- チャート上に存在する同タイプの他のオブジェクトも削除する
  if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
    {
    count+=ObjectsDeleteAll(chart_id, -1, OBJ_ARROW_BUY);
    count+=ObjectsDeleteAll(chart_id, -1, OBJ_ARROW_SELL);
    }
   
//--- 自動売買の取引アイコンのみを削除することを選択した場合
//--- 名前に「autotrade」を含むオブジェクトをすべて削除し、
//--- 自動売買アイコンのみ削除し、他の矢印オブジェクトは残す
  else
    {
    count=ObjectsDeleteAll(chart_id, "autotrade");
    }
 
//--- グラフィックオブジェクトの削除中にエラーが発生した場合、報告して処理を終了する
  if(GetLastError()!=ERR_SUCCESS)
    {
    PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d", GetLastError(), count);
    return;
    }
   
//--- チャートを即座に更新して変更を表示する
  ChartRedraw(chart_id);
 
//--- 削除された矢印オブジェクトの数を操作ログで設定する
  string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ?"OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
  PrintFormat("%d objects %s removed", count, type);
  /*
  result for InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS:
  116 objects OBJ_ARROW_BUY and OBJ_ARROW_SELL removed
 
  result for InpRemoveMethod = REMOVE_MODE_AUTOTRADE:
  131 objects with prefix "autotrade" removed
  */
 }