Hatalar, hatalar, sorular - sayfa 2822
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Sadece yuvarlama normal round(), ceil(), floor() ile yapılmaz. onlar da çift döner.
Ve bunlar sayesinde, normal olanlardan daha hızlı çalışırlar:
Belki daha hızlı, ama sadece yanlış.
Kendin denedin mi?
Denemek:
Çıktı:
12346 olmalı, çünkü is ceil (" Üstten en yakın tamsayı değerini döndürür .")ilk durumda, 12345 elde edilir, çünkü çift tip 17'deki önemli rakamlar ve 18'iniz var
Gerçekten de, çift karşılaştıramazsınız. Sadece zor bir kural.
Tabii ki, çiftleri doğrudan birbirleriyle karşılaştırabilirsiniz ve hatta bazen buna ihtiyaç duyabilirsiniz.
Örneğin, Optimizasyon sırasında OnTick'e bazen trilyon kez denir. Askıda kalma limitinin uygulanıp uygulanmayacağını anlamak için Staff Tester, sembolün mevcut karşılık gelen fiyatı ile limitin fiyatını karşılaştırır. Bunu her OnTick çağrısından önce her erteleme için yapar. Onlar. bu tür kontroller onlarca ve yüz milyarlarca kez yapılır.
Ve bu her seferinde normalleştirme yoluyla yapılır. Yani - bu, hiçbir şey için korkunç bir bilgi işlem kaynakları israfı. Çünkü fiyatlar ve bekleyen emirler ve semboller önceden normalleştirilir. Bu nedenle, doğrudan birbirleriyle karşılaştırılabilir ve karşılaştırılmalıdır.
Maviden değil, MQL-özel Test Cihazı, performans açısından yerel normal Test Cihazından daha iyi performans gösteriyor.
fxsaber :
Tabii ki, çiftleri doğrudan birbirleriyle karşılaştırabilirsiniz ve hatta bazen buna ihtiyaç duyabilirsiniz.
Örneğin, Optimizasyon sırasında OnTick'e bazen trilyon kez denir. Askıda kalma limitinin uygulanıp uygulanmayacağını anlamak için Staff Tester, sembolün mevcut karşılık gelen fiyatı ile limitin fiyatını karşılaştırır. Bunu her OnTick çağrısından önce her erteleme için yapar. Onlar. bu tür kontroller onlarca ve yüz milyarlarca kez yapılır.
Ve bu her seferinde normalleştirme yoluyla yapılır. Yani - bu, hiçbir şey için korkunç bir bilgi işlem kaynakları israfı. Çünkü fiyatlar ve bekleyen emirler ve semboller önceden normalleştirilir. Bu nedenle, doğrudan birbirleriyle karşılaştırılabilir ve karşılaştırılmalıdır.
Maviden değil, MQL-özel Test Cihazı, performans açısından yerel normal Test Cihazından daha iyi performans gösteriyor.
NormalizeDouble() çok pahalı bir fonksiyondur. Bu nedenle, onu unutmak daha iyidir.
NormalizeDouble() ile int ile normalleştirme arasındaki farkı gösteren bir betik:
sonuç:
Tehdit ve int yoluyla normalleştirme daha da doğrudur (bu, normalleştirmenin son basamağından sonraki dokuz sayısı ile görülebilir - mavi renkle vurgulanır.)NormalizeDouble() çok pahalı bir fonksiyondur. Bu nedenle, onu unutmak daha iyidir.
NormalizeDouble() ile int ile normalleştirme arasındaki farkı gösteren bir betik:
sonuç:
Tehdit ve int yoluyla normalleştirme daha da doğrudur (bu, normalleştirmenin son basamağından sonraki dokuz sayısı ile görülebilir - mavi renkle vurgulanır.)ve eğer double ile değil de uzun ile özetlerseniz, sonuç daha da etkileyicidir, çünkü int yoluyla toplama (toplam toplamın daha sonra bölünmesiyle çarpma ve yuvarlama) normal çift toplamdan daha hızlı hesaplanır.
sonuç:
ve eğer double ile değil de uzun ile özetlerseniz, sonuç daha da etkileyicidir, çünkü int yoluyla toplama (toplam toplamın daha sonra bölünmesiyle çarpma ve yuvarlama) normal çift toplamdan daha hızlı hesaplanır.
sonuç:
Karşılaştırma için Decimal ekleyin.
Yanlış bağlantı, tam bir uygulama yok.
Ve bu her seferinde normalleştirme yoluyla yapılır. Yani - bu, hiçbir şey için korkunç bir bilgi işlem kaynakları israfı.
Bunu nasıl biliyorsun? Sonuçta, fiyatlar normalleştirilmese bile, kontrol herhangi bir normalleştirme olmadan yapılır:
fiyatların ticksize'ın katları olduğu göz önüne alındığında
Tehdit ve int yoluyla normalleştirme daha da doğrudur (bu, normalleştirmenin son basamağından sonraki dokuz sayısı ile görülebilir - mavi renkle vurgulanır.)
Test yanlış. Neden sonunda 100000.0'a yalnızca bir kez bölüyorsunuz? Her yinelemede yürütülmeli ve ardından özetlenmelidir. O zaman adil bir karşılaştırma olacak. Yani herhangi bir normalleştirmeniz yok, sadece test algoritmanızı optimize ettiniz. Doğal olarak hem daha hızlı hem de daha doğru olacaktır (çünkü biriken hata azalır)
Bunu nasıl biliyorsun?
Çünkü Tester'a normalleştirilmemiş fiyatları girdi olarak gönderebilirsiniz ve onlarla aynı şekilde çalışacaktır.
Sonuçta, fiyatlar normalleştirilmese bile, kontrol basitçe ve herhangi bir normalleştirme yapılmadan yapılır.
Bu durumda, normalleştirme ile, uyguladıktan sonra bu standardın çiftlerini doğrudan karşılaştırmanın mümkün olduğu tek bir standart algoritmayı kastettim.
Ve böylece Test Cihazı doğrudan karşılaştırma yapmaz. Ve bunu ya NormalizeDouble aracılığıyla ya da ticksize aracılığıyla ya da başka bir şekilde yapar. Ama kesinlikle çiftlerin doğrudan bir karşılaştırması değil. Ve bu tamamen mantıksız.
Tabii ki, çiftleri doğrudan birbirleriyle karşılaştırabilirsiniz ve hatta bazen buna ihtiyaç duyabilirsiniz.
Örneğin, Optimizasyon sırasında OnTick'e bazen trilyon kez denir. Askıda kalma limitinin uygulanıp uygulanmayacağını anlamak için Staff Tester, sembolün mevcut karşılık gelen fiyatı ile limitin fiyatını karşılaştırır. Bunu her OnTick çağrısından önce her erteleme için yapar. Onlar. bu tür kontroller onlarca ve yüz milyarlarca kez yapılır.
Ve bu her seferinde normalleştirme yoluyla yapılır. Yani - bu, hiçbir şey için korkunç bir bilgi işlem kaynakları israfı. Çünkü fiyatlar ve bekleyen emirler ve semboller önceden normalleştirilmiştir. Bu nedenle, doğrudan birbirleriyle karşılaştırılabilir ve karşılaştırılmalıdır.
Maviden değil, MQL-özel Test Cihazı, performans açısından yerel normal Test Cihazından daha iyi performans gösteriyor.
Çılgın versiyonu hız için kontrol etmeye karar verdim.
Ve sonuç şaşırttı.
Önceden normalleştirilmiş çiftlerin bile karşılaştırılması, çiftin epsilon veya int'ye dönüştürülmesi yoluyla karşılaştırılmasından ortalama olarak daha yavaştır.
Sonuç:
Pek çok şeyin işlemcinin yeniliğine ve mimarisine bağlı olduğunu ve birisi için sonucun farklı olabileceğini göz ardı etmiyorum.
Dürüst olmak gerekirse tehdit - Bunun neden olduğunu bile anlamıyorum.
Derleyicinin rastgele sayıların toplamı ile optimize edecek hiçbir şeyi yok gibi görünüyor. Köşeli parantezlerden yuvarlama alamazsınız.
İşlemcide çift karşılaştırmanın bir komut olduğu görülüyor
Epsilon karşılaştırma seçeneği (en hızlı seçenek) ile iki çifti karşılaştırma işlemi yine de gerçekleşir, ancak bu durumda fonksiyon ayrıca üç parametrenin aktarılması ve bir çıkarma işlemi ile çağrılır.
İki ikili karşılaştırma işleminin performansı gerçekten değişkenlerin kendi değerlerine mi bağlı? Ben şüpheliyim.
Lanet olsun, anlamıyorum. Yardım edin lütfen - neyi hesaba katmadım veya nerede hata yaptım?