Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 232
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
Spiegazione della definizione di DBL_EPSILON:
Questa è una spiegazione sbagliata, perché
Un altro modo per spiegare il significato di DBL_EPSILON:
DBL_EPSILON è solo la dimensione dello spazio tra i doppi consecutivi in [1,2].
https://www.exploringbinary.com/the-spacing-of-binary-floating-point-numbers/
https://en.wikipedia.org/wiki/Machine_epsilon
Per comprendere meglio DBL_EPSILON, si consideri l'incremento di un contatore a virgola mobile:
Se il valore iniziale del contatore è 1,0, la dimensione del passo (epsilon) del contatore sarà 2,220446049250313e-16 (DBL_EPSILON) ≈ 2 alla 16a posizione decimale.
/* 1.0000000000000002 1.0000000000000004 1.0000000000000007 1.0000000000000009 1.000000000000001 1.0000000000000013 1.0000000000000016 1.0000000000000018 1.000000000000002 1.0000000000000022 */
Se il valore iniziale del contatore è 1024, la dimensione del passo (epsilon) del contatore sarà 2,27373636754432321e-13 (1024 * DBL_EPSILON) ≈ 2 al 13° decimale.
/* 1024.0000000000002 1024.0000000000005 1024.0000000000007 1024.000000000001 1024.0000000000011 1024.0000000000014 1024.0000000000016 1024.0000000000018 1024.000000000002 1024.0000000000023 */
Se il valore iniziale del contatore è 4503599627370496 (2^52), la dimensione del passo del contatore sarà 1,0 (2^52 * DBL_EPSILON)= 1. A questo intervallo, un doppio si comporta come un contatore intero, nessuna frazione può essere rappresentata.
/* 4503599627370497.0 4503599627370498.0 4503599627370499.0 4503599627370500.0 4503599627370501.0 4503599627370502.0 4503599627370503.0 4503599627370504.0 4503599627370505.0 4503599627370506.0 */
Si può notare che i numeri più piccoli hanno spazi minori tra loro, mentre i numeri più grandi hanno spazi maggiori tra loro.
Pertanto, DBL_EPSILON è il tasso di errore relativo. relativo significa relativo alla grandezza del numero.
a 1,0, l'errore assoluto = 1 * 2,2204460492503131e-016 (DBL_EPSILON).
a d, l'errore assoluto ≈ d * DBL_EPSILON.
(DBL_EPSILON è un tasso di riferimento a 1,0, come il tasso di interesse annuale della banca, ed è pari a 2^-52).
Una nota a margine: se si cerca di stampare 1024.0000000000003, verrà stampato 1024.0000000000002 (arrotondando al numero rappresentabile più vicino), perché 1024.0000000000003 non è un numero rappresentabile (numero fp inesistente).
Questo si chiama errore di rappresentazione:
I numeri rappresentabili precedenti/successivi vengono raggiunti attraverso la manipolazione dei bit (enum come prima: DoubleAdvance(value, -1)) o utilizzando DBL_EPSILON:
DBL_EPSILON è utilizzato principalmente per stimare (o correggere) gli errori di arrotondamento di fp dopo operazioni matematiche sui doppi (analisi numerica):
|risultato vero - risultato fp| / risultato vero <= DBL_EPSILON
La chiamata OnTester() viene disabilitata nel tester MT5 quando è presente un algoritmo di ottimizzazione genetica e NON un criterio di ottimizzazione personalizzato?
Penso di no. Ma mi piacerebbe... Preferibilmente senza analizzare la configurazione.
PS. CARAUL!!! Tutto è andato! Ad ogni passaggio di ottimizzazione (dovrebbe/non dovrebbe) - viene chiamato OnTester(), che può aumentare di molto il tempo totale di ottimizzazione!
Aiuto a chi può... )))))
Nella mia ricerca mi sono imbattuto in un'interessante funzione non documentata
è possibile nascondere i commenti di input per una finestra di dialogo
post originale qui
https://www.mql5.com/ru/forum/1271#comment_9019
Nella mia ricerca mi sono imbattuto in un'interessante funzione non documentata
è possibile nascondere i commenti di input per una finestra di dialogo
post originale qui
https://www.mql5.com/ru/forum/1271#comment_9019
In Tester, la tabella Cronologia viene sovrascritta solo in due casi.