Biraz şaşırdım :) Retorik bir soru DEĞİL paylaşmaya ve sormaya karar verdim. - sayfa 14

 
Renat :

Optimize edici tam olarak "doğrusal olarak ölçeklendirilmiş bir test cihazı" değildir, ancak büyük ölçekli tekrarlayan hesaplamalarda etkili bir şekilde çalışan kendi optimizasyon yöntemlerine sahiptir.

Şu anda kütle hesaplamalarını hızlandırmakla meşgulüz. İşte geçmiş sonuçlara bir bağlantı ve daha hızlı hesaplamalara sahip yeni bir sürüm zaten hazır.

Kabul edildi, tam olarak "doğrusal olarak ölçeklendirilmiş bir test cihazı" değil. Açıkça optimizasyonlar yapıyorsunuz, bu çok iyi bir şey. Ancak, evrensel durum için çok yaygın bir durum için nasıl optimize edeceğinizi anlamıyorum:

Optimizasyon iki parametreye dayanır, bir parametre (100 değer aralığı) gösterge çağrıları için geçerli değildir, ikincisi (5 değer aralığı) geçerlidir.

Bu durumda, 500'den fazla seçeneği yinelerken, gösterge değerlerini 500 kez hesaplayacaksınız. Bu durumda, aslında, büyük miktarda tekrarlanan hesaplamalar üreteceksiniz. Çünkü ikinci değişkenin aralığı 500 değil, sadece 5'tir.

Bu sadece en basit örnek. Belki de optimize edici için test cihazının bu tür doğrusal ölçeklenebilirliğini nasıl aşacağınıza dair bazı fikirleriniz vardır.

PS Bu tür örneklerde, tekerlemelerinin hızdaki avantajı yüzdelerle değil, büyüklük sıralarıyla elde edilir. Ancak bu tekerlemeler evrensel değildir, bu nedenle karşılaştırma başlangıçta yanlıştır.

 
Academic :

Tamam - diyelim ki bulut bilgi işlem olmayan, ancak çok iş parçacıklı ve C++ ve MT4'ü (ve tüm alt sistemini) destekleyen ve ondan 100 kat daha hızlı ve yalnızca MT5'e göre 6 kat daha hızlı olan bir optimize edici var. kod, evet ... ve "çözer" sadece numaralandırma ve GA ile değil, aynı zamanda yaklaşık 50 seçenek daha. Ne kadar satın alırsın? 1000 dolara alır mısın? Neden bu kadar pahalı - evet, sadece siz ve diğer on kişi alıcıları uyandıracaksınız. :)

Optimize edici evrenselse ve bu özelliklere sahipse satın alırdım.
 
hrenfx :

Ancak, evrensel durum için çok yaygın bir durum için nasıl optimize edeceğinizi anlamıyorum:

Zaten temsil ettiğim bir şey (ama sonuna kadar değil). Optimize ediciyi çalıştırmadan önce, optimize edilmiş giriş parametrelerinin bağımlılığını analiz etmek gerekir (yukarıdaki örnekte iki değişken tamamen bağımsızdır). Ayrıca, optimizasyon ilk önce en küçük aralıktan en büyüğe bağımsız değişkenler üzerinde yapılmalıdır (her zaman bu kadar doğru değildir, çünkü aynı göstergelerin kaynak yoğunluğuna da bağlıdır. Bazen bir ışık göstergesini 5'ten 100 kez hesaplamak daha iyidir) kat ağır), sonuçları önbelleğe alıyor.

Bu tür bir optimizasyonun uygulanmasının çok karmaşık olduğu açıktır (özellikle bulut durumu için). Ancak uygulanırsa, en azından kesinlikle MQL5 Sihirbazında oluşturulan tüm Uzman Danışmanlar, büyüklük sıraları daha hızlı optimize edilecektir. Çünkü MQL5 Sihirbazı çok sayıda göstergenin birbiriyle birleşimidir (yani çok sayıda bağımsız giriş parametresi vardır). Başka bir şey de böyle bir faaliyetin karlı ticaret için bir anlam ifade etmemesi...

 

Çok büyük (milyonlarca ve on milyonlarca) örneklerde sonuçların sonradan getirilmesiyle önbelleğe alma, doğrudan hesaplamadan daha pahalıdır.

 
Renat :

Çok büyük (milyonlarca ve on milyonlarca) örneklerde sonuçların sonradan getirilmesiyle önbelleğe alma, doğrudan hesaplamadan daha pahalıdır.

Yukarıda açıklandığı gibi "akıllı" olması için ideal olarak evrensel bir optimize edici uygulamanın neredeyse imkansız olduğundan eminim. Tabii ki, iyileştirme için yer var, ancak her durumda mükemmel çalışmayacak.

Büyük örnekler (on milyonlarca), elbette önemli ölçüde abarttınız. Bunu önbelleğe almaya hiç gerek yok.

Sanırım hepiniz ne demek istediğimi çok iyi anlıyorsunuz. Ve çoğu anlıyor. Kimse bunun için eleştirmeyecek bile, aksi takdirde programcının eleştirmenleri görmezden gelmesi olacaktır. Çünkü yeterli insanlar bunu uygulamanın karmaşıklığını mükemmel bir şekilde anlıyor.

Önbelleğe almaya gelince, her şeyi aynı örneği kullanarak açıklayacağım:

Gösterge yeniden çizilmezse, test cihazındaki bir sonraki tek çalıştırmanın sonunda, tüm gösterge değerlerinin tam bir ara belleğine sahip olacaksınız. Sende zaten var. Ve bir sonraki geçiş aynı gösterge değerlerini kullanıyorsa (ikinci değişken değişmedi), yeniden hesaplanmasına gerek yoktur. Önceden hesaplanmış bir arabellekten değerler alabilirsiniz (ki zaten oradadır, önbelleğe almanıza gerek yoktur, sadece önceki çalıştırmadaki bellek tamamen serbest bırakılmamıştır).

 
hrenfx :

Gösterge yeniden çizilmezse, o zaman

bu "if", diğer tüm aramaları geçersiz kılar
 
Evet, tam da böyle akıllı bir evrensel optimize edici yazmanın imkansızlığı nedeniyle, evrensel olmayan sayı öğütücüler her zaman hız açısından kazanacaktır. Ve bunda iyi ya da kötü bir şey yok.
 
hrenfx :

Yukarıda açıklandığı gibi "akıllı" olması için ideal olarak evrensel bir optimize edici uygulamanın neredeyse imkansız olduğundan eminim. Tabii ki, iyileştirme için yer var, ancak her durumda mükemmel çalışmayacak.

Büyük örnekler (on milyonlarca), elbette önemli ölçüde abarttınız. Bunu önbelleğe almaya hiç gerek yok.

Örneğin, son 11 yıldaki EURUSD testi 50 milyondan fazla onay veriyor.

Bu, MA tipi basit bir tek arabellek göstergesi için 50 milyon durumun depolanması gerekeceği anlamına gelir (50 milyon * 8 bayt(çift) = 400 MB arabellek), ki bu çok fazladır. Daha karmaşık veya daha büyük bir şey kullanılırsa, aslında önbellek, çok çekirdekli ajanlardan bahsetmeden belleğe sığmaz.

Gösterge önbellekleri fikri üzerinde çalışıyorduk ve bir göstergenin sonraki değerini (ve ekonomik yöntemi kullanarak) hesaplamanın, önbellek oluşturmaktan çok daha hızlı ve daha az kaynak yoğun olduğu ortaya çıktı.

 
hrenfx :
Evet, tam da böyle akıllı bir evrensel optimize edici yazmanın imkansızlığı nedeniyle, evrensel olmayan sayı öğütücüler her zaman hız açısından kazanacaktır. Ve bunda iyi ya da kötü bir şey yok.

Hiçbir şey kazanmıyorlar.

Pazar ortamları, altyapıları, göstergeleri, analizleri yok. Ve bu, tek seferlik bir döngüden daha önemlidir (ve hatta sunulmamaktadır).

 
Renat :

Örneğin, son 11 yıldaki EURUSD testi 50 milyondan fazla onay veriyor.

Optimize ediciden bahsediyoruz, test cihazının bir dizi tek çalışması olarak değil. Optimize edici kavramı tamamen farklıdır. Orada, sonuçlardaki küçük hatalar nedeniyle önemli bir hız kazancı elde edilir. Optimize edicinin kene modellerine hiç ihtiyacı yoktur. Maksimum - açılış fiyatlarında. Optimize edici, çoğu zaman bir test cihazı değildir, tamamen farklı bir şeydir. Farklı bir yaklaşımınız var, aynı zamanda oldukça mantıklı.

Renat :

Hiçbir şey kazanmıyorlar.

Pazar ortamları, altyapıları, göstergeleri, analizleri yok. Ve bu, tek seferlik bir döngüden daha önemlidir (ve hatta sunulmamaktadır).

Hızla kazanırlar çünkü hiçbir şey sadece bir for döngüsünden daha hızlı olamaz. Bazen gerekli olan hızdır ve kafiye hız açısından herhangi bir evrensel test cihazını geçecektir (ancak diğer parametrelerde değil). Sadece MetaQuotes'tan değil.

Aşağıdaki nedenden dolayı ifademi kanıtlayamam:

Benim kafiyem, tüm işlemlerin özel olarak tamsayı (fiyatlar tamsayı) yapıldığı, ekstra geçişlerin tamamen sıfıra indirildiği, vb. Uzman Danışmanımın bir C++ uygulamasıdır. Arayüz yok, hiçbir şey yok. Yalnızca optimizasyon sonuçlarına sahip çıktı dosyası. Onlar. C++'da algoritmik optimizasyonlu bir EA yazabilirim ve test cihazım herhangi bir ticaret kontrolü yapmayacak (yeterli marj olup olmadığı vb.). Geçmişi taklit etmeyecek ve göstergeleri saymayacaktır. MT5 test cihazının çok yönlülüğü açısından evrensel bir yanı yoktur. Sayma kafiyesinin görevi sadece bir tanesidir - hızlı, mümkün olduğu kadar çabuk saymak. MT4 test cihazından yüz kat daha hızlı hesaplar ve < %1 hata verir. Benim tarafımdan gösterilecek olan şey hiç açık değil.

Kontrolsüz ve yalnızca tamsayılı for döngüsünün her zaman evrensel test cihazından daha hızlı hesaplayacağı açıktır.

Neden: