Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 232
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
DBL_EPSILON tanımının açıklaması:
Bu kötü bir açıklama, çünkü
DBL_EPSILON'un anlamını açıklamanın başka bir yolu:
DBL_EPSILON sadece [1,2)'deki ardışık çiftler arasındaki boşluk boyutudur.
https://www.exploringbinary.com/the-spacing-of-binary-floating-point-numbers/
https://en.wikipedia.org/wiki/Machine_epsilon
DBL_EPSILON'u daha iyi anlamak için, kayan noktalı bir sayacı artırdığınızı düşünün:
Sayacın ilk değeri 1.0 ise, sayacın adım boyutu (epsilon) 16. ondalık basamakta 2.220446049250313e-16 (DBL_EPSILON) ≈ 2 olacaktır.
/* 1.0000000000000002 1.0000000000000004 1.0000000000000007 1.0000000000000009 1.000000000000001 1.0000000000000013 1.0000000000000016 1.0000000000000018 1.000000000000002 1.0000000000000022 */
Sayacın başlangıç değeri 1024 ise, sayacın adım boyutu (epsilon) 13. ondalık basamakta 2.27373675443232321e-13 (1024 * DBL_EPSILON) ≈ 2 olacaktır.
/* 1024.0000000000002 1024.0000000000005 1024.0000000000007 1024.000000000001 1024.0000000000011 1024.0000000000014 1024.0000000000016 1024.0000000000018 1024.000000000002 1024.0000000000023 */
Sayacın başlangıç değeri 4503599627370496 (2^52) ise, sayacın adım boyutu 1.0 (2^52 * DBL_EPSILON)= 1 olacaktır. Bu aralıkta, bir double bir tamsayı sayacı gibi davranır, hiçbir kesir temsil edilemez.
/* 4503599627370497.0 4503599627370498.0 4503599627370499.0 4503599627370500.0 4503599627370501.0 4503599627370502.0 4503599627370503.0 4503599627370504.0 4503599627370505.0 4503599627370506.0 */
Daha küçük sayıların aralarında daha küçük boşluklar olduğunu ve daha büyük sayıların aralarında daha büyük boşluklar olduğunu görebilirsiniz.
Bu nedenle, DBL_EPSILON göreli hata oranıdır. Göreceli, sayının büyüklüğüne göre anlamına gelir.
1.0'da mutlak hata = 1 * 2.2204460492503131e-016 (DBL_EPSILON).
d'de, mutlak hata ≈ d * DBL_EPSILON.
(DBL_EPSILON, bankanın yıllık faiz oranı gibi 1.0'da bir referans oranıdır ve 2^-52'ye eşittir).
Bir yan not: 1024.0000000000003 yazdırmaya çalışırsanız, bunun yerine 1024.0000000000002 yazdıracaktır (en yakın temsil edilebilir sayıya yuvarlayarak), çünkü 1024.0000000000003 temsil edilebilir bir sayı değildir (mevcut olmayan fp sayısı).
Buna temsil hatası denir:
Önceki/sonraki temsil edilebilir sayılara bit manipülasyonu (daha önce olduğu gibi enum: DoubleAdvance(value, -1)) veya DBL_EPSILON kullanılarak ulaşılır:
DBL_EPSILON temel olarak çiftler üzerindeki matematiksel işlemlerden (sayısal analiz) sonra fp yuvarlama hatalarını tahmin etmek (veya düzeltmek) için kullanılır:
|gerçek sonuç - fp sonucu| / gerçek sonuç <= DBL_EPSILON
Özel bir optimizasyon kriteri DEĞİL de bir genetik optimizasyon algoritması olduğunda OnTester() çağrısı MT5 test cihazında devre dışı bırakılıyor mu?
Sanırım hayır. Ama ben istiyorum ki... Tercihen yapılandırma ayrıştırması olmadan.
PS. CARAUL!!! Her şey gitti! Optimizasyonun her geçişinde (olmalı / olmamalı) - OnTester() çağrılır, bu da optimizasyonun toplam süresini büyük ölçüde artırabilir!
Kim yardım edebilir... )))))
Araştırmam sırasında belgelenmemiş ilginç bir fonksiyona rastladım
bir diyalog kutusu için giriş yorumunu gizleyebilirsiniz
orijinal gönderi burada
https://www.mql5.com/ru/forum/1271#comment_9019
Araştırmam sırasında belgelenmemiş ilginç bir fonksiyona rastladım
bir diyalog kutusu için giriş yorumunu gizleyebilirsiniz
orijinal gönderi burada
https://www.mql5.com/ru/forum/1271#comment_9019
Tester'da Geçmiş tablosunun üzerine yalnızca iki durumda yazılır.