Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 154

 
paladin800 :
Onlar. 1.33182 sayısından 1.3318 almanız gerekiyor mu? Sadece 5. ondalık basamağı atmanız veya 4. ondalık basamağa yuvarlamanız yeterlidir, yani. örneğin, 1.331 8 6'dan 1.331 8 veya 1.331 9 ?

Bir bug var mı yok mu diye bir sorum var. Örneğimde double'dan int'ye döküm yaparken, sonuç bir eksik. Lütfen kendiniz kontrol edin.

   double max= NormalizeDouble ( 1.33182 ,4);  
   //double max=1.3318;
   Alert ( int (max* 10000 ));
Uyarı 13318 vermeli, ancak 13317 veriyor. Ayrıca, int'ye yol açmazsa , doğru bir şekilde 13318.0 verecektir.
 

İfadelerde bir fark olup olmadığını söyleyin:

 if (bufferclose[ 1 ]<=MaxLine( 1 )-m_open_bar_error*ticksize && bufferopen[ 1 ]<=MaxLine( 1 )-m_open_bar_error*ticksize)

ve

 if ( ( bufferclose[ 1 ]<=MaxLine( 1 )-m_open_bar_error*ticksize ) && ( bufferopen[ 1 ]<=MaxLine( 1 )-m_open_bar_error*ticksize ) )
 
sgreen :

İfadelerde bir fark olup olmadığını söyleyin:

ve

Bir şeyin doğru olmadığından şüpheleniyorsanız, şunu yapın:

 if (bufferclose[ 1 ]<= ( MaxLine( 1 )-m_open_bar_error*ticksize ) && bufferopen[ 1 ]<= ( MaxLine( 1 )-m_open_bar_error*ticksize ) )
 
Rorschach :

Bir bug var mı yok mu diye bir sorum var. Örneğimde double'dan int'ye döküm yaparken, sonuç bir eksik. Lütfen kendiniz kontrol edin.

Uyarı 13318 vermeli, ancak 13317 veriyor. Ayrıca, int'ye yol açmazsa , doğru bir şekilde 13318.0 verecektir.
Uyarı hata vermiyor. Onlar. hata yok. Gerçek şu ki, normalleştirme, sayıyı, istenen ondalık karşılığına en yakın olan ikili forma getirirken, yukarı veya aşağı (sizin durumunuzda) onunla çakışmayabilir. Sonlu bir ondalık kesir ile ifade edilebilen şey her zaman sonlu bir ondalık kesir ile ifade edilemediğinden, ikili. İfade
 int (max* 10000 )

yuvarlama değil kesirli kısmın reddedilmesine yol açar (yani MathRound()'dan daha çok MathFloor()'a benziyor) ve sizin durumunuzda normalleştirilmiş sayı tam olarak 13318 olmayabilir, ancak 13317.99999999999999997 deyin

, sınırlı sayıda karakterle kesirli bir biçimde çıktı alırken, doğru (beklenen) sonuca yuvarlamaya yol açar ve kesirli kısım atıldığında .... anlarsınız.

Umarım net bir şekilde anlatmışımdır.

 
pronych :
Sharp'ın kısmi bir analogu var mı? veya nasıl yapılır?

analog yok. #include <partial_class_code.mqh> kullanarak tanımın bir bölümünü ekleyebilirsiniz

hatta bazı aktörler bu şekilde çoklu kalıtımı simüle eder. // Ben yapmıyorum, onsuz yapmaya alışığım. ve hatta itiraf etmekten utanıyorum, hoşuma gidiyor. :)

 
paladin800 :

Bir şeyin doğru olmadığından şüpheleniyorsanız, şunu yapın:

Zaten bitti. Sadece merak ediyorum.
 
sgreen :
Zaten bitti. Sadece merak ediyorum.

Açık. Önceki sorunuza dönersek, kaydın özü aşağıdaki karşılaştırmadan çıkarılabilir:

 if (A<=B && C<=D)     // 1
if ((A<=B) && (C<=D)) // 2

Bu girişler arasında hiçbir fark yoktur. Aynı zamanda, if-s içindeki matematiksel hesaplamaların parantez içine alınmasını tavsiye ederim, örneğin:

 if (A<=(B1+B2*B3) && C<=(D1-D2*D3))
Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
MetaDriver :
Uyarı hata vermiyor. Onlar. hata yok. Gerçek şu ki, normalleştirme, sayıyı, istenen ondalık karşılığına en yakın olan ikili forma getirirken, yukarı veya aşağı (sizin durumunuzda) onunla çakışmayabilir. Sonlu bir ondalık kesir ile ifade edilebilen şey her zaman sonlu bir ondalık kesir ile ifade edilemediğinden, ikili. İfade

yuvarlama değil kesirli kısmın reddedilmesine yol açar (yani MathRound()'dan daha çok MathFloor()'a benziyor) ve sizin durumunuzda normalleştirilmiş sayı tam olarak 13318 olmayabilir, ancak 13317.99999999999999997 deyin

, sınırlı sayıda karakterle kesirli bir biçimde çıktı alırken, doğru (beklenen) sonuca yuvarlamaya yol açar ve kesirli kısım atıldığında .... anlarsınız.

Umarım net bir şekilde anlatmışımdır.

Teşekkür ederim, anladım.

Başka bir soru, int'ye çeviri yapmadan yapamıyorsanız, bununla nasıl başa çıkılacağıdır?

 
Bir danışmanı test ederken komisyoncu komisyonunu nasıl hesaba katacağımı söyle?
 
Rorschach :

Teşekkür ederim, anladım.

Başka bir soru, int'ye çeviri yapmadan yapamıyorsanız, bununla nasıl başa çıkılacağıdır?

ve birkaç epsilon eklersiniz.

DBL_EPSILON

1.0+DBL_EPSILON != 1.0 koşulunu sağlayan en küçük sayı


Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов - Документация по MQL5