Características da linguagem mql5, subtilezas e técnicas - página 106

 
Alain Verleyen:
Não funciona porque a variável global é emulada com o MT5 Tester. Eles também usam o TimeCurrent ().

Desculpa, confundido com o MT4. Funciona em MT4, mas não em MT5.

 
fxsaber:


Aplicação


HH Há uma maneira mais fácil de obter a hora local do PC no Testador?

Não é racional desta forma, você só precisa obter o tempo real uma vez e depois calcular a diferença via GetTickCount ou GetMicrosecondCount

 
Alexey Navoykov:

Você precisa obter tempo real apenas uma vez e depois usar GetTickCount ou GetMicrosecondCount para calcular a diferença.

Sim, eu concordo.

 
E o código?
 
Alexei Tarabanov:
E o código?
 
Alexey Navoykov:

Você precisa obter tempo real apenas uma vez e depois usar GetTickCount ou GetMicrosecondCount para calcular a diferença.

A densidade de tempo no testador é completamente diferente. Não vai funcionar.

 
Alexei Tarabanov:
E o código?

Actualizado.

 
fxsaber:

Actualizado.

GetTickCount deve considerar o transbordo
 
TheXpert:
GetTickCount deve ser capaz de levar em conta o transbordo

Se um UINT for subtraído de outro UINT, o resultado será sempre correcto, mesmo que haja um transbordo.

Ilustração

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

tronco

2018.10.18 10:48:12.775 TestUint (EURUSD,M1)    94 - 4294967290 = 100
 
Slava:
Se você subtrair outro UINT do UINT, o resultado será sempre correto, mesmo em caso de transbordamento.

Provavelmente, significa que uma passagem pode durar mais de ~50 dias (depois GetTickCount passa por um ciclo completo). Mas isto está fora do reino da prática.