"MQL5 Cloud Network ile Hesaplamaları Hızlandırın" makalesi için tartışma

 

Yeni makale MQL5 Cloud Network ile Hesaplamaları Hızlandırın yayınlandı:

Ana bilgisayarınızda kaç çekirdek var? Bir alım satım stratejisini optimize etmek için kaç bilgisayar kullanabilirsiniz? Burada, bir fare tıklamasıyla dünya çapında bilgi işlem gücünü alarak hesaplamaları hızlandırmak için MQL5 Cloud Network’ün nasıl kullanılacağını gösteriyoruz. "Vakit nakittir" ifadesi her geçen yıl daha da güncel hale geliyor ve önemli hesaplamalar için onlarca saat hatta günlerce beklemeyi göze alamayız.

Yukarıda belirtilen amaçlar için, Windows 7 64 bit ve MetaTrader 5 build 1075 İşletim Sistemine sahip Intel Core i7 (8 çekirdek, 3.07 GHz) ve 12 GB belleğe sahip bir bilgisayar kullanıyoruz.

Standart teslimat paketindeki Uzman Danışman Moving Average.mq5 aşağıdaki ayarlarla test edilir:

  • Sembol EURUSD H1
  • Test aralığı: 01.01.2011 ile 01.10.2011 arası
  • Fiyat simülasyon modu: 1 dakikalık OHLC (1 dakikalık çubuklarda Açılış, Yüksek, Düşük ve Kapanış fiyatları kullanılır)
  • Optimizasyon türü: yavaş tamamlama algoritması, toplam 14.040 geçiş
Optimize edilmiş parametreler:

Optimizasyon parametreleri


Yazar: MetaQuotes

 

Peki ya genetik? Orada, "100 kat" ulaşılamaz. 20-30 kat ya da daha az olsa bile.

 
notused:

Peki ya genetik? Orada, "100 kat" ulaşılamaz. Eğer 20-30 kat ya da daha az ise.


https://www.mql5.com/ru/forum/4927/page114 

stringo 2012.02.02 15:50


Genetik algoritmanın hesaplanmasında, bir sonraki neslin tamamı (64 ila 256 hesaplama işi) buluta verilir

Tam aramada, her bir bulut sunucusuna 512 işlik bir yığın verilir. Ardından, belirli sayıda iş tamamlandığında, iş sayısının iki katı iş eklenir (örneğin, bir bulut sunucusu 5 işin tamamlandığını bildirirse, hemen 10 iş ekler).

Dolayısıyla GA'daki hızlanma 20-30 değil, en az 64 kat, en fazla 256 kattır.

 
Urain:
Dolayısıyla GA'nın hızlandırması 20-30 değil, en az 64 kat, en fazla 256 kattır.
GA, benzer sayıda parametrenin numaralandırılmasından daha hızlı olamaz. GA'nın darboğazı en yavaş ajanı beklemektir. Ve bu (ortalama olarak) 10240 / 256 ila 10240 / 64 kez (stringo verilerine göre 40 ila 160 kez) gerçekleşir. Ve hızı belirleyen en yavaş ajandır. Ayrıca, makalede Rosh'un 4 kendi yerel ajanı vardı -> GA için hızlanma sınırı 256 / 4 = 64 kat olabilir (bu karşılaştırılabilir değerler hakkında konuşmak içindir), ancak hayatta çok daha azdır.
 
notused:
GA, benzer sayıda parametreyi sıralamaktan daha hızlı olamaz. GA'nın darboğazı en yavaş ajanı beklemektir. Ve bu (ortalama olarak) 10240 / 256 ila 10240 / 64 kez (stringo verilerine göre 40 ila 160 kez) gerçekleşir. Ve hızı belirleyen en yavaş ajandır. Ayrıca, makalede Rosh'un 4 kendi yerel ajanı vardı -> GA için hızlanma sınırı 256 / 4 = 64 kat olabilir (bu karşılaştırılabilir değerler hakkında konuşmak içindir), ancak hayatta çok daha azdır.

Birçok kişinin fark ettiği gibi, bulut sunucuları yavaş ajanları otomatik olarak algılar ve "yavaşlatılmış" geçişleri diğer ajanlara yeniden dağıtır (hem tam numaralandırmada hem de genetikte).

Buna ek olarak, PR>100 olan ajanlar genetikte kabul edilir, bu da yavaş ajan kullanmanın sonuçlarını ciddi şekilde azaltır.

 
Rosh ile aynı şeyi yapacağım, ancak daha fazla parametre sınırı belirleyeceğim, böylece genetik olacak. Her şey biter bitmez geri bildirimde bulunacağım.
 

