Strateji Test Cihazında Optimizasyon - sayfa 16

 
Renat :

En son sürümlerde, görev başlangıcında sistem ek yüklerinden tamamen kurtulduk ve bunları neredeyse 2000 ms'den sıfıra indirdik.

İşte joo'nun önerdiği hesaplama görevini çalıştırmanın sonuçları:

Ayarlar (tarihler, grafik geçmişi kullanılmayacak şekilde özel olarak ayarlanır):

Yinelenen parametreler:

Kullanılan ajanlar (4 yerel ajan):

Optimizasyon sonuçları:

Optimizasyon sadece 25 saniye sürdü, 18.432 geçiş yapıldı:

Ticaret stratejisi test cihazını optimize etme eski görevine geri dönüyoruz.

425 yapısı için genel planda yapılan iyileştirmeler şunlarla sonuçlandı:

  • geçişlere hazırlanırken sistem yükünü azaltmak
  • ayarı basitleştiren simülasyon tipinin seçiminde açık bir mod "matematik hesaplamaları" eklenmesi

Aynı donanımda (4 yerel aracı) sonraki sonuçlar ve yapı 425'teki temiz önbellekler:

Tester	optimization passed in 0 minutes 07 seconds
Tester	genetic optimization finished on pass 19456 (of 100000020000001)
Tester	result cache was used 10124 times
Tester	genetics is over

Başlangıçta ortaya çıkan soruyla karşılaştırıldığında (genel yük geçiş başına 2 saniyeydi), sorunu başarıyla çözdük. Aynı görev 25 saniye yerine 7 saniye olarak kabul edildi.

Görev paketleme, sistemik genel giderlerle mücadelenin temeli haline geldi. Şimdi, her aracı için işlem hızı ölçülür ve hesaplamalar için 1'den 64'e kadar bir görev paketi verilir. Sonuç olarak, test hazırlama ve sonuç alma süresi orantılı olarak azalır. Hızlı ajanlar, yavaş ajanlardan daha fazla görev ve daha büyük gruplar halinde alır. Bu, yararlı hesaplamaların zamanının test hazırlama ve sonuçları gönderme zamanıyla karşılaştırılabilir olduğu hızlı hesaplama problemleri için özellikle büyük bir etki sağlar.

Temsilci hizmetini optimize etme çalışmaları henüz bitmedi. MQL5 Cloud Network'te uzak aracıların verimli çalışması için iletişim sağlama maliyetinin düşürülmesi ana konudur.

 

Anlamama yardım et!

Aşağıdaki kod blokları bir demo hesabındaki terminalde sorunsuz çalışır, ancak test edildiğinde 4109 hata mesajı verirler.

 if (! ChartGetDouble ( 0 , CHART_PRICE_MAX , 0 ,price_max))
 {
   printf ( __FUNCTION__ , ": Не получены данные по максимальной цене. Ошибка: %g." , GetLastError ());
 }

Aynı durum ile oluşur

 if (! ChartGetDouble ( 0 , CHART_PRICE_MIN , 0 ,price_min))
 {
   printf ( __FUNCTION__ , ": Не получены данные по минимальной цене. Ошибка: %g." , GetLastError ());
 }
 
slyusar :

Anlamama yardım et!

Aşağıdaki kod blokları, bir demo hesabındaki terminalde sorunsuz çalışır, ancak test edildiğinde 4109 hata mesajı verirler.

Aynı durum ile oluşur

Test sırasında, çizelgeler ve grafik nesneler modellenmez, çünkü bu, test hızını katastrofik bir şekilde azaltır.
 
Renat :
Test sırasında, çizelgeler ve grafik nesneler simüle edilmez, çünkü bu, test hızını katastrofik bir şekilde azaltır.
Anladım, teşekkürler. Bu durumdan kurtulmanın bir yolu var mı?
 
Renat :
Test sırasında, çizelgeler ve grafik nesneler simüle edilmez, çünkü bu, test hızını katastrofik bir şekilde azaltır.
Gerçekten grafik içermeyen böyle bir simülasyonun sadece "görselleştirme" olmadan modda olacağını umuyorum.
 
sergeev :
Gerçekten grafik içermeyen böyle bir simülasyonun sadece "görselleştirme" olmadan modda olacağını umuyorum.
Tamamen destekliyorum, grafikler bazen çok gerekli...
 
Renat :

Ticaret stratejisi test cihazını optimize etme eski görevine geri dönüyoruz.

425 yapısı için genel planda yapılan iyileştirmeler şunlarla sonuçlandı:

  • geçişlere hazırlanırken sistem yükünü azaltmak
  • ayarı basitleştiren simülasyon tipinin seçiminde açık bir mod "matematik hesaplamaları" eklenmesi

Aynı donanımda (4 yerel aracı) sonraki sonuçlar ve yapı 425'teki temiz önbellekler:

Başlangıçta ortaya çıkan soruyla karşılaştırıldığında (genel yük geçiş başına 2 saniyeydi), sorunu başarıyla çözdük. Aynı görev 25 saniye yerine 7 saniye olarak kabul edildi.

Görev paketleme, sistemik genel giderlerle mücadelenin temeli haline geldi. Şimdi, her aracı için işlem hızı ölçülür ve hesaplamalar için 1'den 64'e kadar bir görev paketi verilir. Sonuç olarak, test hazırlama ve sonuç alma süresi orantılı olarak azalır. Hızlı ajanlar, yavaş ajanlardan daha fazla görev ve daha büyük gruplar halinde alır. Bu, yararlı hesaplamaların zamanının test hazırlama ve sonuçları gönderme zamanıyla karşılaştırılabilir olduğu hızlı hesaplama problemleri için özellikle büyük bir etki sağlar.

Temsilci hizmetini optimize etme çalışmaları henüz bitmedi. MQL5 Cloud Network'te uzak aracıların verimli çalışması için iletişim sağlama maliyetinin düşürülmesi ana konudur.

İyileştirmeye yönelik çok ciddi değişiklikler - teşekkür ederim.

64 parametre limiti ne olacak? En azından benim için optimize edicinin tam kullanımını engelleyen tek faktör bu. Ve her türlü sıkıntıyı nasıl unutmak ve "gerçek" için hemen yazmak istediğinizi, böylece kodda değişiklik yapmadan test cihazında optimize edebilirsiniz.

 
Test görselleştiricisini başlattıktan sonra parametrelerle ilgileneceğiz.
 
joo :

İyileştirmeye yönelik çok ciddi değişiklikler - teşekkür ederim.

64 parametre limiti ne olacak? En azından benim için optimize edicinin tam kullanımını engelleyen tek faktör bu. Ve her türlü sıkıntıyı nasıl unutmak ve "gerçek" için hemen yazmak istediğinizi, böylece kodda değişiklik yapmadan test cihazında optimize edebilirsiniz.

Desteklerim.
Renat :
Test görselleştiricisini başlattıktan sonra parametrelerle ilgileneceğiz.
Teşekkür ederim! Bekleyecek.
 
Renat :

Ticaret stratejisi test cihazını optimize etme eski görevine geri dönüyoruz.

Aynı donanımda (4 yerel aracı) sonraki sonuçlar ve yapı 425'teki temiz önbellekler:

Başlangıçta ortaya çıkan soruyla karşılaştırıldığında (genel yük geçiş başına 2 saniyeydi), sorunu başarıyla çözdük. Aynı görev 25 saniye yerine 7 saniye olarak kabul edildi.

Yayına hazırlanmakta olan bir sonraki yapıda, matematiksel problemlerin kütle hesaplamalarını optimize etmek için büyük miktarda çalışma yaptık. Sistem giderleri sıfıra indirildi.

Şimdi aynı donanımda (Intel Q9400, 4 yerel çekirdek) aynı görev 1 saniye sürmek için ~ 18.000 iş alıyor (en son 7 saniyeydi ve ondan önce 25 saniyeydi):

2011.04.04 20:12:34    Tester    optimization passed in 0 minutes 01 seconds
2011.04.04 20:12:34    Tester    genetic optimization finished on pass 18432 (of 1000000002000000001)
2011.04.04 20:12:34    Tester    result cache was used 9718 times
2011.04.04 20:12:34    Tester    genetics is over


Karşılaştırma için, aynı matematiksel problemin 4 milyon geçişi işlemek için aynı donanımda ne kadar zaman harcadığını gösterebilirim (adım 0,005'e düşürüldüğünde, toplam işleme sayısı 4 milyon oldu, bu da tam bir işleme çalıştırmanıza izin verir):



2011.04.04 20:10:34    Tester    optimization passed in 0 minutes 46 seconds
2011.04.04 20:10:34    Tester    optimization finished, total passes 4004001


46 saniyede, 4 milyon görev tamamen hesaplanır, sonuçlarla birlikte 4 milyon satırın tümü optimizasyon sonuçları penceresinde gösterilir, tüm tablo anında herhangi bir alana göre sıralanır, optimizasyon grafiği 4 milyon değerin tümünü hızla çizer, 3D grafik bir aynı sonuçlardan üç boyutlu yüzey ve onu farklı açılarda büker: