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
Nesne amacına hizmet ettiyse, neden hafızada tutuyor?
Bellek sızıntısı olacak mı?
Özellikle OnDeinit'te bile silinmezse ortaya çıkacaktır.
Gerçekten artık gerekli değilse, hafızada saklayamazsınız. Ama daha sık olarak, bir nesne bir yinelemede yaratılır ve kullanılır... Ve sonra ikincisinde... Ve böyle devam eder. Ve sonra, belirli koşullar altında, aynı sınıftan başka bir nesne oluşturulur ve zaten bu sınıfın iki veya daha fazla nesnesiyle çalışırsınız, bunların her biri danışmanın ömrü boyunca gereklidir.
Özellikle OnDeinit'te bile silinmezse ortaya çıkacaktır.
Gerçekten artık gerekli değilse, hafızada saklayamazsınız. Ama daha sık olarak, bir nesne bir yinelemede yaratılır ve kullanılır... Ve sonra ikincisinde... Ve böyle devam eder. Ve sonra, belirli koşullar altında, aynı sınıftan başka bir nesne oluşturulur ve zaten bu sınıfın iki veya daha fazla nesnesiyle çalışırsınız, bunların her biri danışmanın ömrü boyunca gereklidir.
Yani, kontrollü bir bellek sızıntısının nesneleri yeniden oluşturmaktan daha iyi olduğunu mu söylemek istiyorsunuz?
Yani, kontrollü iblisler karşılığında zaman kazanmak mı?
Onları daha sonra kaybetmemek tehlikelidir.
uzmanın şablonuna göre yazdı https://www.mql5.com/en/forum/85652/page24#comment_13054686
oldukça esnek bir şablon, "2 tıklama" ile farklı "çörekler" eklemenize izin veriyor ve kodun okunabilir ve mantıklı olduğu ortaya çıkıyor, ancak... yine iyi bir sınıfın sahip olmaması gereken tartışılan paradigmaya geri döndü. statik yöntemler
teoride kulağa hoş geliyor, pratikte ... bence, hiçbir şey, en azından MQL görevleri için, IMHO
EA sınıfı şablona göre yazılmıştır, OnTick()'te bir genel yöntem başlatılır, ancak EA'yı başlatırken, açık sipariş olup olmadığını kontrol etmeniz ve bunları almanız gerekir, 2 yol görüyorum:
1. Aşağıdaki OnTick()'e, sihirle açık emirler bulduktan sonra, her zamanki gibi bir EA nesnesi yaratacak bir fonksiyon yazın, eğer bir sipariş bulamazsa, ana mantığa göre buna göre başlatırız - EA nesnesi yalnızca işlem saatlerinde oluşturulur ve gelecekte TS mantığını uygular
2. EA'da 1. maddeyi yapacak statik bir sınıf yazın
aslında, 1. ve 2. paragraflar aynıdır, tek farkla 1. paragrafta yalnızca Expert Advisor başlatıldığında (ilk çalıştırma) anlamlı olacak bir işlev ekleyeceğim, ancak IMHO, bu kodu karıştırıyor - bir işlev ve tüm yürütme programları için bir kez çağrılacaktır!
statik bir yöntem (madde 2) yaparsanız, IMHO her şey mantıklı ve okunabilir olacaktır, yöntem yalnızca başlatma için gereklidir ve yalnızca bir EA nesnesi oluşturmanız gereken anı belirler - yalnızca sihirli sayıyı iletmeniz gerekir bu yöntem, kısaca
bence, uygun olduğunda statik yöntemler kullanmayı kendinize yasaklayın ... eh, hafifçe söylemek gerekirse, bu doğru değil!
Statik yöntemler , işlevlerden yalnızca kapsam bakımından farklıdır.
Bu uygulama tehlikeli
EA çalışırken girişi değiştirirseniz, Giriş değişmez.
Buna göre, dolu
EA çalışırken girişi değiştirirseniz, Giriş değişmez.
Evet, bunun farkındayım ve TS'me göre, EA çalışırken giriş parametrelerini değiştirmek imkansız, çalışma süresi TS mantığından ayrı olarak hesaplanıyor
Burada sorum tamamen teorik, kodu karıştırmak istemiyorum, bu yüzden bir çarpışmadan sonra aracı geri yükleme, bir yere yapıştırma olasılığını arıyorum, bu arada şöyle görüyorum:
Bu mantığı kurucuya sokmak daha mantıklı.
Statik yöntemler , işlevlerden yalnızca kapsam bakımından farklıdır.
yanlış. ayrıca sınıfın genel olmayan üyelerine ve yöntemlerine erişim.
Burada terminolojik bir yanlış anlama var. "Kapsam" sadece yöntemi kimin gördüğüyle ilgili değildir. Ama ne görüyor?
Burada terminolojik bir yanlış anlama var.
Bu mantığı kurucuya sokmak daha mantıklı.
Evet, bu daha iyi bir çözüm! bir yöntemin daha az olması
sonra şöyle:
sonuçta kapsam ve erişim farklı kavramlardır ve bunları karıştırmamak daha iyidir