Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 84

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
Puoi fornire il codice di riferimento per dimostrarlo?
Risultato(rilascio)
E questo è ciò che si ottiene quando lo si esegue in modalità di profiling
Sfortunatamente, non ci si può fidare del profiler in questo caso.
Risultato ( rilascio )
HH E questo è ciò che ottengo, se lo eseguo in modalità di profiling
Non solo è impossibile credere al profiler in questo caso, ma Bench1 gira 10 volte più velocemente che nella versione Release!
Grazie per questo.
Risultato ( rilascio )
Testato con Expert Advisor per strategia.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
Un altro 2 volte più veloce (ma non più di 10 volte più veloce, il che è certamente dovuto all'ottimizzazione del compilatore).
Testato con un consulente strategico.
2018.04.16 14:24:28.049 Core 1 OnTester result 39725470 (µs bench1)
2018.04.16 14:26:14.629 Core 1 OnTester result 39270950 (µs bench2)
2018.04.16 14:27:13.566 Core 1 OnTester result 20467067 (µs bench3)
È ancora 2 volte più veloce (ma non più di 10 volte più veloce, il che è ovviamente dovuto all'ottimizzazione del compilatore).
Si misura il tempo ancora per generare tick, non solo il calcolo di OnTick.
Qui c'è solo la misura OnTick
Panchina1
Panchina3
Di un fattore tre. Non si può ottenere 10 volte più veloce a causa delle chiamate multiple alla funzione BenchX. StringToDouble2 stesso è infatti 10 volte più veloce.
Si misura il tempo ancora per generare i tick, non solo per calcolare OnTick.
...Hai ragione.
Sono davvero sorpreso che sia 10 volte più veloce, ma la tua funzione può essere usata solo quando sai che la stringa contiene un valore doppio valido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Grazie, ma questo script salva anche in modo errato.
Sul mio monitor, la limitazione sul lato destro è segnata da una linea verticale, e lo screenshot è ben oltre quella linea.
Citerò la risposta del servicedesk:
In questo caso, la guida ChartScreenShot dovrebbe essere presa alla lettera
align_mode=ALIGN_RIGHT
[Modalità di output di uno screenshot stretto. Il valore dell'enumerazione ENUM_ALIGN_MODE. ALIGN_RIGHT indica l'allineamento al bordo destro (uscita dalla fine). ALIGN_LEFT specifica l'allineamento a sinistra.
Significa che quando si specifica l'allineamento ALIGN_RIGHT il grafico verrà fatto scorrere forzatamente verso il bordo destro, il che equivale a eseguire il comando
Questo comportamento è stato stabilito molti anni fa (quindi storicamente) quando non c'era ancora la funzione ChartNavigate(). Impostando align_mode=ALIGN_RIGHT si garantiva che esattamente il bordo destro del grafico sarebbe stato rimosso.
Quando è stata aggiunta la funzione ChartNavigate(), il comportamento della funzione ChartScreenShot non è stato cambiato.
Quindi, se vuoi ottenere l'effetto desiderato (il grafico non verrà fatto scorrere verso il bordo destro) - usa il valore ALIGN_LEFT per il parametro align_mode.
la vostra funzione può essere usata solo quando sapete che la stringa contiene un valore doppio valido.
2018.04.16 17: 14: 16.183 170952_180416 (EURUSD, H1) StringToDouble2 (abcdef) = 5456784.0
Corretto, ora funziona come l'originale
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Caratteristiche del linguaggio mql5, sottigliezze e trucchi
fxsaber, 2018.04.16 13:23
Se si rimuove la const evidenziata, il tempo di esecuzione della funzione raddoppia. Questo dimostra che il compilatore non crea sempre un codice ottimale e ha bisogno di questo tipo di suggerimenti.
Se rimuoviamo la cost marcata, il tempo di esecuzione della funzione raddoppierà. Indica che il compilatore non crea sempre un codice ottimale e ha bisogno di questo tipo di suggerimenti.
Interessante, grazie.
Per favore non modificare il tuo codice una volta che hai già ricevuto una risposta, non ho ricevuto la notifica che l'hai aggiornato.
Se rimuoviamo la cost marcata, il tempo di esecuzione della funzione raddoppierà. Indica che il compilatore non crea sempre un codice ottimale e ha bisogno di questo tipo di suggerimenti.
Molto interessante...
Qualche idea sul perché questo accade?
Qual è il meccanismo?
Per determinare la larghezza di uno screenshot preso con MQL5 che includa tutte le barre per un certo periodo, viene offerta la soluzione seguente.
Una particolarità si è rivelata essere il fatto che la larghezza dello screenshot deve essere corretta a diverse approssimazioni del grafico.
I "coefficienti" effettivi si sono rivelati diversi (per me in particolare) per la variante con e senza la scala.