Yani, test koşulları - 4 Intel Core i5-2500 @ 3.3 GHz, 4GB RAM, Windows XP 64 bit, terminal x64 bild 581 (PR = 160-180). Test sırasında bir tarayıcı çalıştırılıyor ve bir film izleniyordu. Makaledeki ile aynı koşullar kullanıldı (Hareketli Avarege Uzman Danışmanı, H1, OHLC'de 1 m. + genetik). Ayarlar:Ayarlar

Yerel çekirdekler üzerinde test edin:

Yerel çekirdekler

Bulut üzerinde test edin:

Bulut

Hiç tereddüt etmeden Cloud'un 8,7 kat daha hızlı saydığını görüyoruz. Hepsi bu kadar. Ama aslında ağ daha da yavaş çünkü hesaplama önbelleği kullanıldı.

Yani, yerel çekirdekler 30 dakika içinde 8704 - 3666 = 5038 geçiş gerçekleştirdi. 2 saniye = 1802 saniye -> geçiş başına ortalama 0,3577 saniye.

Bulut, 8704 - 4455 = 4249 geçişi 3 dakika içinde gerçekleştirdi. 28 sn = 208 saniye -> Cloud'dan bir geçiş için bekleme süresi ortalama 0,049 saniyedir.

Toplamda, Cloud hesaplamayı 0,3577 / 0,049 = 7,3 kat (!) hızlandırdı.

Rakamın muhtemelen 20 kata ulaşacağı yönündeki ilk varsayımlarımın biraz iyimser olduğu ortaya çıktı. Ve yüzlercesinden bile bahsedemeyiz.

Evet, güçlü çekirdekler kullandım, yani biraz hile yaptım. Ancak gerçek şu ki, genetik ile 4249 geçiş bile ağ 208 saniyede ve tam arama ile 14040 geçiş 164 saniyede yapıldı (bir geçiş için bekleme süresi 0.0117 saniyedir). Toplamda, Bulut üzerinde bir geçişin genetik testi ortalama olarak kaba kuvvetten (söz konusu EA örneğinde) 0,049 / 0,0177 = 2,8 kat daha yavaştır.

 

Ağı eleştirmiyorum - kesinlikle Cloud Network, ticaret yazılımı var olduğundan beri yapılan en iyi şey. Ve çok gerekli bir şey (çok kullanılmasa da, ama bu zamanla gelecek).

Reklam sloganlarında daha fazla doğruluk istiyorum. Tamam, geçmişte kaldı

 

Bir geçiş süresi bir saniyeden az olan testler yapıyorsanız, genellikle "hızlı" bir görevin süresinden daha büyük veya eşit olan ağ gecikmesini hesaba katmanız gerekir. Görevleri gruplayarak ağ gecikmesi üzerindeki sistem ek yüklerinden kurtulmak için çok çaba sarf ettik. Ve bu sorun tamamen ortadan kaldırılamasa da başarılı olduk.

Örneğiniz, ağ gecikmesinden daha az olduğu bilinen bir geçiş süresiyle kısa vadeli bir mücadelede yarıştığınızı tam olarak gösteriyor. Claud'un gücünü gerçekten değerlendirmek için, yürütme süresi bir saniyeden az olan görevlerden uzaklaşmanız ve daha maliyetli olanlara yönelmeniz gerekir.

Genetiği benzer bir görevle ancak i7 işlemcide 10 saniyeden daha uzun bir geçiş süresiyle çalıştırdım. Bir saat içinde tamamlandığında sonuçları göndereceğim.

 

3 dakika 28 saniye boyunca 28 saniyelik şebeke kullanımı sırasında 2 ya da 3 sent ücretlendirildim (terminalde - 3, sitede - 2 ve 3 dondurulmuş). Bırakın 3 olsun, hatta basitlik olsun diye, genetik için ağı kullanmak bir dakika için 1 sente mal oluyor. Toplamda bir saat 60 sent, 24 saat = 14,4 dolar. Bu bana çok pahalı geliyor. Tüketiciler için cazip hale getirmek için fiyatlar en az üç kat düşürülmelidir (birçok kişi EA'ları test ediyor, ancak herkes Cloud için günde yaklaşık 15 $ ödeyemiyor / ödemek istemiyor ve 5 $ veya daha az olsaydı - daha fazla insan istekli olurdu).

Ayrıca, herhangi bir EA'yı optimize etmenin maliyetini önceden nasıl tahmin edeceğimi kendim buldum (tabii ki ortalama olarak). Genetik için algoritma (benzer şekilde kaba kuvvet için):

1) Yerel çekirdeklerde Hareketli Ortalama genetiği çalıştırın (+ uzak aracılarınızı da bağlayabilirsiniz); sonunda, bir geçiş için bekleme süresini hesaplayın -> T1

2) T1 / 0,049 = T2 - optimizasyonun Buluttaki genetik tarafından kaç kez hızlandırıldığını hesaplayın.

3) Gerekli EA'nın yerel çekirdeklerinde optimizasyonu çalıştırın (+ uzak aracılarınızı da bağlayabilirsiniz; adım 1'deki gibi yapılandırılmalıdır) ve örneğin 100 geçiş için bekleyin. Bir geçişin süresini hesaplayın (günlük üzerinden - ilk ve son kayıtları bulun) -> T3

4) 10240 * T3 / T2 = T4 -> Bulut cinsinden tahmini test süresi.

5) T4 / 60 = sent cinsinden test maliyeti.

(Çekirdeklerinizi de hesaba katabilirsiniz, bunun için T2' = T2 + 1 kullanıyoruz).

Bunların hepsi Moving Avarage optimizasyonuna dayalı bir tahmindir. Belki bir ya da iki ay içinde daha güçlü çekirdekler devreye girecek ve rakamlarla birlikte maliyet de değişecektir.

Sanırım düşünce tarzım açık

 
Renat:

Örneğiniz, ağ gecikmesinden daha az olduğu bilinen bir geçiş süresiyle kısa vadeli bir mücadelede yarıştığınızı tamamen gösteriyor.

Evet, bundan şüphelenmiştim ama dikkate almamıştım. Sonuçlarınızı bekleyelim.

Ve önceki yazım, paragraf. 2. paragrafın testlerinizden sonra düzeltilmesi gerekecek.