ObjectsDeleteAll

Belirtilen çizelge (veya çizelge alt-penceresi) üzerinde belirtilen tipteki tüm nesneleri siler

int  ObjectsDeleteAll(
   long  chart_id,           // çizelge tanımlayıcısı
   int   sub_window=-1,      // pencere indisi
   int   type=-1             // nesne tipi
   );

Belirtilen türdeki tüm nesneleri nesne adlarındaki önek kullanarak kaldırır.

int  ObjectsDeleteAll(
   long           chart_id,   // chart ID
   const string     prefix,   // nesne adındaki önek
   int       sub_window=-1,   // pencere indeksi
   int      object_type=-1    // nesne türü
   );

Parametreler

chart_id

[in]  Çizelge tanımlayıcısı. 0, mevcut çizelge anlamına gelir.

prefix

[in]  Nesne isimlerindeki önek. Adı bu karakter kümesiyle başlayan tüm nesneler grafikten kaldırılır. Öneki 'ad' veya 'ad*' olarak belirtebilirsiniz - her iki türe de aynı işe yarayacaktır. Önek olarak boş bir string belirtilirse, olası tüm adlara sahip nesneler kaldırılır.

sub_window=-1

[in] Çizelge alt-penceresinin numarası. 0 ana çizelge penceresidir, -1 ise ana pencere de dahil olmak üzere tüm alt pencereler anlamına gelir.

type=-1

[in]  Nesne tipi. Bu değer, ENUM_OBJECT değerlerinden biri olabilir. -1 tüm tipler anlamına gelir.

Dönüş değeri

Silinen nesnelerin sayısına dönüş yapar. Hata ile ilgili daha fazla bilgi için GetLastError() fonksiyonunu çağırın.

Not

Fonksiyon, eşzamanlı bir çağrı kullanır; bu, fonksiyonun çağrı öncesinde bu grafik için yerine getirilmiş tüm komutların yürütülmesini beklediği anlamına gelir, bu nedenle bu fonksiyon çok zaman alıcı olabilir. Bu özellik, bir grafikte çok sayıda nesneyle çalışırken dikkate alınmalıdır.

 

Örnek:

#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 all arrows
   REMOVE_MODE_AUTOTRADE      // Remove all autotrade arrows
  };
 
input ENUM_REMOVE_MODE  InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS;  /*Remove Method*/ // tüm okları veya sadece otomatik alım-satım oklarını kaldır
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- grafik kimliği ve kaldırılan nesnelerin sayısı
   long chart_id=ChartID();
   int  count=0;
   
   ResetLastError();
//--- tüm ok nesnelerini silme seçildiyse
//--- OBJ_ARROW_BUY ve OBJ_ARROW_SELL türlerindeki tüm nesneleri sil (böylece tüm otomatik alım-satım simgeleri de dahil,
//--- grafik üzerinde bulunan bu iki türdeki tüm nesneler silinir)
   if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
     {
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_BUY);
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_SELL);
     }
     
//--- yalnızca otomatik alım-satım simgelerini kaldırma seçildiyse
//--- adlarında “autotrade” alt dizgesi bulunan tüm nesneleri sil
//--- (böylece tüm otomatik alım-satım simgeleri kaldırılır, diğer ok nesneleri ise bırakılır)
   else
     {
      count=ObjectsDeleteAll(chart_id"autotrade");
     }
 
//--- grafiksel nesneler silinirken bir hata oluşursa, bunu raporla ve çalışmayı sonlandır
   if(GetLastError()!=ERR_SUCCESS)
     {
      PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d"GetLastError(), count);
      return;
     }
     
//--- değişiklikleri hemen yansıtmak için grafiği güncelle
   ChartRedraw(chart_id);
   
//--- kaldırılan ok nesnelerinin sayısını günlüğe yazdır
   string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ? "OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
   PrintFormat("%d objects %s removed"counttype);
   /*
   InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS için sonuç:
   116 objects OBJ_ARROW_BUY and OBJ_ARROW_SELL removed
   
   InpRemoveMethod = REMOVE_MODE_AUTOTRADE için sonuç:
   131 objects with prefix "autotrade" removed
   */
  }