Caractéristiques du langage mql5, subtilités et techniques - page 106

 
Alain Verleyen:
Cela ne fonctionne pas car la variable globale est émulée avec MT5 Tester. Ils utilisent également TimeCurrent ().

Désolé, j'ai confondu avec MT4. Fonctionne dans MT4, mais pas dans MT5.

 
fxsaber:


Application


HH Existe-t-il un moyen plus simple d'obtenir l'heure locale du PC dans le Testeur ?

Ce n'est pas rationnel de cette manière, il suffit d'obtenir le temps réel une fois et de calculer ensuite la différence via GetTickCount ou GetMicrosecondCount.

 
Alexey Navoykov:

Vous devez obtenir le temps réel une seule fois, puis utiliser GetTickCount ou GetMicrosecondCount pour calculer la différence.

Oui, je suis d'accord.

 
Et le code ?
 
Alexei Tarabanov:
Et le code ?
 
Alexey Navoykov:

Vous devez obtenir le temps réel une seule fois, puis utiliser GetTickCount ou GetMicrosecondCount pour calculer la différence.

La densité de temps dans le testeur est complètement différente. Ça ne marchera pas.

 
Alexei Tarabanov:
Et le code ?

Mis à jour.

 
fxsaber:

Mis à jour.

GetTickCount devrait tenir compte du dépassement de capacité
 
LeXpert:
GetTickCount devrait pouvoir prendre en compte le dépassement de capacité.

Si vous soustrayez un autre UINT d'un UINT, le résultat sera toujours correct, même s'il y a un dépassement.

Illustration

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

journal

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
Si vous soustrayez un autre UINT d'un UINT, le résultat sera toujours correct, même en cas de dépassement.

Probablement, cela signifiait qu'une passe pouvait durer plus de ~50 jours (alors GetTickCount passe par un cycle complet). Mais cela n'est pas du domaine de la pratique.