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 означает все типы.

Возвращаемое значение

Имя объекта в случае успеха.

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

При переименовании графического объекта одновременно  формируются два события, которые можно обработать в эксперте или индикаторе функцией OnChartEvent():

  • событие удаления объекта со старым именем;
  • событие создания графического объекта с новым именем.

Пример:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- идентификатор графика
   long chart_id=ChartID();
   
//--- получаем количество подокон графика вместе с главным окном 
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- в цикле по количеству подокон графика, включая главное окно 
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- выводим в журнал заголовок графика
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- получаем количество графических объектов в текущем подокне
      //--- и в цикле по всем объектам подокна выводим на печать наименование каждого
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- имя текущего объекта в цикле
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- если это метка сделки (автоторговля), то имя этого объекта не выводим в журнал
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   результат для главного окна с двумя подокнами,
   где в главном окне содержатся два графических объекта и метки сделок (пропускаются),
   и в каждом подокне графика построены по два графических объекта:
   Main window:
     [0Graphic object name"M30 Fibo 29182"
     [1Graphic object name"M30 Vertical Line 13600"
   Subwindow 1:
     [0Graphic object name"M30 Cycle Lines 63004"
     [1Graphic object name"M30 Trendline 40731"
   Subwindow 2:
     [0Graphic object name"M30 Equidistant Channel 58930"
     [1Graphic object name"M30 Rectangle 5636"
   */
  }