Hatalar, hatalar, sorular - sayfa 2820

 
Kira27 :

Beni bir sersemliğe sokmaya yardım et)))

Kılavuz tırnak işaretleri olmadan söylüyor. Yani kendini oraya koydun.

 
Sakallı soru. Ama bu sonucu anlamıyorum.
 void OnStart ()
{
   Print ( NormalizeDouble ( 1.79435 , 5 ) == 1.79435 ); // false   
}
 
fxsaber :
Sakallı soru. Ama bu sonucu anlamıyorum.

100 kez söylendi: "Tam ikili karşılaştırma yapmayın, epsilon kullanın". Belgelerimize dahil.

0,3 veya 0,7 bile temsilleriyle karşılaştırılamaz. Kabul edin ve barışın. Veya gidin ve çalışın (örneğin MTI'da)

 
Slava :

100 kez söylendi: "Tam ikili karşılaştırma yapmayın, epsilon kullanın". Belgelerimize dahil.

Çiftlerin karşılaştırmasını elbette yapabilirim.

0,3 veya 0,7 bile temsilleriyle karşılaştırılamaz. Kabul edin ve barışın. Veya gidin ve çalışın (örneğin MTI'da)

 Print ( NormalizeDouble ( 0.3 , 5 ) == 0.3 ); // true
Print ( NormalizeDouble ( 0.7 , 5 ) == 0.7 ); // true

Print ( NormalizeDouble ( 0.12345 , 5 ) == 0.12345 ); // true

Soruyu anlamadın.

 
ondalık sayı işleri kolaylaştırabilir, ancak yavaştır(
 
fxsaber :

Çiftlerin karşılaştırmasını elbette yapabilirim.

Soruyu anlamadın.

Burada daha fazla nüans var.

0,5 ile çarpılan gerçek bir sayı, aynı sayının 2,0'a bölümüyle karşılaştırılamaz.

 
Slava :

Burada daha fazla nüans var.

0,5 ile çarpılan gerçek bir sayı, aynı sayının 2,0'a bölümüyle karşılaştırılamaz.

O gibi. Ancak soru, neden 1.79435 sayısının 5. ondalık basamağa normalleştirilmediğiydi?


ZY Bir sorunun tarihöncesi.

SL, Tester'da çalıştı. DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0 ( MT5'te alışıldığı gibi ), DEAL_COMMENT = "sl 1.79435".

SL'nin yürütülmesi sırasında bir kayma olup olmadığını anlamak gerekli miydi? Bu nedenle, yorumdaki DEAL_PRICE ve fiyatı karşılaştırdım. Fiyatların aynı olduğunu gözlerimle görüyorum ama MQL öyle olmadığını söylüyor. Sonuç olarak, orijinal karşılaştırmanın sonuna geldim.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2020.08.10 09:04

 void OnStart ()
{
   Print ( NormalizeDouble ( 1.79435 , 5 ) == 1.79435 ); // false   
}
 
fxsaber :

O gibi. Ancak soru, neden 1.79435 sayısının 5. ondalık basamağa normalleştirilmediğiydi?


ZY Bir sorunun tarihöncesi.

SL, Tester'da çalıştı. DEAL_PRICE = 1.79435, ORDER_PRICE_OPEN = 0 ( MT5'te alışıldığı gibi ), DEAL_COMMENT = "sl 1.79435".

SL'nin yürütülmesi sırasında bir kayma olup olmadığını anlamak gerekli miydi? Bu nedenle, yorumdaki DEAL_PRICE ve fiyatı karşılaştırdım. Fiyatların aynı olduğunu gözlerimle görüyorum ama MQL öyle olmadığını söylüyor. Sonuç olarak, orijinal karşılaştırmanın sonuna geldim.

Üzgünüm, ama bunu senden duymak bir şekilde garip.


 
Alexey Viktorov :

Üzgünüm, ama bunu senden duymak bir şekilde garip.

Sorumu tekrarlıyorum.

fxsaber :

1.79435 sayısı neden 5. ondalık basamağa normalleştirilmedi?

 void OnStart ()
{
   const double Norm = NormalizeDouble ( 1.79435 , 5 );
  
   Print (( double )( string )Norm == Norm);     // false
   Print (( double )( string )Norm == 1.79435 ); // true
}
 
fxsaber :

O gibi. Ancak soru, neden 1.79435 sayısının 5. ondalık basamağa normalleştirilmediğiydi?

normalizasyon yuvarlama değildir

@Slava , double öğesinin dahili temsilinin farklı olduğunu yazıyor:

 #define PRINT(EX) Print ( #EX, " = " ,EX)
//+------------------------------------------------------------------+
void OnStart ()
{
   union ULONG_DOUBLE
   {
       double d_value;
       ulong ul_value;
   }tmp;
   double NORM_DOUBLE   = NormalizeDouble ( 1.79435 , 5 );
   double CONST_DOUBLE  = 1.79435 ;
   
   PRINT(NORM_DOUBLE);
   tmp.d_value = NORM_DOUBLE;
   PRINT(LongToHex(tmp.ul_value));
   
   tmp.d_value = CONST_DOUBLE;
   PRINT(CONST_DOUBLE);
   PRINT(LongToHex(tmp.ul_value));
}
//+------------------------------------------------------------------+
string LongToHex( const ulong value)
{
   return ( StringFormat ( "%llX" , value));
}
//+------------------------------------------------------------------+

2020.08.10 13:33:37.737 tst_normalize(EURUSD,H1) NORM_ÇİFT = 1.79435

2020.08.10 13:33:37.737 tst_normalize(EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DD A

2020.08.10 13:33:37.737 tst_normalize(EURUSD,H1) CONST_DOUBLE = 1.79435

2020.08.10 13:33:37.737 tst_normalize(EURUSD,H1) LongToHex(tmp.ul_value) = 3FFCB5A858793DD 9


Not: Bir yerde @Nikolai Semko'nun güzel bir gönderisi vardı, işi double ile çok iyi tanımladı, belki bağlantıyı bulur ve gönderirim

UPD: https://www.mql5.com/en/forum/1111/page2623#comment_14473837