ObjectDelete

Belirtilen sembolü belirtilen çizelgeden kaldırır.

bool  ObjectDelete(
   long    chart_id,     // çizelge tanımlayıcı
   string  name          // nesne ismi
   );

Parametreler

chart_id

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

name

[in]  Silinecek nesnenin ismi.

Dönüş değeri

Fonksiyon, komutun doğru olarak belirtilen grafiğin sırasına başarıyla eklendiğinde true, aksi halde false döndürür.

Not

Eşzamanlı olmayan bir çağrı her zaman ObjectDelete() için kullanılır, bu nedenle fonksiyon yalnızca komutu bir grafik sırasına ekleme sonuçlarını döndürür. Bu durumda true yalnızca komutun başarıyla eklendiği anlamına gelir, ancak yürütme sonucu bilinmemektedir.

Komut yürütme sonucunu kontrol etmek için ObjectFind() işlevini veya ObjectGetXXX gibi nesne özelliklerini isteyen başka herhangi bir işlevi kullanabilirsiniz. Bununla birlikte, bu tür işlevlerin bu grafiğin kuyruğunun sonuna eklendiğini ve yürütme sonucunu beklediğini (senkron çağrı nedeniyle) unutmamalısınız ve bu nedenle zaman alıcı olabilir. Bu özellik, bir grafikte çok sayıda nesneyle çalışırken dikkate alınmalıdır.

Bir nesne yeniden isimlendirildiğinde, aynı anda iki olay ortaya çıkar. Bu olaylar, bir Uzman Danışman veya gösterge içerisinde OnChartEvent() fonksiyonu ile işlenebilir:

  • eski isimli nesnenin silinmesi olayı;
  • yeni isimli nesnenin oluşturulması olayı.

 

Örnek:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- grafik kimliği
   long chart_id=ChartID();
 
//--- tüm grafiksel nesneler boyunca bir döngü içinde
   int obj_total=ObjectsTotal(chart_id);
   for(int i=obj_total-1i>=0i--)
     {
      //--- her ikinci nesneyi atla
      if(i%2==0)
         continue;
      
      //--- grafiksel nesnenin adını al
      //--- bu bir otomatik alım-satım işlemi etiketiyse, bu nesneyi atla
      string obj_name=ObjectName(chart_idi);
      if(StringFind(obj_name"autotrade")==0)
         continue;
      
      //--- grafiksel nesneyi chart_id kimlikli grafikten sil
      ResetLastError();
      if(ObjectDelete(chart_idobj_name))
        {
         PrintFormat("[%d] Graphic object named \"%s\" removed from the chart with ID #%I64d"iobj_namechart_id);
        }
      else
        {
         Print("ObjectDelete() failed. Error "GetLastError());
        }
     }
   /*
   6 grafiksel nesnenin ve otomatik alım-satım etiketlerinin (atlandı) bulunduğu grafik için sonuç:
   [659Graphic object named "M30 Rectangle 5636" removed from the chart with ID #128968168951083984
   [657Graphic object named "M30 Trendline 40731" removed from the chart with ID #128968168951083984
   [1Graphic object named "M30 Vertical Line 13600" removed from the chart with ID #128968168951083984
   */
  }