Hatalar, hatalar, sorular - sayfa 504

 
Vigor :

Kod iyileştiricinin nesne ağacının boyutu üzerinde sınırları var mı?

Nesne sayısını arttırırken derleme aşamasında "ağaç optimizasyon hatası" hatası alıyorum.

PS Derleme, hata ayıklama modunda gerçekleşir.

Hizmet masası biletine örnek bir kaynak kodu ekleyebilir misiniz? Doğrulamadan sonra kod silinecektir.

Büyük olasılıkla uzun işlevlerle ilgilidir, ancak kodu bize göndermeniz, sorunu çözebilmemiz ve hatayı düzeltebilmemiz için daha iyidir. Bu, birçok tüccara yardımcı olacaktır.

 
Valmars :

İlk olarak, test cihazına zorla geçmişi yüklemenin amacı nedir? Gerekli enstrümanlar için kod veya alım satım işlemlerinde talep olması durumunda, testçinin kendisi gerekli ve mevcut geçmişi sunucudan indirecektir. Kodunuz boş olduğundan, test cihazının, üzerinde testin gerçekleştirildiği sembol dışında diğer enstrümanlar için keneleri simüle etmesine gerek yoktur. Hikayesi testçi tarafından yüklendi. Ve geçmiş olmadığı için (test cihazında), o zaman 0 ile sonuçlanırsınız.

İkincisi, kod tüm semboller için geçmişe bir çağrı ile desteklense bile, tüm semboller için mevcut tüm geçmişin indirilmesinin başarılı olması, bir yerlerde bir başarısızlık olması muhtemel değildir. Test cihazı, terminalin tırnak tabanını kullandığından, gerekli geçmişi buraya yüklemeniz gerekir.
İşin gerçeği şu ki, bir test cihazı diğer enstrümanlar için keneleri simüle etmeye çalıştığında, günlük basitçe 0 M1 kayıtları içerir gibi mesajlarla dolmaya başlar, çünkü bu tarih için bir geçmiş yoktur ve günlüğün hacmi inanılmaz bir şekilde büyür. hacimler ve bu hataları önlemek için, geçmişin başlangıç tarihini bilmem gerekiyor ve istendiğinde, SeriesInfoInteger (symbol,0,SERIES_SERVER_FIRSTDATE) işlevi 0 döndürür
 

Amaç fonksiyonu Balance + min Drawdown seçildiğinde Sonuç sütunundaki değerlerin ne anlama geldiğini söyleyebilir misiniz?

 
tol64 :

Amaç fonksiyonu Balance + min Drawdown seçildiğinde Sonuç sütunundaki değerlerin ne anlama geldiğini söyleyebilir misiniz?

terminal yardımına bakarsanız, birçok soru kendiliğinden kaybolur, her şey orada yazılır

Optimizasyon kriteri

Optimizasyon kriteri, değeri test edilen girdi parametrelerinin kalitesini belirleyen belirli bir göstergedir. Optimizasyon kriterinin değeri ne kadar büyük olursa, test sonucu belirli bir parametre seti ile o kadar iyi tahmin edilir. Bu göstergenin seçimi, "Optimizasyon" alanının sağındaki "Ayarlar" sekmesinde gerçekleştirilir.

Optimizasyon kriteri sadece genetik algoritma için gereklidir.

Aşağıdaki optimizasyon kriterleri mevcuttur:

  • Maksimum bakiye — optimizasyon göstergesi maksimum bakiye değeridir;
  • Bakiye + maksimum karlılık - gösterge, denge ve karlılık ürününün maksimum değeridir;
  • Bakiye + maksimum kazanç beklentisi - gösterge, bakiyenin ve kazanma beklentisinin ürünüdür;
  • Bakiye + minimum düşüş — bu durumda, bakiye değerine ek olarak, düşüş seviyesi dikkate alınır: (%100 - Düşüş)*Bakiye;
  • Bakiye + maksimum geri kazanım faktörü - gösterge, geri kazanım faktörü ile dengenin ürünüdür;
  • Denge + maksimum Sharpe oranı — gösterge, terazinin ve Sharpe oranının ürünüdür;
  • Özel optimizasyon kriteri — bu parametre bir optimizasyon kriteri olarak seçildiğinde, Expert Advisor'daki OnTester() fonksiyonunun değeri dikkate alınacaktır. Bu seçenek, kullanıcının optimizasyon için herhangi bir özel metriği kullanmasına olanak tanır.


 
sergey1294 :

Teşekkür ederim. )) Nedense, Bakiye + minimum düşüş değil, Minimum düşüş kriterini düşünüyordum. ))

 
sergey1294 :
İşin gerçeği şu ki, bir test cihazı diğer enstrümanlar için keneleri simüle etmeye çalıştığında, günlük basitçe 0 M1 kayıtları içerir gibi mesajlarla dolmaya başlar, çünkü bu tarih için bir geçmiş yoktur ve günlüğün hacmi inanılmaz bir şekilde büyür. hacimler ve bu hataları önlemek için, geçmişin başlangıç tarihini bilmem gerekiyor ve istendiğinde, SeriesInfoInteger (symbol,0, SERIES_SERVER_FIRSTDATE ) işlevi 0 döndürür

