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.