
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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));
diffusione:2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: DOPPIO askP2=105143 bidP2=105141 Averab2=105142.000000 AUTOPRICE=1.0514200000
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 AUTOPRICE=1.0514199734
diffusione:3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: DOPPIO askP2=105144 bidP2=105141 Averab2=105142.5000000000 AUTOPRICE=1.0514200000
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 AUTOPRICE=1.0514199734
diffusione:4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: DOPPIO askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: FLOAT askP=105145 bidP=105141 Averab=105143.0000000000 AUTOPRICE=1.0514299870
diffusione:5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: DOPPIO askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOPPIO TEST MATHFLOOR EURUSD,M30: DOPPIO askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
Il risultato è corretto. Averab2 < 105143.
Il risultato è corretto. Averab2 < 105143.
perché? perchéAverab2=105143.0000000000
Perché?Averab2=105143.0000000000
Forum sul trading, sistemi di trading automatico e test di strategia
Double vs FLOAT - errore MathFloor poco chiaro
fxsaber, 2017.02.26 08:27
La stampa del numero doppio non significa nulla. Se volete stampare il vero valore del doppio, dovete guardare i suoi byte.
Perché? PerchéAverab2=105143.0000000000
Ho capito. Grazie, ma questo per quanto riguarda il disadescamento.
Ma il valore reale all'interno del codice è lo stesso che dopo il disinnesco, l'ho controllato più di una volta,
Ho capito,
che il doppio 1 = 1,00000000000000000000000000000000112123515;
e così via.
:-( ok, la cosa principale è che il problema è risolto con float
perchéhttps://www.mql5.com/ru/docs/math/mathfloor
105143
dopo MathFloor(105143) =105142
anche se 105143.00000000000000000000001
ma credo di sapere di cosa stai parlando.
anche se nessun
perché MathFloor(105143) =105142 non riesco a capire... (a meno che non sia105143 ma105142.9999999999999999999999)
perché allora...
perché allora MathFloor(105143) =105142 non riesco a capire... (a meno che non sia105143, ma105142.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));
}
Non dovresti prendere i numeri doppi alla lettera. Passare al galleggiante è ancora più un'insidia.