Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 165
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
Sì, ho la storia che legge presente.
Forum sul trading, sistemi di trading automatico e test di strategia
Biblioteche: Easy Canvas
Nikolai Semko, 2020.02.17 05:15
Voglio chiarire un punto importante per i programmatori interessati quando si utilizza il kanvas in modalità tester.
Un noto programmatore di questa comunità è venuto da me con questa domanda:
- Perché in modalità tester il mio pannello, creato sugli oggetti, viene ridisegnato molto più velocemente che disegnato su tela, mentre in modalità normale il mio pannello viene disegnato a velocità normale su tela?
Sono riuscito a capire la ragione del problema e la sua soluzione.
Il problema è che il ridisegno degli oggetti va insieme al ridisegno di tutto lo schermo, mentre lo schermo nel tester viene ridisegnato non più frequentemente di 30 fotogrammi al secondo.
Gli oggetti sono in definitiva la stessa tela (interna), ma quando si cambiano le proprietà dell'oggetto, la tela dell'oggetto non viene generata (non ricalcolata), ma generata solo quando lo schermo viene aggiornato (ChartRedraw), il che avviene nel tester (e anche in modalità normale) non più spesso di quanto il nostro occhio possa distinguere i cambiamenti, cioè non più spesso di ~ 32 frame al secondo.
Supponiamo che il pannello cambi ogni tick. Allora la tela di default sarà anche ridisegnata ogni tick, ma il ridisegno nel tester non è ancora più frequente di ~30 msec (~30 fps).
In altre parole, la tela sarà ricomputata molto più frequentemente di quanto sia effettivamente visualizzata sullo schermo, il che si traduce in un uso sproporzionato delle risorse.
La soluzione a questo problema sarebbe assicurarsi che la tela sia ricalcolata e ridisegnata non più spesso di ogni 15-30 millisecondi di tempo del computer, e allora non ci saranno cicli inutili di ricalcolo a vuoto.
Per esempio, così:
Se, per esempio, voglio creare il file "EURUSD.txt" (simboli grandi) e c'è già "eurusd.txt" (simboli piccoli) sul disco, il file avrà lo stesso nome di prima.
Inoltre, quando salvo EURUSD TicksLongOpt.set, eurusd tickslongopt.set viene salvato. Devo rinominarlo dopo. Ci sono un sacco di piccole cose fastidiose come questa.
Inoltre, quando salvo EURUSD TicksLongOpt.set, eurusd tickslongopt.set viene salvato. Devo rinominarlo dopo. Devo rinominarlo dopo. Ci sono molte piccole cose così fastidiose.
Penso che se prima cancello e poi creo, tutto andrà bene.
Penso che se prima cancelli e poi crei, andrai bene.
No, intendo la creazione di un nuovo file, in particolare quando si salva dalla finestra di dialogo del terminale. Se non funziona per tutti, allora dipende da qualcos'altro. Ho Win7, semmai.
No, intendo la creazione di un nuovo file, esattamente quando si salva dalla finestra di dialogo del terminale. Se non funziona per tutti, allora dipende da qualcos'altro. Ho Win7, semmai.
Intendevo le funzioni FileOpen e FileSave.
Intendevo le funzioni FileOpen e FileSave.
Sì, solo ora mi sono reso conto che è fuori luogo, l'argomento è il linguaggio...
Ordinamento facile di una serie di strutture
Applicazione
Risultato
Non funziona, puoi aggiornarlo? Le dichiarazioni di template non sono permesse nelle classi locali TestarrSort.mq5 81 3
Non funziona, puoi aggiornare? Scrive che le dichiarazioni di template non sono permesse nelle classi locali TestarrSort.mq5 81 3
Purtroppo la lingua è stata tagliata. Questo codice non funziona.
Ma si può provare una variante alternativa.
SZZ Ecco un altro esempio di utilizzo.