![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
VBAG dai un'occhiata a questo script
prezzo = 1,1111
ma = 1,11110001
Quando è normalizzato a 8 cifre, il prezzo è corretto. Normalizzando a meno cifre si otterrà un risultato uguale - errato. Questo è il modo in cui si ottiene la massima precisione.
In generale, senza normalizzare ma > il prezzo è anche la cosa giusta da fare. Perché raggiungere la massima precisione quando è già presente, e già si sa che è maggiore di quella ottenibile?
La normalizzazione a 9 cifre non funziona. L'impressione è che il prezzo sia una specie di 9 cifre e l'indicatore ne abbia 8 o viceversa (non ricordo), insomma è coperto dal mistero dell'ignoto.
Sì, molto probabilmente, è in NormalizeDouble stesso conta solo fino a 8 cifre. Ti dico che è una funzione ridicola, non importa come la giri.
E in forma semplificata funziona velocemente come ComparePrice:
E nella sua forma originale, è solo una canzone :)
O ComparePrice è anche adatto a confrontare qualsiasi numero con qualsiasi precisione?
O ComparePrice è anche adatto a confrontare qualsiasi numero con qualsiasi precisione?
Certo! Se la precisione è nota, come nel caso dei valori di scambio. Punto fisso.
Solo è necessario spiegarlo a numerosi autori di argomenti "sul confronto dei doppi".
Ecco perché ho proposto un modo _universale_ (ma tutt'altro che ottimale) di confrontare.
E funziona. Lentamente ma in modo affidabile. E in tutti i casi.
E quando apparirà un argomento "Sull'ottimizzazione del confronto dei doppi" potremo svilupparlo ;)
La normalizzazione dei prezzi è necessaria da qualche parte?
È scritto nella documentazione che i prezzi nelle richieste commerciali devono essere normalizzati.
Nel ramo 'Storia non normalizzata e posizioni di apertura', dice quanto segue:
Irtron, ho scelto la tua variante, mi è piaciuta molto. L'ho corretto un po' per i casi generali e l'ho controllato:
int ComparePrice(double a, double b, double digit)
{
a -= b;
b = cifra;
se (a > b)
ritorno (1);
se (a < -b)
ritorno (-1);
ritorno (0);
}
Grazie.
Cifra=0 causerà problemi.
Qualsiasi cifra causerà problemi. Non capisco cosa sia la cifra e a cosa serva la modifica.
Inoltre la funzione è più lenta di una singola chiamata aNormalizeDouble().
Qual è l'argomento del confronto tra funzioni con funzionalità diverse? Una semplificata (inattuabile, però), ora è NormalizeDouble.
Cosa e a chi vuoi dimostrare con una così palese... (inserisci la tua parola)?