Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 106

 
Alain Verleyen:
Non funziona perché la variabile globale è emulata con MT5 Tester. Anche loro usano TimeCurrent ().

Scusa, mi sono confuso con MT4. Funziona in MT4, ma non in MT5.

 
fxsaber:


Applicazione


HH C'è un modo più semplice per ottenere l'ora locale del PC nel Tester?

Non è razionale in questo modo, dovete solo ottenere il tempo reale una volta e poi calcolare la differenza tramite GetTickCount o GetMicrosecondCount

 
Alexey Navoykov:

È necessario ottenere il tempo reale solo una volta e poi usare GetTickCount o GetMicrosecondCount per calcolare la differenza.

Sì, sono d'accordo.

 
E il codice?
 
Alexei Tarabanov:
E il codice?
 
Alexey Navoykov:

È necessario ottenere il tempo reale solo una volta e poi usare GetTickCount o GetMicrosecondCount per calcolare la differenza.

La densità temporale nel tester è completamente diversa. Non funzionerà.

 
Alexei Tarabanov:
E il codice?

Aggiornato.

 
fxsaber:

Aggiornato.

GetTickCount dovrebbe considerare l'overflow
 
TheXpert:
GetTickCount dovrebbe essere in grado di tenere conto dell'overflow

Se si sottrae un altro UINT da un UINT, il risultato sarà sempre corretto, anche se c'è un overflow.

Illustrazione

void OnStart()
  {
//---
   uint first=UINT_MAX-5;
   uint second=first+100;
   PrintFormat("%u - %u = %u",second,first,second-first);
  }

log

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
Se si sottrae un altro UINT da UINT, il risultato sarà sempre corretto, anche in caso di overflow.

Probabilmente, era inteso che un passaggio può durare più di ~50 giorni (poi GetTickCount passa attraverso il ciclo completo). Ma questo è fuori dal campo della pratica.

Motivazione: