Kayan bölme, kayan toplama, int'ye dönüştürme, işlev çağrısı (kopyala, atla, dönüş = 3,) * 2 her zaman iki. (18) Ve bu, böl ve dönüştür'ün diğer işlemlerle eşit olduğunu varsayıyor - değiller.
vs
if ( MathAbs (a - b) > Point / 2 .)
bir çıkarma, bir test, 1/2 olumsuzlama (ortalama) ve karşılaştırma. (başlangıçta nokta/2 yapılırsa ve ABS bir IF ile değiştirilirse 1/2)
İşleri fazla karmaşıklaştırma
Yuvarlama nedeniyle eşit olduğunda tetiklenebilir
if (a > b)
a kesinlikle b'den büyüktür
if (a - b > Point / 2 .)
Yuvarlama nedeniyle a, b'den küçük olduğunda tetiklenebilir
if (a >= b)
a kesinlikle >= b'dir
if (a - b > - Point / 2 .)
if (a > b - Point / 2 .)
if (a + Point / 2 . > b)
Kayan bölme, kayan toplama, int'ye dönüştürme, işlev çağrısı (kopyala, atla, dönüş = 3,) * 2 her zaman iki. (18) Ve bu, böl ve dönüştür'ün diğer işlemlerle eşit olduğunu varsayıyor - değiller.
vs
bir çıkarma, bir test, 1/2 olumsuzlama (ortalama) ve karşılaştırma. (başlangıçta nokta/2 yapılırsa ve ABS bir IF ile değiştirilirse 1/2)
İşleri fazla karmaşık hale getirme
2013.04.03 17:39:12TestSpeed-CompareDbls USDJPY,M5: MathAbs(a - b) 266 ms'de 9000000 kez.
2013.04.03 17:39:11TestSpeed-CompareDbls USDJPY,M5: 1887 ms'de 9000000 kez ConvertToPoints.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Basit çözüm yerine çok sayıda hesaplamada
Double'ları karşılaştırmak amacıyla double'ları int'lere dönüştüren bu çözüme ulaştım. . .
Ben de (şimdiye kadar) fiyatları karşılaştırmak için işe yarayan yaratıcı bir çözüm buldum:
Fiyatı, tam sayı olarak ifade edilen noktalar olarak fiyatı temsil eden bir int değerine yükseltirim. Böylece:
asla doğru olamaz.
stdlib.mq4'teki CompareDoubles() bu tartışmadan diskalifiye edildi mi? Fiyat için kullanılırsa benim için iyi çalışıyor.
Kayan bölme, kayan toplama, int'ye dönüştürme, işlev çağrısı (kopyala, atla, dönüş = 3,) * 2 her zaman iki. (18) Ve bu, böl ve dönüştür'ün diğer işlemlerle eşit olduğunu varsayıyor - değiller.
vs
bir çıkarma, bir test, 1/2 olumsuzlama (ortalama) ve karşılaştırma. (başlangıçta nokta/2 yapılırsa ve ABS bir IF ile değiştirilirse 1/2)
İşleri fazla karmaşıklaştırma
if (a > b)if (a >= b)if (a != b)Kayan bölme, kayan toplama, int'ye dönüştürme, işlev çağrısı (kopyala, atla, dönüş = 3,) * 2 her zaman iki. (18) Ve bu, böl ve dönüştür'ün diğer işlemlerle eşit olduğunu varsayıyor - değiller.
vs
bir çıkarma, bir test, 1/2 olumsuzlama (ortalama) ve karşılaştırma. (başlangıçta nokta/2 yapılırsa ve ABS bir IF ile değiştirilirse 1/2)
İşleri fazla karmaşık hale getirme
2013.04.03 17:39:11 TestSpeed-CompareDbls USDJPY,M5: 1887 ms'de 9000000 kez ConvertToPoints.
2013.04.03 17:46:02 TestSpeed-CompareDbls USDJPY,M5: Düz(fiyat) 3604 ms'de 9000000 kez.
"MathAbs(ab)" yöntemi, ConvertToPoints() yönteminden yaklaşık 7 kat ve benim "Flat()" yöntemimden neredeyse 14 kat daha hızlıdır
2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPPoint 99999999 kez 3403 ms'de.
2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 2505 ms'de 999999999 kez.
Ancak 3'üncü pratik olamaz ve 2'nci olan (intRecord > intCheck) karşılaştırmadan önce intCheck için 1 atama daha içeriyordu.
Test ettim (intRecord > fiyat/puan) ve
2013.04.04 14:27:38 TestSpeed-CompareDbls EURUSD,H4: MathAbs(a - b) HalfAPPoint 99999999 kez 3403 ms'de.
2013.04.04 14:27:42 TestSpeed-CompareDbls EURUSD,H4: (intRecord > intCheck) 2505 ms'de 999999999 kez.
Ancak 3'üncü pratik olamaz ve 2'nci olan (intRecord > intCheck) karşılaştırmadan önce intCheck için 1 atama daha içeriyordu.