Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 88

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
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2016.07.19 12:41
Con l'esempio di ORDER_TICKET l'idea dovrebbe essere chiara.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
OrderCloseTime () in MQL5?
fxsaber, 2018.07.18 03:51
Così possiamo controllare se la tabella della storia corrente, precedentemente generata attraverso la funzione HistorySelect, contiene il record di cui abbiamo bisogno. Lo stesso vale per DEAL_TICKET.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Salvare il livello di prezzo della posizione tramite compensazione (è possibile?)
fxsaber, 2018.07.17 20:45
Non tutti sanno che la funzione GetMicrosecondCount, a differenza di GetTickCount, è legata all'ora locale del computer. Ciò significa che se questa ora cambia (ad esempio a causa della sincronizzazione con l'ora di Internet), anche i valori GetMicrosecondCount cambieranno di un valore corrispondente.Questo dovrebbe essere tenuto a mente se questa funzione è usata per misurare intervalli di tempo; infatti, non dovrebbe essere usata per questo scopo. GetTickCount, d'altra parte, non ha questi problemi.
Come dimostrazione, potete eseguire questo codice e cambiare l'ora del computer mentre è in esecuzione.
Forse non tutti sanno che la funzione GetMicrosecondCount, a differenza di GetTickCount, è legata all'ora locale del computer.
Non lo sapevo, grazie!
Una variante della funzione GetTickCount che evita gli overflow (a condizione che l'intervallo tra le chiamate alla funzione non superi i 50 giorni)
Non tutti sanno che la funzione GetMicrosecondCount, a differenza di GetTickCount, è legata all'ora locale del computer. Ciò significa che se questa ora cambia (ad esempio a causa della sincronizzazione con l'ora di Internet), anche i valori GetMicrosecondCount cambieranno di un valore corrispondente.Questo dovrebbe essere tenuto a mente se questa funzione è usata per misurare intervalli di tempo; infatti, non dovrebbe essere usata per questo scopo. GetTickCount, d'altra parte, non ha questi problemi.
Per dimostrarlo, potete eseguire questo codice e cambiare l'ora del computer durante l'esecuzione del codice.
Beh, questo è un bug che gli sviluppatori dovrebbero risolvere. La funzione quindi non corrisponde alla descrizione:
Функция GetMicrosecondCount() возвращает количество микросекунд, прошедших с момента начала работы MQL5-программы.
Il valore di questa funzione rispetto a GetTickCount è di microsecondi, non di millisecondi (precisione 1000 volte superiore). È anche non gonfiabile.Ecco perché non è del tutto corretto parlare della sua sostituibilità.
Non tutti sanno che la funzione GetMicrosecondCount, a differenza di GetTickCount, è legata all'ora locale del computer. Ciò significa che se questa ora cambia (ad esempio a causa della sincronizzazione con l'ora di Internet), anche i valori GetMicrosecondCount cambieranno di un valore corrispondente.Questo dovrebbe essere tenuto a mente se questa funzione è usata per misurare intervalli di tempo; infatti, non dovrebbe essere usata per questo scopo. GetTickCount, d'altra parte, non ha questi problemi.
Per dimostrarlo, possiamo eseguire questo codice e cambiare il tempo del computer durante la sua esecuzione.
Un'altra osservazione importante - ne consegue che è assolutamente inappropriato usare la funzione GetTickCount invece di GetMicrosecondCount.
Penso che sarà una sorpresa per molte persone.
Esaminando il funzionamento di un semplice script:
Il risultato del lavoro:
possiamo trarre le seguenti conclusioni:
Bene, allora questo è un bug che gli sviluppatori farebbero bene a risolvere. Perché allora la funzione non corrisponde alla descrizione:
Il valore di questa funzione rispetto a GetTickCount è microsecondi, non millisecondi (1000 volte più preciso). È anche non gonfiabile.Ecco perché non è del tutto corretto parlare della sua sostituibilità.
Se si misura il tempo di esecuzione di alcune sezioni del programma, le fluttuazioni delle prestazioni del sistema livellano tutta questa precisione e c'è un errore in millisecondi o anche decine di millisecondi. Se si misurano segmenti molto piccoli con durata inferiore a 1 millisecondo, allora che senso ha. La quota di errore di misurazione sarà molto alta.
Non ho ancora visto alcun uso pratico dei microsecondi. Se si misura il tempo di esecuzione di alcune sezioni del programma, le fluttuazioni delle prestazioni del sistema livelleranno tutta questa precisione, e l'errore è sui millisecondi, o anche decine di millisecondi. Se si misurano segmenti molto piccoli con durata inferiore a 1 millisecondo, allora qual è il punto. L'errore di misurazione sarà molto alto.
Un'altra importante osservazione suggerisce che usare la funzione GetTickCount invece di GetMicrosecondCount è abbastanza inappropriato.
Penso che sarà una sorpresa per molti programmatori.
Esaminando il funzionamento di un semplice script:
si possono trarre le seguenti conclusioni:
L'argomento significativo