ObjectGetString

이 함수는 해당 개체 속성의 값을 반환합니다. 개체 속성은 string 유형이어야 합니다. 이 함수에는 두 가지 변수가 있습니다.

1. 속성 값을 즉시 반환합니다.

string  ObjectGetString(
   long                            chart_id,          // 차트 식별자
   string                          name,              // 개체명
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // 속성 식별자
   int                             prop_modifier=0    // 속성 한정자(필요한 경우)
   );

2. 함수의 성공 여부에 따라 참 또는 거짓을 반환합니다. 성공하면 속성 값이 마지막 매개 변수로 참조로 전달된 수신 변수에 배치됩니다.

bool  ObjectGetString(
   long                            chart_id,          // 차트 식별자
   string                          name,              // 개체명
   ENUM_OBJECT_PROPERTY_STRING     prop_id,           // 속성 식별자
   int                             prop_modifier,     // 속성 한정자
   string&                         string_var         // 여기서 우리는 속성 값을 받아들입니다
   );

Parameter

chart_id

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

name

[in]  객체명.

prop_id

[in]  개체 속성의 ID. 그 값은 ENUM_OBJECT_PROPERTY_STRING 열거값 중 하나일 수 있습니다.

prop_modifier

[in]  지정한 속성의 한정자. 첫번째 변수의 경우 기본 한정자 값은 0과 같습니다. 대부분의 속성에는 한정자가 필요하지 않습니다. 피보나치 툴과 그래픽 객체 앤드류의 피치포크에서 레벨 수를 나타냅니다. 수준 수는 0부터 시작합니다.

string_var

[out]  요청한 속성 값을 수신하는 문자열 유형의 변수입니다.

반환값

첫 번째 버전 호출의 string 값.

이 속성이 유지 관리되고 값이 string_var 변수에 배치된 경우, 두 번째 버전의 호출에서는 true를 반환하고, 그렇지 않으면 false를 반환합니다. 에러에 대한 자세한 내용은 GetLastError()를 참조하십시오.

참고

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

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

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

 

예:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger"  // 객체명
 
/+------------------------------------------------------------------+
//| Script program start function                                   |
/+------------------------------------------------------------------+
void OnStart()
  {
//--- 현재 차트 ID
   long chart_id=ChartID();
 
//--- 현재 알려진 서버 시간에 "수직선" 그래픽 객체를 생성합니다.
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_VLINE0TimeCurrent(), 0))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
//--- 변경 사항을 즉시 반영하도록 차트를 업데이트합니다.
   ChartRedraw(chart_id);
   
//--- 객체 생성 시간을 가져옵니다
   long long_var=0;
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_CREATETIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- 객체 생성 시간의 문자열 표현
   string create_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- 객체에 설정된 시간을 가져옵니다.
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- 객체 위치 시간의 문자열 표현
   string obj_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- 객체 유형을 가져옵니다
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- 객체 유형, 객체 생성 시간 및 그래픽 객체가 차트에 위치한 시간을 저널에 출력합니다.
   PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_timeobj_time);
   
//--- 2초간 기다린 후 생성된 객체를 삭제합니다.
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   ChartRedraw(chart_id);
   /*
   결과:
   OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
   */
  }