mt5 ObjectDelete'de bir hata mı var?

 

merhaba , MQL5'te bir gösterge yazıyorum, ancak ObejectDelete dize adı olarak ne yazarsam yazarsam true ! nesnesiz boş bir grafikte bile!

int ObjCount = ObjectsTotal(ChartID(),/*0=ana alt pencere*/0,/*all objectTypes*/-1);

bool deleteResult=ObjectDelete(ChartID(),"var olmayan nesne");

Print( __LINE__ ,"-",deleteResult," | ObjCount=",ObjCount);

işte sonuç:

2016.12.11 13:46:38.385 Uzak Test (EURUSD,H1) 37- doğru | NesneSayısı=0

false döndürmesi gerekmez mi?


 
Farzin Sadeghi :

merhaba , MQL5'te bir gösterge yazıyorum, ancak ObejectDelete dize adı olarak ne yazarsam yazarsam true ! nesnesiz boş bir grafikte bile!

int ObjCount = ObjectsTotal(ChartID(),/*0=ana alt pencere*/0,/*all objectTypes*/-1);

bool deleteResult=ObjectDelete(ChartID(),"var olmayan nesne");

Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount);

işte sonuç:

2016.12.11 13:46:38.385 Uzak Test (EURUSD,H1) 37- doğru | NesneSayısı=0

false döndürmesi gerekmez mi?


işte aynı kodun sonucu mt4 :

2016.12.11 14:00:10.141 Far-TestObjDelete EURUSD_e,H1: 38 -false | NesneSayısı=0

yani mt5 yanlış çalışıyor!

 
Farzin Sadeghi :

işte aynı kodun sonucu mt4 :

2016.12.11 14:00:10.141 Far-TestObjSil EURUSD_e,H1: 38 -false | NesneSayısı=0

yani mt5 yanlış çalışıyor!

Hangi MT5 yapısını kullanıyorsunuz? Mevcut mevcut yapı 1495 (09 Aralık 2016)!
 
Fernando Carreiro :
Hangi MT5 yapısını kullanıyorsunuz? Mevcut mevcut yapı 1495 (09 Aralık 2016)!
evet , mt5 1495 , 2016.dec.09 , ve meta düzenleyici de 1495.
 
Farzin Sadeghi :
evet , mt5 1495 , 2016.dec.09 , ve meta düzenleyici de 1495.

Lütfen aynı etkiyi yaratıp yaratmadığını görmek için derleyebileceğimiz ve kendi tarafımızda test edebileceğimiz eksiksiz bir küçük test komut dosyası/gösterge kodu sağlayın?

Bizim tarafımızda da aynısını yapıyorsa, bunu olası bir hata olarak Servis Masasına bildirebilirsiniz !

Bir sonraki gönderinizde eksiksiz bir dosya olarak ekleyin!

 
Fernando Carreiro :

Lütfen aynı etkiyi yaratıp yaratmadığını görmek için derleyebileceğimiz ve kendi tarafımızda test edebileceğimiz eksiksiz bir küçük test komut dosyası/gösterge kodu sağlayın?

Bizim tarafımızda da aynısını yapıyorsa, bunu olası bir hata olarak Servis Masasına bildirebilirsiniz !

Bir sonraki gönderinizde eksiksiz bir dosya olarak ekleyin!

burada hem mt5 hem de mt4'te aynı kod var. sonuçlar farklı ama yardım dosyası aynı şeyi söylüyor.

NesneSil

İşlev, belirtilen ada sahip nesneyi belirtilen grafikten kaldırır.

bool ObjectDelete (
    uzun      chart_id , // grafik tanımlayıcısı
    sicim    isim            // Nesne adı
);

parametreler

chart_id

[içinde] Grafik tanımlayıcısı. 0, geçerli grafik anlamına gelir.

isim

[içinde] Silinecek nesnenin adı.

Geri dönüş değeri

Kaldırma başarılı olursa true, aksi takdirde false döndürür.

 
Farzin Sadeghi : burada hem mt5 hem de mt4'te aynı kod var. sonuçlar farklı ama yardım dosyası aynı şeyi söylüyor.
Bir takipte, OP'nin kaynak kodunda bir hata olmadığından emin olmak için kendi kodumu yeniden oluşturdum ve aşağıdaki Gösterge koduyla aynı etkiyi elde ettim ve ben de gerçekten OP ile aynı sonucu aldım:
#property strict
#property indicator_chart_window

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[],
   const double &open[], const double &high[], const double &low[], const double &close[],
   const long &tick_volume[], const long &volume[], const int &spread[])
{
   static bool boolFirstTime = true ;
  
   if ( boolFirstTime )
   {
      boolFirstTime = false ;
       bool boolDeleteResult = ObjectDelete ( 0 , "Non-existing Object" );
       Print ( "Result of Deleteing non-existing Chart Object: " , boolDeleteResult );
   }
  
   return (rates_total);
}
Çıktı şu şekildeydi:
2016.12 . 11 11 : 12 : 29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Bu gerçekten de Servis Masasına bildirilmesi gereken bir hata gibi görünüyor.
 
Fernando Carreiro :
Bir takipte, OP'nin kaynağında bir hata olmadığından emin olmak için kendi kodumu yeniden yarattım ve aşağıdaki Gösterge koduyla aynı etkiyi elde ettim ve ben de gerçekten OP ile aynı sonucu aldım:
#property strict
#property indicator_chart_window

int OnInit ()
{
   return ( INIT_SUCCEEDED );
}

int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[],
   const double &open[], const double &high[], const double &low[], const double &close[],
   const long &tick_volume[], const long &volume[], const int &spread[])
{
   static bool boolFirstTime = true ;
  
   if ( boolFirstTime )
   {
      boolFirstTime = false ;
       bool boolDeleteResult = ObjectDelete ( 0 , "Non-existing Object" );
       Print ( "Result of Deleteing non-existing Chart Object: " , boolDeleteResult );
   }
  
   return (rates_total);
}
Çıktı şu şekildeydi:
2016.12 . 11 11 : 12 : 29.999 TestObjectDelete (EURUSD.m,H4)  Result of Deleteing non-existing Chart Object: true
Bu gerçekten de Servis Masasına bildirilmesi gereken bir hata gibi görünüyor.
zaman ayırdığınız için teşekkürler :)
 
Farzin Sadeghi :
zaman ayırdığınız için teşekkürler :)
Servis Masasına bildirecek misiniz?
 
Fernando Carreiro :
Servis Masasına bildirecek misiniz?
evet yazacağım. Onayınızı bekliyordum. Teşekkürler.
 
Farzin Sadeghi :
evet yazacağım. Onayınızı bekliyordum. Teşekkürler.
Ben de sorunu pekiştirmek için bunu yapacağım!
Neden: