Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
float askP= NormalizeDouble ( Ask , Digits )/ NormalizeDouble ( Point , Digits );
float bidP= NormalizeDouble ( Bid , Digits )/ NormalizeDouble ( Point , Digits );
float Averab=((askP+bidP))/ 2.0 ;
AUTOPRICE= MathFloor (Averab)* Point ;
Print ( "FLOAT " + " askP=" +askP+ " bidP=" +bidP+ " Averab=" + DoubleToString (Averab, 10 )+ " AUTOPRICE=" + DoubleToString (AUTOPRICE, 10 ));
double AUTOPRICE2;
double askP2= NormalizeDouble ( Ask , Digits )/ NormalizeDouble ( Point , Digits );
double bidP2= NormalizeDouble ( Bid , Digits )/ NormalizeDouble ( Point , Digits );
double Averab2=((askP2+bidP2))/ 2.0 ;
AUTOPRICE2= MathFloor (Averab2)* Point ;
Print ( "DOUBLE " + " askP2=" +askP2+ " bidP2=" +bidP2+ " Averab2=" + DoubleToString (Averab2, 10 )+ " AUTOPRICE=" + DoubleToString (AUTOPRICE2, 10 ));
yayılma:2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105143 bidP2=105141 Averab2=105142.0000000000 AUTOPPRICE= 1.0514200000
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 AUTOPPRICE= 1.0514199734
yayılma:3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105144 bidP2=105141 Averab2=105142.5000000000 AUTOPPRICE= 1.0514200000
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 AUTOPPRICE= 1.0514199734
yayılma:4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105145 bidP2=105141 Averab2=105143.0000000000 AUTOPPRICE= 1.0514200000
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105145 bidP=105141 Averab=105143.0000000000 AUTOPPRICE= 1.0514299870
yayılma:5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPPRICE= 1.0514300000
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPPRICE= 1.0514299870
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - ÇİFT TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105145 bidP2=105141 Averab2=105143.0000000000 AUTOPPRICE= 1.0514200000
Sonuç doğru. Ortalama2 < 105143.
Sonuç doğru. Ortalama2 < 105143.
niye ya? çünkü Averab2= 105143.000000000
niye ya? çünkü Averab2= 105143.000000000
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Double vs FLOAT - anlaşılmaz MathFloor hatası
fxsaber , 2017.02.26 08:27
Çift sayı yazdırmak hiçbir şey ifade etmez. Gerçek çift değeri yazdırmak istiyorsanız, baytlarına bakmanız gerekir.
niye ya? çünkü Averab2= 105143.000000000
Seni anladım. Teşekkürler, ama bu çıktıyla ilgili.
ancak kodun içindeki gerçek anlam çıktıdan sonraki ile aynıdır. birçok kez kontrol ettim
Anladım,
bu çift 1 = 1.000000000000000000000000000112123515;
vb.
:-( tamam, asıl mesele problemin float ile çözülmesidir.
çünkü https://www.mql5.com/ru/docs/math/mathfloor
105143
MathFloor( 105143 ) = 105142'den sonra
105143.00000000000000000000001 olsa bile
Ama sanırım neden bahsettiğini anlıyorum.
olmasa da
neden MathFloor( 105143 ) = 105142 Anlayamıyorum ... ( 105143 yoksa, ancak 105142.999999999999999999999999 )
neden o zaman...
neden MathFloor( 105143 ) = 105142 Anlayamıyorum ... ( 105143 yoksa, ancak 105142.999999999999999999999999 )
void OnStart ()
{
double Price1 = 105143 ;
double Price2 = Price1 - 1 e- 11 ;
Print (TOSTRING(Price1) + TOSTRING( MathFloor (Price1)) +
TOSTRING(Price2) + TOSTRING( MathFloor (Price2)) +
TOSTRING(Price1 > Price2));
}
Çift sayıların çıktısını tam anlamıyla almayın. Yüzmeye geçmek daha da fazla tuzaktır.