Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 146
![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
È stato chiuso fin dal primo post. Quando il numero minimo viene moltiplicato per qualcosa di meno di uno, si ottiene zero.
come sarebbe il codice corretto?
Come sarà il codice giusto?
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Caratteristiche del linguaggio mql5, sottigliezze e trucchi
fxsaber, 2019.10.28 11:42
compilazione: espressione non booleana
non è una buona opzione per me
Non lo faccio io.
Per gli esteti, potete creare una struttura DOUBLE con gli operatori appropriati. Ma tutto questo ha poco a che fare con la pratica. Nell'esempio pratico originale.
ForUM sul trading, sistemi di trading automatico e test di strategia
Caratteristiche del linguaggio mql5, complessità e tecniche
fxsaber, 2019.10.28 07:24
Un modo per farsi prendere dalla divisione per zero, anche con un assegno.L'errore è infatti comprensibile. Ma mentre si scrive codice come questo, non è sempre ovvio che un tale controllo non è sufficiente per evitare la divisione per zero.
Avete solo bisogno di azzerare l'elemento dell'array che viene creato. È l'assenza di inizializzazione che causa le collisioni in questo caso. Ecco perché ho semplicemente fatto l'azzeramento nel mio codice. Non voglio preoccuparmi della visione generale.
compilazione: espressione non booleana
non è una buona opzione per me
C'è qualcosa che non va in te.
È più confuso sul perché dividere per zero dà un'eccezione fpu, almeno per me.
Qualcosa ti sta portando nella direzione sbagliata.
fxsaber:
Nessun problema qui
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) 2.224851351121351e-308 --> true
2019.10.28 20:45:47.010 tst1 (EURUSD,H4) -nan --> true
UPD:
controllare l'inf
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 1. dev = inf ---> false
2019.10.28 22:04:00.163 tst1 (EURUSD,H4) 2. dev = inf ---> true
Non c'è nessun problema qui.
Googlato "C++ double zero divide", il tuo codice non funzionerà per i numeri non normalizzati, hai bisogno di questo:
script di meditazione ))))
Argomento interessante. Ho trovato qualcosa qui. Particolarmente degno di nota il blocco della teoria.
abs(u - v)/abs(u) <= epsilon && abs(u - v)/abs(v) <= epsilon; // (4)
abs(u - v)/abs(u) <= epsilon || abs(u - v)/abs(v) <= epsilon; // (5)
In questo modo tutte le condizioni di underflow e overflow possono essere protette in modo sicuro. Tuttavia, quanto sopra non funzionerà quando v o u è zero. In questi casi la soluzione è ricorrere a un algoritmo diverso, ad esempio(1).
A cosa? Tutto quello che vedo è un avvertimento idiota, se è assolutamente valido.
Conversioni booleane
Un prvalore di tipo integrale, a virgola mobile, un'enumerazione nonscoped, un puntatore e un puntatore a membro può essere convertito in un prvalore di tipo bool.
Il valore zero (per gli integrali, i floating-point e le enumerazioni nonscoped) e il puntatore nullo e i valori nulli del puntatore a membro diventano falsi. Tutti gli altri valori diventano veri.
In generale, è pura ignoranza scrivere queste IsEqual(), IsInf() e IsZerro(). Non entrerò nella discussione.
A cosa? Tutto quello che vedo è un avvertimento idiota, se è perfettamente valido.
In generale, è una completa ignoranza scrivere tali IsEqual(), IsInf(), IsZerro(). Non entrerò nella discussione.
IsInf() e IsNaN() funzionano,
IsEqual() e IsZerro() sono discutibili, cercate su Google da alcune fonti come "trucco per il doppio".