Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Hangi yapıyı kullandınız? "ObjectDelete()" işleviyle en son derlemede olası bir hata var gibi göründüğü için, "ObjectFind()" ile de sorunlar olabilir!
MT5: Derleme 1495 (09 Aralık 2016)
MT5: Derleme 1495 (09 Aralık 2016)
Kodunuzu yapı 1491'de çalıştırdım ve benzer sonuçlar aldım:
Kodunuzu yapı 1491'de çalıştırdım ve benzer sonuçlar aldım:
Bu bir hatadan ziyade anlamsal olabilir.
ObjectDelete'in amacı "belirtilen ada sahip nesneyi kaldırmaktır".
İşlevi çalıştırmanın sonunda, grafikte hala "Varolmayan Nesne" adlı bir nesne var mı? Hayır... peki bu başarı mı?
Başka bir açıdan bakıldığında, ObjectDelete "Varolmayan Nesne" adlı bir nesneyi kaldırdı mı? Hayır... peki bu başarısızlık mı?
Başarıyı sonuçla mı yoksa yapılan eylemle mi ölçüyorsunuz?
Belki de, işlev çalıştırıldıktan sonra adlandırılmış nesne grafikte kalırsa bir false beklenebilir. Aksi takdirde, bu bir başarıydı.
Belki dediğin doğrudur ama biz MQL4'ten MQL5'e geçerken aynı sonucu veya en azından referansın dönüş değerinde açıkça yazılmış bir sonucu görmeyi bekliyoruz.
Bu ilk sorunu geçerek ObjectMove işlevini test ettim ve yine DOĞRU sonuç alıyorum! bu, sizin açıklamanızın ötesine geçer, çünkü nesne sonunda mevcut değildir, bu yüzden doğru doğrudur.
ObjectMove ile mevcut olmayan bir nesnede false döndürmesi gerekir!
moveResult=ObjectMove(ChartID(),"eğilim çizgisi mevcut değil",1,zaman[4950],düşük[4980]);
Print(__LINE__,"-moveResult=",moveResult);
2016.12.11 17:22:39.367 Uzak Test-DeğişimTrendLine (EURUSD,H1) 44-moveResult=true
merhaba , MQL5'te bir gösterge yazıyorum, ancak ObejectDelete dize adı olarak ne yazarsam yazarsam true ! nesnesiz boş bir grafikte bile!
Nesne İşlevleri açıklamasını okuyun
Bu, belirtilen herhangi bir çizelgeyle ilgili grafik nesnelerle çalışmak için tasarlanmış işlevler grubudur.
Grafik nesnelerinin özelliklerini tanımlayan işlevler ile ObjectCreate() ve ObjectMove() işlemleri, çizelge boyunca nesneler oluşturmak ve taşımak için aslında grafiğe komutlar göndermek için kullanılır. Bu işlevler başarıyla yürütülürse, komut, grafik olaylarının ortak kuyruğuna dahil edilir. Grafik nesnelerinin özelliklerindeki görsel değişiklikler, grafik olaylarının kuyruğu işlenirken uygulanır.
Nesne İşlevleri açıklamasını okuyun
Bu, "Bu nesneyi sil" komutunun başarıyla kabul edildiği anlamına gelir. Komutunuzun sonucunu GetLastError() ile kontrol edebilirsiniz. Deneyin - hangi kod iade edildi?Kodu şu şekilde değiştirdim:
int ObjCount = ObjectsTotal(ChartID(),/*0=ana alt pencere*/0,/*all objectTypes*/-1);
ResetLastError();
bool deleteResult=ObjectDelete(ChartID(),"var olmayan nesne");
Print(__LINE__,"-",deleteResult," | ObjCount=",ObjCount," | LastError=",GetLastError());
işte sonuç:
2016.12.12 12:38:43.373 Far-TestObjectDelete (EURUSD,H1) 38-doğru | NesneSayısı=0 | SonHata=0
ERR_SUCCESS
0
İşlem başarıyla tamamlandı
bu nedenle, örneğin o nesneye erişemediğini öğrenmek için hata döndürmez. ancak MT4'te hatayı döndürür.
ERR_SUCCESS
0
İşlem başarıyla tamamlandı
bu nedenle, örneğin o nesneye erişemediğini öğrenmek için hata döndürmez. ancak MT4'te hatayı döndürür.
TAMAM. Öğrendiğim gibi MQL5'te bu işlemler asenkron olduğu için böyle bir durumda herhangi bir hata oluşturmuyoruz. Yani 2 seçeneğiniz var:
TAMAM. Öğrendiğime göre MQL5'te bu işlemler eşzamansız olduğu için böyle bir durumda herhangi bir hata oluşturmuyoruz. Yani 2 seçeneğiniz var:
TAMAM. Öğrendiğim gibi MQL5'te bu işlemler asenkron olduğu için böyle bir durumda herhangi bir hata oluşturmuyoruz. Yani 2 seçeneğiniz var:
Bu durumda nasıl false döndürebilir?
ObjectDelete() belgeleri diyor ki :
Geri dönüş değeri
Kaldırma başarılıysa true , aksi takdirde false döndürür.
Belgeler daha net olmalı, "komut kabul edilirse doğru" demiyor.
Bir nesnenin silindiğinden emin olmak istiyorsak, silme komutundan sonra var olup olmadığını kontrol etmemiz gerekir, bu anlamsızdır.
Bu durumda nasıl false döndürebilir?
ObjectDelete() belgeleri diyor ki :
Belgeler daha net olmalı, "komut kabul edilirse doğru" demiyor.
Bu şekilde düzeltilecek
Geri dönüş değeri
Komut , grafik olaylarının ortak kuyruğuna yerleştirilirse true, aksi takdirde false döndürür.