Optimizasyon sonuçları, üzerlerindeki tekli testlerden farklıdır - sayfa 6

 

Bakıyorum burada test sırasında yayılma sorununa bir kez daha değiniliyor. Son zamanlarda, az çok ciddi görünen (gerçek ticaret açısından) ve buna bağlı olarak kapsamlı test gerektiren bir sisteme geldim. Ve ben de bu konuyla ilgileniyordum. Sonuç olarak, çevrimdışı testler için gerekli yayılmayı ayarlayan basit bir komut dosyası yazdım.

Prensip iyi bilinir, Ask symbol.sel dosyasına yeniden yazılır. Yani, onu çevrimdışı terminaldeki geçmiş klasöründen uzmanlar/dosyalar klasörüne kopyalamanız, komut dosyasını çalıştırmanız, ardından terminali kapatmanız, symbol.sel'i geri kopyalamanız ve terminali yeniden başlatmanız gerekir .

Not: Komut dosyasını değiştirdim, küçük bir hata oluştu, biri aniden SetSpread_1 değil de SetSpread almayı başardıysa, yeniden indirmeniz gerekir.

Dosyalar:
 
Aynı sorun. Optimizasyon ile, tekli çalıştırma-tekrar kontrollerle radikal olarak farklı bazı sonuçlar vardır. Teşekkürler Mathemat nereye kazılacağını önerdi.

matematik :
Test ederken nesnelere dikkat etmelisiniz. Onları hiç kullanmamak daha iyidir.

Yaşananları ve nasıl çözüldüğünü paylaşacağım belki birilerinin işine yarar. Genel olarak, trend çizgilerini kullanarak kendi göstergemi yazdım. Uzman Danışman için gösterge, kırık trend çizgisinin numarasını terminalin global değişkenine iletti. Bunun gibi:

 GlobalVariableSet ( "GV_name" , number);

ve EA'da değeri aldı

 int dc = GlobalVariableGet ( "GV_name" );

Görselleştirici ve tekli testlerde her şey yolundaydı. Onlar. Kodun daha küçük olması için "ekstra" bir değişken bildirmekten tasarruf etmeye karar verdim. Kodu aşağıdaki gibi düzelttikten sonra hem optimizasyonda hem de tekli çalıştırmalarda her şey AYNI sonuçlarla çalışmaya başladı.

 string GlobVar = "GV_name" ;   // объявил переменную в индикаторе на глобальном уровне программы

int start(){
   GlobalVariableSet (GlobVar, number);
}
string GlobVar;   // объявил переменную в советнике на глобальном уровне программы
int dc;

int start(){
  dc = GlobalVariableGet (GlobVar);
}

O. göstergede ve EA'da global değişkenleri bildirmek, her şeyin doğru çalışmasını sağladı.

 

İyi akşamlar meslektaşlarım.

Bu konuyu canlandırmaya karar verdim çünkü. benzer bir sorunla karşı karşıya kaldı.

Expert Advisor, grafik nesneleri kullanmaz. Özel bir forma ayarladım, her yerde aynı. Yine de tek testler, optimizasyon sonuçlarından çok farklıdır. Üstelik farklı bilgisayarlarda tek tek testler yaptım, birebir çıkıyor , karbon kopya gibi ama optimizasyon sonuçlarıyla kesinlikle örtüşmüyor.

Belki birisi bir çözüm buldu?

 
Andrey Kaunov :

İyi akşamlar meslektaşlarım.

Bu konuyu canlandırmaya karar verdim çünkü. benzer bir sorunla karşı karşıya kaldı.

Expert Advisor, grafik nesneleri kullanmaz. Özel bir forma ayarladım, her yerde aynı. Yine de tek testler, optimizasyon sonuçlarından çok farklıdır. Üstelik farklı bilgisayarlarda tek tek testler yaptım, birebir çıkıyor , karbon kopya gibi ama optimizasyon sonuçlarıyla kesinlikle örtüşmüyor.

Belki birisi bir çözüm buldu?

Neden eşleşmeliler? Yalnızca parametrelerin eksiksiz bir listesi ve en iyi seçeneğin seçimi. Ama pahalı bir kaynaktır. Bu nedenle genetik algoritmalar. Ve esasen bu şekilde inşa edilirler, optimize edilmiş olanlardan rastgele bir parametre seti seçimi ve ardından en iyi temizlemeyi seçme ve ardından daha ayrıntılı bir arama. Örneğin 6 parametre. En iyi çözümü hayal edin, 6 boyutlu uzaydaki en yüksek yoğunluk gibi. Ve birçok sızdırmazlık noktası olabilir. İyi bir algoritma, az sayıda sıkıştırma ve yumuşak olanlar ile 6 boyutlu hacimsel perdeler bile verir ve optimizasyon onları bulacaktır ve algoritma keskin sıkıştırmalar veriyorsa, sonuçlar rastgele olabilir. onlar. optimizasyon mühürler bulacaktır, ancak her zaman aynı parametre seti (aynı modeller) olmayacaktır.

 

Valery, cevap vermek yerine alıntı yapacağım, yapabilirsin ...

eugene-last :

Hm... Bence pek çoğu sorunun özünü anlamayı reddediyor. Ya da bilerek ayrılmak

Optimizasyon nedir ve tek bir test nedir? Cevap: optimizasyon birkaç tek testtir.
Ne anlama geliyor? Cevap: Bu, TEORİK OLARAK, optimizasyon geçişinin aynı olduğu ve tek bir testle aynı sonuçla bittiği anlamına gelir.

Eh, pratikte durumun böyle olmadığı ortaya çıkıyor. Ve danışman (bu arada, bir özdeyiş değil, aksi takdirde burada birinin çok gergin olduğunu görüyorum) tek bir test tam olarak aynı sonucu gösterdiğinden ortalığı karıştırmaz. Peki optimizasyondaki bu tek test neden farklı bir sonuç veriyor?!?!?!?!!!?!?!

 
Andrey Kaunov :

İyi akşamlar meslektaşlarım.

Bu konuyu canlandırmaya karar verdim çünkü. benzer bir sorunla karşı karşıya kaldı.

Expert Advisor, grafik nesneleri kullanmaz. Özel bir forma ayarladım, her yerde aynı. Yine de tek testler optimizasyon sonuçlarından çok farklıdır. Üstelik farklı bilgisayarlarda tek tek testler yaptım, birebir çıkıyor , karbon kopya gibi ama optimizasyon sonuçlarıyla kesinlikle örtüşmüyor.

Belki birisi bir çözüm buldu?

1. MQL4'te daha önce - başlatılmamış değişkenler 0'a eşit olmasına rağmen, tüm değişkenlerin başlatıldığını kontrol edin, şimdi bilmiyorum, bu arada, bu göstergeler için de geçerlidir

2. dinamik diziler kullanıyorsanız - ArrayResize() sonucunu kontrol etmeniz gerekir - Buna girdim, 4-5 gösterge ile EA yaptım, bir göstergenin tüm belleği yediği ortaya çıktı ve EA'da benim ArrayResize( ) her zaman istenen dizi boyutunu tahsis etmedi - mevcut olmayan işe yarayan süre boyunca. Yanılmıyorsam, MQL4 , MQL programları için yaklaşık 3 GB belleğe sahipken, terminal 32 bit

 
Andrey Kaunov :

Valery, cevap vermek yerine alıntı yapacağım, yapabilirsin ...

Tam olarak bilmiyorum, bilmiyorum. Optimizasyon hala birkaç tek test değil, çoktur. bu yüzden hız uğruna, belki de giriş verileri farklı olabilir. Gerçeğin özüne ulaşmak için basit, problemli tekrarlanabilir kodlara ihtiyacımız var. O zaman belki geliştiriciler cevap verecektir.

 
Igor Makanu :

1. MQL4'te daha önce - başlatılmamış değişkenler 0'a eşit olmasına rağmen, tüm değişkenlerin başlatıldığını kontrol edin, şimdi bilmiyorum, bu arada, bu göstergeler için de geçerlidir

2. dinamik diziler kullanıyorsanız - ArrayResize() sonucunu kontrol etmeniz gerekir - Buna girdim, 4-5 gösterge için EA yaptım, bir göstergenin tüm belleği yediği ortaya çıktı ve EA'da ArrayResize( ) her zaman istenen dizi boyutunu tahsis etmedi - mevcut olmayan işe yarayan süre boyunca. Yanılmıyorsam, MQL4 , MQL programları için yaklaşık 3 GB belleğe sahipken, terminal 32 bit

Igor, bahşiş için teşekkürler. O yönde kazmaya çalışacağım.

Valeriy Yastremskiy :

Tam olarak bilmiyorum, bilmiyorum. Optimizasyon hala birkaç tek test değil, çoktur. bu yüzden hız uğruna, belki de giriş verileri farklı olabilir. Gerçeğin özüne ulaşmak için basit, problemli tekrarlanabilir kodlara ihtiyacımız var. O zaman belki geliştiriciler cevap verecektir.

Pekala, hiçbir şey farklı olmamalı, aksi takdirde optimizasyonun tüm amacı ortadan kalkar. Ve geliştiriciler 10 yıldır cevap vermedi ...

 
Andrey Kaunov :

Igor, bahşiş için teşekkürler. O yönde kazmaya çalışacağım.

Pekala, hiçbir şey farklı olmamalı, aksi takdirde optimizasyonun tüm amacı ortadan kalkar. Ve geliştiriciler 10 yıldır cevap vermedi ...

Gelişen sözler ve şikayetler anlaşılmaz. Yalnızca sorunu yeniden oluşturan anlaşılabilir kod)

 
Igor Makanu :

1. MQL4'te daha önce - başlatılmamış değişkenler 0'a eşit olmasına rağmen, tüm değişkenlerin başlatıldığını kontrol edin, şimdi bilmiyorum, bu arada, bu göstergeler için de geçerlidir

2. dinamik diziler kullanıyorsanız - ArrayResize() sonucunu kontrol etmeniz gerekir - Buna girdim, 4-5 gösterge ile EA yaptım, bir göstergenin tüm belleği yediği ortaya çıktı ve EA'da benim ArrayResize( ) her zaman istenen dizi boyutunu tahsis etmedi - mevcut olmayan işe yarayan süre boyunca. Yanılmıyorsam, MQL4 , MQL programları için yaklaşık 3 GB belleğe sahipken, terminal 32 bit

4'te sıfır, 5'te çöp. Geçen sefer, OnInit'in dışında başlatılan, ancak aynı zamanda çalışma sırasında değişen, yani. optimizasyon geçişleri sırasında

bir sonraki geçişte, orijinal değere düşmediler.

Neden: