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
Kontrol etmediğimi düşünüyorsun. Parti büyüklüğü ayrı bir fonksiyonda kontrol edilir
Burada sınırlara ihtiyaç yoktur, çünkü. Bir ticaret açarken Zarar Durdur ve Kâr Al sıfıra eşittir. RefreshRates(), partiyi hesaplarken verileri günceller. İletişim kontrolleri vb. tabi her girişin önünde değil ama her şeyin anlamı bu değil. OrderSend isteği göndermiş olsaydı, belirli bir hata olurdu: 130, 131, vb. Ama ben buna sahibim
Hiç açık sipariş göndermeye çalışmıyor. Son testte bile OnInit() işlevinden bir kontrol gecikmesi ayarladığımda
Belki. Ama zaten her şeyi kontrol ettim. Daha nereye kazacağımı bilmiyorum.
Parti normalleştirme fonksiyonunda partiyi maks/min değerini kontrol ettikten sonra yuvarlarsınız.
valla evet kullanıyorum
MathRound();
PS, çünkü hala giriş parametrelerinden kazmamız gerektiğini düşünüyorum. Bazen testi geçer. Her parametre için aptalca bir kontrol yapın.Artık doğrulayıcı test günlüklerinden bahsetmiyorum. Ancak en azından testi GEÇMEYEN parametreleri göndermek mümkün olabilir. Kodu düzeltmek için tutunacak hiçbir şey yok. Test parametrelerinin seçimindeki değişkenliğin sonsuz olabileceğini anlıyorum. int türünde bir değişken hem +50000 hem de -45000'e eşit olarak ayarlanabilir.Fakat bazı girdi parametrelerini aptalca bir değer aralığıyla aptalca sınırlayamam, farklı araçlar için farklılık gösterecektir.
Her durumda işlem lotunun geçerli olduğundan emin olmanız gerekir. Boyutlarının izin verilen aralığı için kontrol edildikten sonra kodunuzdaki partideki değişikliği size işaret etmem boşuna değildi.
Ve yapılması gereken tamamen aptal girdi parametrelerinin kontrolüdür.
Yani lotla ilgili bir problem yok. Maks/min için kontrol edilir. Yuvarlamadan önce adıma bölünür, ardından yuvarlanan tam sayı tekrar adımla çarpılır. Tamamen doğru bir parti elde ediyoruz.
_lot(0.568)/adım(0.01)=56.8
MathRound(56.8)=57
57*adım(0.01)=0.57
Ardından, açmak için yeterli boşluk olup olmadığı kontrol edilir. Doğrulayıcı parti üzerine yemin etmez. Görünüşe göre yanlış giriş parametreleri girdiği için alım satım fonksiyonlarını görmüyor. EA basitçe bunların belirli bir kombinasyonu ile ticaret yapmaz! Koşulsuz martinim yok ve her mumda açılan bir ızgaram yok. Mantıksal danışmanın belirli parametrelerle anlaşma yapmadığını doğrulayıcıya nasıl açıklayabiliriz.
Yani lotla ilgili bir problem yok. Maks/min için kontrol edilir. Yuvarlamadan önce adıma bölünür, ardından yuvarlanan tam sayı tekrar adımla çarpılır. Tamamen doğru bir parti elde ediyoruz.
_lot(0.568)/adım(0.01)=56.8
MathRound(56.8)=57
57*adım(0.01)=0.57
Ardından, açmak için yeterli boşluk olup olmadığı kontrol edilir. Doğrulayıcı parti üzerine yemin etmez. Görünüşe göre yanlış giriş parametreleri girdiği için alım satım fonksiyonlarını görmüyor. EA basitçe bunların belirli bir kombinasyonu ile ticaret yapmaz! Koşulsuz martinim yok ve her mumda açılan bir ızgaram yok. Mantıksal danışmanın belirli parametrelerle anlaşma yapmadığını doğrulayıcıya nasıl açıklayabiliriz.
Açıklama yapmayın, ancak EA'nın yanlış giriş parametrelerini düzelttiğinden emin olun. Tercihen, günlüğe geçersiz değerleri hakkında bir mesaj ve kabul edilebilir bir değere düzeltme ile.
Ve herhangi bir nedenle, gerçek hayatta kullanıcıyı yanlış parametre girmekten sorumlu kılmak istiyorsanız, parametreler yanlış olduğunda onun bilgilendirilmesi gerekir.
Ancak, test uzmanı için bunların da ayarlanması gerekir - böylece danışman işlem yapabilir.
EURUSD için bazı parametreler varsa ve örneğin Altın için tamamen farklı olanlar varsa düzeltilmesi gerektiği için. Şimdi, varsayılan olarak, ana çiftler için aşağı yukarı tolere edilebilirler, ancak altın için hiç çalışmazlar. Anlaşma olmayacak. Bunun parametreleri (anladığım kadarıyla) onları her enstrümana uyarlamak için var. Her şey bu kadar basit olsaydı, tüm parametreleri EA'ya koyardım ve harici olanlara hiçbir şey koymazdım.
Doğrulayıcının bir başka hatası, diğer zaman dilimlerini hiç görmemesidir. Onu atladım, ancak bir dereceye kadar algoritmanın zararına. EA'da, bir dizi gösterge, haftalık, D1, H4, vb. gibi diğer zaman dilimlerinden veri alır. M1'e. Ancak sayısız deneyden öğrendiğim gibi veriler sıfır geliyor. Ve bu konuda yapabileceğin hiçbir şey yok, sadece atla. Doğrulayıcıyı algoritmanın zararına uydurmak için EA'nın neden ince ayar yapılması gerekiyor? Tam tersi olması gerekmiyor mu, doğrulayıcı testlere uyarlanmalıdır. Ve sonra kesinlikle çalışan bir danışmanın testini geçmek bir tür sıkı çalışmaya dönüşür!
EURUSD için bazı parametreler varsa ve örneğin Altın için tamamen farklı olanlar varsa düzeltilmesi gerektiği için. Şimdi, varsayılan olarak, ana çiftler için aşağı yukarı tolere edilebilirler, ancak altın için hiç çalışmazlar. Anlaşma olmayacak. Bunun parametreleri (anladığım kadarıyla) onları her enstrümana uyarlamak için var. Her şey bu kadar basit olsaydı, tüm parametreleri EA'ya koyardım ve harici olanlara hiçbir şey koymazdım.
ayrıca OrderSend'den önce tam olarak 0'a bölme koydunuz - ve böyle bir hata oluştu. OrderSend'e ulaştığı, ancak açmadığı anlamına gelir. Yani lot/marj/limit/fiyat, bazıları dikkate alınmaz
Maxim, yukarıdakilerden herhangi biri dikkate alınmazsa, doğrulayıcı çok özel bir hata verir: 130 , 131, 134, 145, vb. Burada durum böyle değil!
PS İnanın bana, günün 4 günü doğrulama için yüzden fazla kez gönderdim ve birçok seçenek denedim.
Evet, 0'a bölme (dolayısıyla OrderSend ) hemen ulaşılır. Ve hata veriyor.
Ancak kodda 0'a bölmeden bir Uzman Danışmanı doğrulama için gönderirsem, belirtilen süre boyunca işlemlerin hiç açılmadığı parametreleri bir şekilde sihirli bir şekilde ayarlıyor ve hata veriyor. Bu, olanların benim versiyonum, ama görünüşe göre gerçeklerden uzak değil.