
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
Bu nüanslar göz önünde bulundurularak iCustom()'un doğru kullanımına ilişkin bir bağlantı var mı??? Sonra kontrol etmekten ve sorunun ne olduğunu aramaktan yoruldum.
MQL5'teki bir göstergeden Gösterge makalesine bakın:
Gösterge arabelleklerini başlatmam gerekir mi?
MQL5'teki diziler varsayılan olarak herhangi bir değerle başlatılmaz ve bu kesinlikle SetIndexBuffer() işlevi tarafından gösterge arabelleklerine atanan diziler için geçerlidir. Dizi bir gösterge arabelleğiyse, işlem sırasında boyutu OnCalculate() işleyicisindeki Rates_total parametresine bağlı olacaktır.
ArrayInitialize() işlevini kullanarak, örneğin OnCalculate() öğesinin başında bir kez, tüm gösterge arabelleklerini boş bir EMPTY_VALUE değeriyle başlatmak cazip gelebilir.
...
Sevgili Rosh - Bu makaleyi okudum, ancak OnCalculate çağrısının ikinci formunu kullandığım için uygulayamadım, çünkü sadece fiyat değil, her bir çubuğun zamanına ihtiyacım var.
Bunun nedeni, gösterge arabelleğinde gerçekten çöp görünmesidir. Ve arabelleği boş değerlerle başlatmak hiçbir şey vermez, çünkü test cihazında, yeni veriler göründüğünde, gösterge arabelleği otomatik olarak büyür ve başlangıçta gerçekten çöp vardır ve göstergedeki arabellek her birinde doldurulmazsa bar, sonra çöp orada kalır.
Danışmanım bir zamanlayıcı üzerinde çalışıyor - bazı nedenlerden dolayı OnTick() işlevinden çok daha hızlı. Evet, hafta sonları test edebilirsiniz.
Şimdi her gösterge arabelleğinde ne olduğunu bulmaya çalışıyorum. Zorluk, bir göstergenin diğerinin değerlerine göre hesaplanmasına neden olması gerçeğinde yatmaktadır.
Net bir noktayı vurgulamaya ve arabelleklerin boyutunu ayarlamaya çalışacağım. Test cihazının yanlış pozitiflerinin nedenini belirleyeceğim. Eh - test cihazında hata ayıklayıcı olmaması üzücü - aksi takdirde herkes onu bekliyor ve bekliyordu.
Danışmanım bir zamanlayıcı üzerinde çalışıyor - bazı nedenlerden dolayı OnTick() işlevinden çok daha hızlı. Evet, hafta sonları test edebilirsiniz.
MetaTrader 5'te aşağıdakileri gösteren Test Temelleri makalesi vardır:
Zamanlayıcı parametresinin çeşitli değerleri (Zamanlayıcı olayının periyodikliği) için test süresinin ölçümleri yapılmıştır. Elde edilen verilere dayanarak, T test süresinin Periyot değerine bağımlılığının bir grafiği oluşturulmuştur.

Zamanlayıcı EventSetTimer işlevi (zamanlayıcı) tarafından başlatıldığında zamanlayıcı parametresi ne kadar küçükse, OnTimer() işleyicisine yapılan çağrılar arasındaki sürenin (Periyot) o kadar kısa olduğu ve aynı diğeri altında test süresi T'nin daha uzun olduğu açıkça görülmektedir. koşullar.iCustom() içinde gerçek çöp görünüyorsa, sorun kesinlikle başlatmadadır.
Tamponu Empty_Value ile değil, sıfır ile başlatın. Her yeni çubuk göründüğünde, karşılık gelen arabellek hücresini sıfırlamayı unutmayın.
iCustom() içinde gerçek çöp görünüyorsa, sorun kesinlikle başlatmadadır.
Tamponu Empty_Value ile değil, sıfır ile başlatın. Her yeni çubuk göründüğünde, karşılık gelen arabellek hücresini sıfırlamayı unutmayın.
Evet yaptı. Her göstergede, her zaman önce değerleri sıfırladım - çöplerden kurtulmaya yardımcı oldu.
for(i=first;i<rates_total-1 && !IsStopped();i++)
{EnterBuffer[i]=0;
EditBuffer[i]=0;
ExitBuffer[i]=0;
....
}
Şimdi dakika grafiğine bakıyorum. Saatte, her şey zaten bir saat gibi çalışıyor))) Ve bir dakika içinde, danışmanın çalışmaları hakkında hala sorularım var.
Beklendiği gibi - başlatma eksikliği. FB göstergesinde
İlk olarak, OnCalculate işlevinin başında dizi başlatma eklemeniz gerekir.
Çünkü sahip olduğunuz başlatma her zaman çalışmıyor
İkinci olarak, ana hesaplama döngüsünde, en başta, dizilerin sıfır öğelerinin başlatılmasını ekleyin (çünkü çizelgeye yeni bir çubuk eklendiğinde, gösterge dizileri otomatik olarak artar ve bu yeni öğeler hiçbir şekilde başlatılmaz, ne de açıkça çünkü prev_calculated>0 veya dolaylı olarak )
Ayrıca TBalanceSlopeCriterion sınıfındaki CustomOptimization.mqh dosyasına bir yıkıcı eklenmelidir (bu sonucu etkilemez ancak test sırasında bellek sızıntısına neden olur)
Ben de test cihazıyla bir mucize yaşadım.
Aynı ada sahip bir Uzman Danışmanı Test Etme: test cihazı nesneler çizer
...EA'yı farklı bir adla kaydetti ve derledi::nesneler görünmez
ama terminali başka bir diske taşıdığımı not ediyorum