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.
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.