ObjectName

함수는 지정된 차트의 지정된 하위 창에서 지정된 유형의 해당 개체 이름을 반환합니다.

string  ObjectName(
   long  chart_id,           // 차트 식별자
   int   pos,                // 개체 목록에 있는 숫자
   int   sub_window=-1,      // 윈도우 인덱스
   int   type=-1             // 객체 유형
   );

Parameter

chart_id

[in]  차트 식별자. 0은 현재 차트를 의미합니다.

pos

[in]  하위 창의 수와 유형을 기준으로 지정된 필터에 따른 개체의 순서 번호입니다.

sub_window=-1

[in]  차트 하위 창의 번호. 0은 주 차트 창을 의미하며 -1은 주 창을 포함하여 차트의 모든 하위 창을 의미합니다.

type=-1

[in]  객체 유형. 값은 ENUM_OBJECT 열거값 중 하나일 수 있습니다. -1은 모든 유형을 의미합니다.

반환값

성공할 경우 객체 이름이 반환됩니다.

참고

이 함수는 동기식 호출을 사용합니다. 이는 이 함수가 호출하기 전에 이 차트에 대해 대기한 모든 명령의 실행을 대기하므로 이 함수는 시간이 많이 걸릴 수 있습니다. 차트에서 많은 개체로 작업할 때는 이 기능을 고려해야 합니다.

개체 이름이 변경되면 두 개의 이벤트가 동시에 생성됩니다. 이러한 이벤트는 OnChartEvent() 기능을 통해 Professional Advisor 또는 지표에서 처리할 수 있습니다.:

  • 이전 이름을 가진 객체 삭제의 경우
  • 새 이름으로 개체를 만드는 이벤트

 

예:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
/+------------------------------------------------------------------+
//| Script program start function                                   |
/+------------------------------------------------------------------+
void OnStart()
  {
//--- 차트 ID
   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"
   */
  }