Características del lenguaje mql5, sutilezas y técnicas - página 106

 
Alain Verleyen:
No funciona porque la variable global está emulada con MT5 Tester. También utilizan TimeCurrent ().

Lo siento, me confundí con MT4. Funciona en MT4, pero no en MT5.

 
fxsaber:


Aplicación


HH ¿Hay alguna manera más fácil de obtener la hora local del PC en el Probador?

No es racional de esta manera, sólo tiene que obtener el tiempo real una vez y luego calcular la diferencia a través de GetTickCount o GetMicrosecondCount

 
Alexey Navoykov:

Es necesario obtener el tiempo real sólo una vez y luego usar GetTickCount o GetMicrosecondCount para calcular la diferencia.

Sí, estoy de acuerdo.

 
¿Y el código?
 
Alexei Tarabanov:
¿Y el código?
 
Alexey Navoykov:

Es necesario obtener el tiempo real sólo una vez y luego usar GetTickCount o GetMicrosecondCount para calcular la diferencia.

La densidad de tiempo en el probador es bastante diferente. No funcionará.

 
Alexei Tarabanov:
¿Y el código?

Actualizado.

 
fxsaber:

Actualizado.

GetTickCount debe considerar el desbordamiento
 
TheXpert:
GetTickCount debe ser capaz de tener en cuenta el desbordamiento

Si se resta un UINT a otro UINT, el resultado siempre será correcto, aunque haya un desbordamiento.

Ilustración

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

registro

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
Si restas otro UINT de UINT, el resultado siempre será correcto, incluso en caso de desbordamiento.

Probablemente, se trataba de que una pasada puede durar más de ~50 días (entonces GetTickCount pasa por un ciclo completo). Pero esto está fuera del ámbito de la práctica.

Razón de la queja: