ObjectDelete

この関数は指定された名称のオブジェクトを指定されたチャートから削除します。

bool  ObjectDelete(
  long    chart_id,     // チャート識別子
  string  name          // オブジェクト名
  );

パラメータ

chart_id

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

name

[in]  削除されるオブジェクト名

戻り値

この関数は、指定されたチャートのキューにコマンドが正常に追加された場合はtrueを返し、それ以外の場合はfalseを返します。

注意事項

ObjectDelete()では常に非同期呼び出しが使用されます。これが、この関数がチャートキューにコマンドを追加した結果だけを返す理由です。この場合、trueはコマンドが正常にエンキューされたことを意味しますのみで、その実行結果は不明です。

コマンドの実行結果を確認するにはObjectFind()関数またはオブジェクトプロパティをレクエストするObjectGetXXXなどのその他の関数を使用できます。ただし、そのような関数はそのチャートのキューの最後に追加され、(同期呼び出しのために)実行結果を待つため、時間がかかる可能性があります。チャート上で多数のオブジェクトを操作する場合は、この特徴を考慮する必要があります。

オブジェクトの名称が変更された場合、2 つのイベントが同時に形成されます。これらのイベントはエキスパートアドバイザーまたは指標の OnChartEvent() 関数によって処理されます。

  • 古い名称のオブジェクトの削除イベント
  • 新しい名称のオブジェクトの作成イベント

 

例:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- チャートID
  long chart_id=ChartID();
 
//--- すべてのチャートグラフィックオブジェクトのループ
  int obj_total=ObjectsTotal(chart_id);
  for(int i=obj_total-1; i>=0; i--)
    {
    //--- 1つおきのオブジェクトをスキップする
    if(i%2==0)
        continue;
     
    //--- グラフィックオブジェクトの名称を取得する
    //--- これが自動売買の取引ラベルの場合、このオブジェクトをスキップする
    string obj_name=ObjectName(chart_id, i);
    if(StringFind(obj_name, "autotrade")==0)
        continue;
     
    //--- chart_idのチャートからグラフィックオブジェクトを削除する
    ResetLastError();
    if(ObjectDelete(chart_id, obj_name))
       {
        PrintFormat("[%d] Graphic object named \"%s\" removed from the chart with ID #%I64d", i, obj_name, chart_id);
       }
    else
       {
        Print("ObjectDelete() failed. Error ", GetLastError());
       }
    }
  /*
  6つのグラフィックオブジェクトと自動売買ラベル(スキップ)が配置されたチャートの結果
  [659] Graphic object named "M30 Rectangle 5636" removed from the chart with ID #128968168951083984
  [657] Graphic object named "M30 Trendline 40731" removed from the chart with ID #128968168951083984
  [1] Graphic object named "M30 Vertical Line 13600" removed from the chart with ID #128968168951083984
  */
 }