MQL4 ustaları için soru. Yine Çift Karşılaştırma hakkında. - sayfa 4

 
Integer :
VBAG bu betiği gör
Ve ayrıca geceleri çalışıyorsun .., desteğin için teşekkürler, çok fazla bilgi, şimdi hepsini sindirmemiz gerekiyor.
 
Integer :

fiyat = 1.1111

ana = 1.11110001

8 işarete normalleştirildiğinde ma>fiyat - sağ. Daha az sayıda karaktere normalleştirildiğinde, bunların eşit olduğu ortaya çıkıyor - yanlış. Bu şekilde maksimum doğruluk elde edilir.

Bu bir şaka, değil mi? :)
Genel olarak, normalleştirme olmadan ma > fiyatlar da, sonuçta, doğru. Zaten mevcutsa ve zaten açıkça daha ulaşılabilirse neden maksimum doğruluk elde edesiniz?

9 karaktere normalleştirme çalışmıyor. Görünüşe göre fiyat 9 karaktere sahip ve gösterge 8 veya tam tersi (hatırlamıyorum), kısacası belirsizliğin gizemiyle kaplı.


Evet, büyük olasılıkla, bu NormalizeDouble'ın kendisinde, sayaç yalnızca 8 karaktere kadar. Sana söylüyorum, saçma sapan bir işlev, nasıl çevirirsen çevir.
 
komposter :

Ve basitleştirilmiş bir biçimde, ComparePrice kadar hızlı çalışır:
2007.09.10 03:19:24 CheckCompareDoubleSpeed GBPUSD,Günlük:KarşılaştırFiyat: 20922 , eşit: 20453
Ama orijinal haliyle, sadece bir şarkı :)
 int start ()
{
    double a , b ;
    int start1 , start2 , end , c ;
    
    a = 1.23450001 ;
    b = 1.23449999 ;
    
    start1 = GetTickCount () ;
    
    for ( c = 100000000 ; c > 0 ; c -- )
        ComparePrice ( a , b ) ;
    
    start2 = GetTickCount () ;
    
    for ( c = 100000000 ; c > 0 ; c -- )
        equal ( a , b ) ;
    
    end = GetTickCount () ;
 
    Print ( " ComparePrice: " , start2 - start1 , " , equal: " , end - start2 ) ;
 
    return ( 0 ) ;
}
 
int ComparePrice ( double a , double b )
{
    a -= b ;
    b = Point / 2 .;
    if ( a > b )
        return ( 1 ) ;
    if ( a < - b )
        return ( - 1 ) ;
    return ( 0 ) ;
}
 
bool equal ( double value1 , double value2 , int precision = 8 )
{
    return ( NormalizeDouble ( MathAbs ( NormalizeDouble ( value1 , precision ) - NormalizeDouble ( value2 , precision )) , precision ) < NormalizeDouble ( MathPow ( 0.1 , precision ) , precision )) ;
}
2007.09.10 02:39:57 testScript USDJPYm,H4: CompareFiyat: 23843 , eşit: 178704
Eh, ama kompostörün daha iyi bir arabası var!
 
Irtron :
Ama orijinal haliyle, sadece bir şarkı :)
Evet, çok yönlülük için ödeme yapmanız gerekiyor.
Veya ComparePrice, herhangi bir sayıyı herhangi bir hassasiyetle karşılaştırmak için de uygun mu?
 
komposter :

Veya ComparePrice, herhangi bir sayıyı herhangi bir hassasiyetle karşılaştırmak için de uygun mu?
Tabii ki! Doğruluk biliniyorsa, ticaret değerleriyle çalışırken tam olarak olan budur. Sabit nokta .
 
Irtron :
Tabii ki! Doğruluk biliniyorsa, ticaret değerleriyle çalışırken tam olarak olan budur. sabit nokta.
Kabul ediyorum.
Sadece "çiftlerin karşılaştırılması hakkında" konuların çok sayıda yazarına açıklamak gerekiyor.
Bu nedenle, evrensel (ama optimal olmaktan uzak) bir karşılaştırma seçeneği önerdim.
Ve o çalışıyor. Yavaş yavaş ama emin bir şekilde. Ve her durumda.

Ve "Çiftlerin karşılaştırmasını optimize etme üzerine" konusu göründüğünde, konuyu geliştirmek mümkün olacaktır;)
 

Bir yerde fiyat normalleşmesine ihtiyaç var mı?

Belgeler, ticaret emirlerindeki fiyatların normalleştirilmesi gerektiğini söylüyor.

'Normalleştirilmemiş tarih ve açılış pozisyonları' dalında aşağıdakiler yazılır:

Renat 16.02.2007 10:01
Sunucuya kasten hatalı fiyatlar göndermemek için takas taleplerine kasten zorunlu fiyat normalleştirmesi ekledik.
 
Eğitim programı için tüm profesyonellere derin şükranlarımı sunmak istiyorum!

Irtron, senin versiyonunu kendim için seçtim, gerçekten beğendim. Genel durumlar için biraz ince ayar yapıldı, kontrol edildi - bir saat gibi çalışıyor:

int ComparePrice(çift a, çift b, çift haneli)
{
a -= b;
b = rakam;
(a > b) ise
dönüş(1);
eğer (a < -b)
dönüş(-1);
dönüş(0);
}
Teşekkür ederim.
 
digit=0 ile sorunlar olacaktır. İşlev neden NormalizeDouble () öğesine yapılan tek bir çağrıdan daha yavaş?
 
Integer :
digit=0 ile sorunlar olacaktır.

Herhangi bir rakam için sorunlar olacaktır. Rakamın ne olduğunu ve değişikliğin ne anlama geldiğini hiç anlamadım.

tamsayı :
İşlev neden NormalizeDouble () öğesine yapılan tek bir çağrıdan daha yavaş?
Ayrıca, MathAbs, 2+3, vb.'den kesinlikle daha yavaş olacaktır. :)

İşlevleri farklı işlevlerle karşılaştırma konusu nedir? Bu eşit derecede basitleştirilmiş (işe yaramaz, gerçekten), şimdi burada NormalizeDouble.
Neye ve kime böyle bir dürüstlük kanıtlamak istiyorsun ... (kelimeyi kendin koy)?
Neden: