mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 106

 
알랭 벌리앙 :
전역 변수가 MT5 Tester로 에뮬레이트되기 때문에 작동하지 않습니다. 그들은 또한TimeCurrent()를 사용 합니다.

죄송합니다. MT4와 혼동됩니다. MT4에서는 작동하지만 MT5에서는 작동하지 않습니다.

 
fxsaber :


애플리케이션


위협 테스터에서 컴퓨터의 현지 시간을 더 쉽게 알 수 있는 방법이 있습니까?

이 형식에서는 비합리적입니다. 실시간으로 한 번만 얻은 다음 GetTickCount 또는 GetMicrosecondCount 를 사용하여 차이를 계산해야 합니다.

 
알렉세이 나보이코프 :

이 형식에서는 비합리적입니다. 실시간으로 한 번만 얻은 다음 GetTickCount 또는 GetMicrosecondCount를 사용하여 차이를 계산해야 합니다.

그래, 난 동의.

 
그리고 코드는?
 
알렉세이 타라바노프 :
그리고 코드는?
 
알렉세이 나보이코프 :

이 형식에서는 비합리적입니다. 실시간으로 한 번만 얻은 다음 GetTickCount 또는 GetMicrosecondCount를 사용하여 차이를 계산해야 합니다.

테스터의 시간 밀도는 완전히 다릅니다. 그것은 가지 않을거야.

 
알렉세이 타라바노프 :
그리고 코드는?

업데이트되었습니다.

 
GetTickCount에서는 오버플로를 고려해야 합니다.
 
더엑스퍼트 :
GetTickCount에서는 오버플로를 고려해야 합니다.

한 UINT에서 다른 UINT를 빼면 오버플로가 발생하더라도 결과는 항상 정확합니다.

삽화

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

통나무

 2018.10 . 18 10 : 48 : 12.775 TestUint (EURUSD,M1)     94 - 4294967290 = 100
 
슬라바 :
UINT에서 다른 UINT를 빼면 오버플로가 발생하더라도 결과는 항상 정확합니다.

아마도 한 번의 패스가 ~50일 이상 지속될 수 있다는 의미였을 것입니다(그런 다음 GetTickCount 는 전체 주기를 거칩니다). 그러나 이것은 실천의 영역이 아닙니다.