Anladığım kadarıyla test eden kişi teste başlamadan önce bağlı olduğu hesap (sunucuya bağlantı yoksa son bağlanan) için bir pazar ortamı oluşturur, sunucu ile verilerin senkronizasyonunu kontrol eder (tekrar varsa eğer bağlantı), eksik alıntıları testin başlangıç tarihinden (bağlıysa) indirir, gerekli tüm semboller için bir test dizisi oluşturur ve ancak bundan sonra teste başlar. Ya gerekli geçmişi indiremezse (örneğin, sunucuda geçmiş olmaması veya sunucuyla iletişim eksikliği nedeniyle) ? Size dürüstçe anlatıyor. 'Hayır'da ve deneme yok.

Ardından, sunucudaki (test cihazında) geçmişin başlangıç tarihini almak istiyorsunuz. Bu özellik, sunucudan kaydedilebilmesine rağmen, test cihazının pazar ortamında yer almıyor gibi görünüyor. Bu bir hata mı? bence hayır. Gerçekten de, test başladıktan sonra, test cihazı artık ihtiyacınız olan teklifleri indirmek için sunucuya (terminal aracılığıyla) erişemez. Mevcut olan her şey, test sürecinin başlatma aşamasında test cihazı tarafından zaten yüklenmiştir ve test dizisi zaten oluşturulmuştur ve değiştirilemez. SeriesInfoInteger ( symbo l ,0 , SERIES_SERVER_FIRSTDATE) yerine, sizin durumunuzda SeriesInfoInteger ( symbol , 0 , SERIES_FIRSTDATE) kullanabileceğinizi düşünüyorum. test cihazında çalışması gerekir.

 
Renat :

Hizmet masası biletine örnek bir kaynak kodu ekleyebilir misiniz? Doğrulamadan sonra kod silinecektir.

Büyük olasılıkla uzun işlevlerle ilgilidir, ancak kodu bize göndermeniz, sorunu çözebilmemiz ve hatayı düzeltebilmemiz için daha iyidir. Bu, birçok tüccara yardımcı olacaktır.

Tamam, "kod oluşturma hatası" ve "ağaç optimizasyon hatası" ile 2 seçenek ekledim. onInit işlevi gerçekten uzundur (~1000 satırlık oluşturulmuş kod).

Bilet #217917

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Vigor :

Tamam, "kod oluşturma hatası" ve "ağaç optimizasyon hatası" ile 2 seçenek ekledim. onInit işlevi gerçekten uzundur (~1000 satırlık oluşturulmuş kod).

Bilet #217917

Teşekkürler, pazartesi kontrol edeceğiz.
 
Valmars :

Anladığım kadarıyla test eden kişi teste başlamadan önce bağlı olduğu hesap (sunucuya bağlantı yoksa son bağlanan) için bir pazar ortamı oluşturur, sunucu ile verilerin senkronizasyonunu kontrol eder (tekrar varsa eğer bağlantı), eksik alıntıları testin başlangıç tarihinden (bağlıysa) indirir, gerekli tüm semboller için bir test dizisi oluşturur ve ancak bundan sonra teste başlar. Ya gerekli geçmişi indiremezse (örneğin, sunucuda geçmiş olmaması veya sunucuyla iletişim eksikliği nedeniyle) ? Size dürüstçe anlatıyor. 'Hayır'da ve deneme yok.

Ardından, sunucudaki (test cihazında) geçmişin başlangıç tarihini almak istiyorsunuz. Bu özellik, sunucudan kaydedilebilmesine rağmen, test cihazının pazar ortamında yer almıyor gibi görünüyor. Bu bir hata mı? bence hayır. Gerçekten de, test başladıktan sonra, test cihazı artık ihtiyacınız olan teklifleri indirmek için sunucuya (terminal aracılığıyla) erişemez. Mevcut olan her şey, test sürecinin başlatma aşamasında test cihazı tarafından zaten yüklenmiştir ve test dizisi zaten oluşturulmuştur ve değiştirilemez. SeriesInfoInteger ( symbo l ,0 , SERIES_SERVER_FIRSTDATE) yerine, sizin durumunuzda SeriesInfoInteger ( symbol , 0 , SERIES_FIRSTDATE) kullanabileceğinizi düşünüyorum. test cihazında çalışması gerekir.


Aynı fonksiyon sıfır döndürür. SERIES_TERMINAL_FIRSTDATE kimliğini de denedim. Sonuç SeriesInfoInteger test cihazında bir işlev çalışmıyor. Yalnızca testin çalıştırıldığı cihaz için çalışır. Belki birisi, "Tüm tarihçe" aralığını seçerken, geçmişin farklı bir başlangıç tarihine sahip enstrümanlar üzerinde nasıl test yapılacağına dair bazı düşüncelere sahiptir.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
 
Yine terminal zamanı GMT+0'a sıçradı ama GMT+1 olmalı, zaten tartışılmıştı. Doğru lütfen.