ObjectName

この関数は、指定されたチャートの指定されたサブウィンドウで、指定された型を持つオブジェクトの名称を返します。

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

パラメータ

chart_id

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

pos

[in]  サブウィンドウの数と種類によって指定されたフィルタに応じたオブジェクトの序数

sub_window=-1

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

type=-1

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

戻り値

成功の場合はオブジェクト名

注意事項

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

オブジェクトの名称が変更された場合、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();
 
//--- メインウィンドウを含めたチャートサブウィンドウの数を取得する
  long wnd=0;
  ResetLastError();
  if(!ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL, 0, wnd))
    {
    Print("ChartGetInteger() failed. Error ", GetLastError());
    return;
    }
 
//--- メインウィンドウを含めたチャートサブウィンドウの数のループ
  for(int sub_wnd=0; sub_wnd<(int)wnd; sub_wnd++)
    {
    //--- 操作ログにチャートの見出しを表示する
    string wnd_name=(sub_wnd==0 ?"Main window:" : StringFormat("Subwindow %d:", sub_wnd));
    Print(wnd_name);
     
    //--- 現在のサブウィンドウでのグラフィックオブジェクトの数を取得する
    //--- サブウィンドウオブジェクトをループして、それぞれの名前を出力する
    int objects=ObjectsTotal(chart_id, sub_wnd);
    for(int obj_index=0; obj_index<objects; obj_index++)
       {
        //--- ループでの現在のオブジェクト名
        string obj_name=ObjectName(chart_id, obj_index, sub_wnd);
       
        //--- もしこれが取引ラベル(自動売買)の場合、このオブジェクトの名前は操作ログに表示されない
        if(sub_wnd==0 && StringFind(obj_name, "autotrade")==0)
          continue;
       
        PrintFormat("  [%d] Graphic object name: \"%s\"", obj_index, obj_name);
       }
    }
  /*
   メインウィンドウに2つのサブウィンドウがあり、
   メインウィンドウには2つのグラフィックオブジェクトと取引ラベル(スキップ)が含まれ、
   各チャートサブウィンドウには2つのグラフィックオブジェクトが作成される結果
  Main window:
    [0] Graphic object name: "M30 Fibo 29182"
    [1] Graphic object name: "M30 Vertical Line 13600"
  Subwindow 1:
    [0] Graphic object name: "M30 Cycle Lines 63004"
    [1] Graphic object name: "M30 Trendline 40731"
  Subwindow 2:
    [0] Graphic object name: "M30 Equidistant Channel 58930"
    [1] Graphic object name: "M30 Rectangle 5636"
  */
 }