![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Il galleggiamento è la castrazione dei numeri e non offre alcun vantaggio. Meglio affrontare tutte le perdite nelle conversioni e usare la massima precisione possibile - il doppio.
Grazie. Cercherò di capire dove era il mio errore. Nel frattempo, il galleggiante funziona. Non sono abituato a smettere. Ma questo errore mi ha lasciato perplesso.
Personalmente, non uso mai nei calcoli e nei confronti di numeri il metodo che confronta la differenza con qualche valore minimo accettato, lavoro sempre con la massima precisione possibile fino al 16° segno, e solo nell'ultima operazione faccio la normalizzazione. Se gestite correttamente il doppio non ci sono problemi, cosa che vi consiglio di fare, altrimenti incontrerete problemi di distorsione dei risultati associati a una perdita di precisione in uno dei passi dei calcoli/conversioni.
Sta a te, ma nota che TUTTE le funzioni matematiche standard lavorano con numeri doppi e danno risultati doppi. Applicare queste funzioni a numeri float è ancora una conversione interna al doppio, quindi in ogni caso, si perde precisione e validità nei risultati ottenuti.
Personalmente, non uso mai nei calcoli e nei confronti di numeri il metodo che confronta la differenza con qualche valore minimo accettato, lavoro sempre con la massima precisione possibile fino al 16° segno, e solo nell'ultima operazione faccio la normalizzazione. Se lavorate con il doppio correttamente nessun problema, cosa che vi consiglio di fare, altrimenti incontrerete problemi di distorsione dei risultati associati a una perdita di precisione in uno dei passi dei calcoli/conversioni.
il prezzo di valutazione nel 2017 è sfacciatamente corretto
il prezzo di valutazione nel 2017 è sfacciatamente corretto
è così che dovrebbe essere
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
dovrebbe essere così.
double AUTOPRICE=MathFloor( NormalizeDouble(Averab,2) )*_Point;
Hai cambiato il tuo codice diverse volte.
Ho fatto la stessa cosa, ho sperimentato, ho capito cosa sono double e int, ma quando ho calcolato esplicitamente non erano ciò di cui avevo bisogno.
La prima riga è quella che hai suggerito tu.
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 18:24:59.133 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30: FLOAT askP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
quindi è giusto105143.5000000000 arrotondato per difetto 43 è...
(46-41)/2 = 2,5, arrotondato per difetto = 2
quindi è giusto105143.5000000000 arrotondato per difetto 43 è...
(46-41)/2 = 2,5, arrotondato per difetto = 2
Proprio così,
ma con diversi spread (2,3,4,5,6,7) l'arrotondamento verso il basso è diverso e a volte non del tutto preciso.