L'errore è chiaro nei fatti. Ma mentre si scrive codice come questo, non è sempre ovvio che un tale controllo non è sufficiente per evitare la divisione per zero.
Basta non aspettarsi che se non c'è un valore, è necessariamente 0 e quindi falso se non è una variabile di tipo bool. Anche una conversione esplicita al tipo bool non lo salverà.
Semplicemente non vi aspettate che se non c'è un valore, è necessariamente 0 e quindi è falso se non è una variabile di tipo bool. Anche la conversione esplicita al tipo bool non salverà.
Beh, non tutti sanno che sono come quella scimmia: "Sono debole negli occhi quando sono vecchio".
Credo di sì, ma per qualche ragione ha funzionato senza divisione per 0. E in generale, il mio messaggio era che non dovremmo controllare qualsiasi variabile per 0 come un booleano per false.
Per ridurre il numero di overshoots di ottimizzazione, uso due metodi per creare una scala non lineare.
Enumerare la durata in ore con sufficiente precisione:
enum eHours { _0, _4, _6, _8, _12, _16, _24, _32, _48, _64, _96, _128 }; input eHours TrendHours = _8; int eHours2Hours(eHours e) { switch (e) { case _0: return 0; case _4: return 4; case _6: return 6; case _8: return 8; case _12: return 12; case _16: return 16; case _24: return 24; case _32: return 32; case _48: return 48; case _64: return 64; case _96: return 96; case _128: return 128; default: return -1; } }Per enumerare, per esempio, il passo SAR con una precisione di 2 cifre (~1%):
L'ottimizzazione da 0,0001 a 0,99 richiederebbe quasi 10K passi. L'utilizzo dei codici 001-299 nell'ottimizzazione richiederebbe meno di 300 passi.
L'errore è chiaro nei fatti. Ma mentre si scrive codice come questo, non è sempre ovvio che un tale controllo non è sufficiente per evitare la divisione per zero.
Una scusa per non usare l'operatore ternario.
Per se simile, naturalmente.
Basta non aspettarsi che se non c'è un valore, è necessariamente 0 e quindi falso se non è una variabile di tipo bool. Anche una conversione esplicita al tipo bool non lo salverà.
Funziona così senza errori.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Peculiarità di mql5, consigli e trucchi
Alexey Viktorov, 2019.10.28 10:22
Semplicemente non vi aspettate che se non c'è un valore, è necessariamente 0 e quindi è falso se non è una variabile di tipo bool. Anche la conversione esplicita al tipo bool non salverà.
Funziona così senza errori.
Non riesco a vedere il punto culminante. Qual è l'errore?
Hai scritto "==", dovrebbe essere "!=".
È sottolineato "giallo molto pallido" :)
Hai scritto "==", dovrebbe essere "!="
È sottolineato "giallo molto pallido" :)
Beh, non tutti sanno che sono come quella scimmia: "Sono debole negli occhi quando sono vecchio".
Credo di sì, ma per qualche ragione ha funzionato senza divisione per 0. E in generale, il mio messaggio era che non dovremmo controllare qualsiasi variabile per 0 come un booleano per false.
Credo di sì, ma per qualche motivo ha funzionato senza divisione per 0.
Perché TickValue non è zero.