ObjectsDeleteAll

지정된 유형의 지정된 차트 하위 창에서 모든 개체를 제거합니다.

int  ObjectsDeleteAll(
   long  chart_id,           // chart identifier
   int   sub_window=-1,      // 윈도우 인덱스
   int   type=-1             // 객체 유형
   );

개체 이름에 접두사를 사용하여 지정된 유형의 모든 개체를 제거합니다.

int  ObjectsDeleteAll(
   long           chart_id,   // chart ID
   const string     prefix,   // prefix in object name
   int       sub_window=-1,   // window index
   int      object_type=-1    // object type
   );

Parameter

chart_id

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

prefix

[in]  개체명의 접두사. 이름이 이 문자 집합으로 시작하는 모든 개체가 차트에서 제거됩니다. 접두사를 'name' 또는 'name*'으로 지정할 수 있으며 – 두 변수 모두 동일하게 작동합니다. 빈 문자열을 접두사로 지정하면 가능한 모든 이름을 가진 개체가 제거됩니다.

sub_window=-1

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

type=-1

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

반환값

삭제된 개체 수를 반환합니다. 에러에 대한 자세한 내용은 GetLastError()를 참조하십시오.

참고

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

 

예:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#property script_show_inputs
 
enum ENUM_REMOVE_MODE
  {
   REMOVE_MODE_TRADE_ARROWS,  // 모든 화살표를 제거합니다
   REMOVE_MODE_AUTOTRADE      // 모든 ㅏ동거래 화살표를 제거합니다
  };
 
input ENUM_REMOVE_MODE  InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS;  /*Remove Method*/ // 모든 화살표 혹은 오토 거래 화살표를 제거 
 
/+------------------------------------------------------------------+
//| Script program start function                                   |
/+------------------------------------------------------------------+
void OnStart()
  {
//--- 차트 ID 및 제거된 개체 수
   long chart_id=ChartID();
   int  count=0;
   
   ResetLastError();
//--- 모든 화살표 객체 삭제가 선택된 경우
//--- OBJ_ARROW_BUY 및 OBJ_ARROW_SELL 유형의 모든 객체를 삭제하여 모든 자동 거래 아이콘을 삭제합니다.
//--- 차트에 있는 동일한 유형의 다른 객체도 삭제합니다.
   if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
     {
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_BUY);
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_SELL);
     }
     
//--- 자동 거래 아이콘만 제거하기로 선택한 경우
//--- 이름에 "autotrade" 하위 문자열이 포함된 모든 객체를 삭제합니다.
//--- 모든 자동 거래 아이콘을 제거하고 다른 화살표 객체는 그대로 둡니다.
   else
     {
      count=ObjectsDeleteAll(chart_id"autotrade");
     }
 
//--- 그래픽 객체 삭제 중 오류가 발생한 경우 이를 보고하고 작업을 종료합니다.
   if(GetLastError()!=ERR_SUCCESS)
     {
      PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d"GetLastError(), count);
      return;
     }
     
//--- 변경 사항을 즉시 반영하도록 차트를 업데이트합니다.
   ChartRedraw(chart_id);
   
//--- 저널에서 제거되는 화살표 객체의 수를 설정합니다.
   string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ? "OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
   PrintFormat("%d objects %s removed"counttype);
   /*
   result for InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS:
   116 objects OBJ_ARROW_BUY and OBJ_ARROW_SELL removed
   
   result for InpRemoveMethod = REMOVE_MODE_AUTOTRADE:
   131 objects with prefix "autotrade" removed
   */
  }