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

 
fxsaber :
실제 예에서 정수 비교의 뉘앙스

정확히 1초를 측정하기 위해 Sleep (1000)을 사용하시겠습니까?

그리고 프로세서의 타이머에 15ms의 오류가 있다는 사실을 알지 못합니까?

 
슬라바 :

Sleep(1000) 슬립으로 정확히 1초를 측정하시겠습니까?

그리고 프로세서의 타이머에 15ms의 오류가 있다는 사실을 알지 못합니까?


안녕하세요, 타이머 버퍼를 어떻게든 재설정할 수 있는지 알려주세요. 타이머 설정 오류를 제거하려면 ?

 
블라디슬라프 안드루셴코 :

안녕하세요, 타이머 버퍼를 어떻게든 재설정할 수 있는지 알려주세요. 타이머 설정 오류를 없애려면 ?

시스템 메시지 큐가 가득 차서 타이머 설정 오류가 발생합니다. 여기에는 여러 가지 이유가 있을 수 있습니다. 일반적으로 대기열 오버플로는 일시적인 현상입니다(일시적이지 않으면 컴퓨터에서 작업할 수 없습니다).

OnTick을 사용하여 타이머를 제어합니다. 타이머가 설정되어 있지 않으면 OnTick으로 설정하십시오.

그 동안 우리는 메시지 대기열의 상태에서 타이머 설정을 분리하는 작업을 하고 있습니다.

PS 시스템 타이머를 허용하고 타이머를 응용 프로그램으로 설정 - 이 질문은 서로 관련이 없습니다.

 
슬라바 :

Sleep(1000) 슬립으로 정확히 1초를 측정하시겠습니까?

아니요, 우리는 이 두 정수 비교 문자열에 대해 이야기하고 있습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2018.01.24 21:48

실제 예에서 정수 비교의 뉘앙스
 //  if (GetMicrosecondCount() > StartTime + 1000000) // Неправильно
   if ( GetMicrosecondCount () - StartTime > 1000000 ) // Правильно

언뜻 보면 두 줄 모두 동일한 결과를 제공해야 합니다. 하지만 그렇지 않습니다. 첫 번째는 때때로 필요한 것을 주지 않을 것입니다.

시간 경과에 따른 예는 설명 목적으로만 선택되었습니다.
슬라바 :

그리고 프로세서의 타이머에 15ms의 오류가 있다는 사실을 알지 못합니까?

여전히 GetTickCount를 사용하고 있다는 것이 이상합니다. 마이크로초 타이머가 밀리초 이상 느려지지 않는다는 것이 포럼(보기에 너무 게으름)에서 입증되었습니다. 동시에 야생 오류가 없습니다.

 
fxsaber :

아니요, 우리는 이 두 정수 비교 문자열에 대해 이야기하고 있습니다.

언뜻 보면 두 줄 모두 동일한 결과를 제공해야 합니다. 하지만 그렇지 않습니다. 첫 번째는 때때로 필요한 것을 주지 않을 것입니다.

시간 경과에 따른 예는 설명 목적으로만 선택되었습니다.

여전히 GetTickCount를 사용하고 있다는 것이 이상합니다. 마이크로초 타이머가 밀리초 이상 느려지지 않는다는 것이 포럼(보기에 너무 게으름)에서 입증되었습니다. 동시에 야생 오류가 없습니다.

나는 에 관한 것입니다 (1000)
 
슬라바 :

시스템 메시지 큐가 가득 차서 타이머 설정 오류가 발생합니다. 여기에는 여러 가지 이유가 있을 수 있습니다. 일반적으로 대기열 오버플로는 일시적인 현상입니다(일시적이지 않으면 컴퓨터에서 작업할 수 없습니다).

OnTick을 사용하여 타이머를 제어합니다. 타이머가 설정되어 있지 않으면 OnTick으로 설정하십시오.

그 동안 우리는 메시지 대기열의 상태에서 타이머 설정을 분리하는 작업을 하고 있습니다.

PS 시스템 타이머를 허용하고 타이머를 응용 프로그램으로 설정 - 이 질문은 서로 관련이 없습니다.


그게 바로 내가 하는 일이야

타이머 오류는 즉시 발생하지 않고 일정 시간 후에 발생합니다. 그리고 정확하게 오버플로 때문에 - 예를 들어 주문 내역 또는 현재 주문이 50개 이상인 데이터가 많은 경우.

그래서 버퍼 클리어 기능을 추가하면 어떨까 하는 생각이 들었습니다. 좋아, 난 내 방식대로 할거야.

 
슬라바 :
수면(1000)에 대해 이야기하고 있습니다.

네, 정수 비교 주제에 대해 말씀하셨습니다.

 
fxsaber :

네, 정수 비교 주제에 대해 말씀하셨습니다.

정수를 비교하는 문제는 존재하지 않습니다.

슬립 없이 GetMicrosecondsCount 없이 동일하게 표시

 
슬라바 :

정수를 비교하는 문제는 존재하지 않습니다.

슬립 없이 GetMicrosecondsCount 없이 동일하게 표시

 ulong GetMicrosecondCount2()
{
   static ulong StartTime = 0 ;
  
   if (StartTime)
    StartTime += 1000001 ;             // При повторном - добавляем больше "секунды"
   else
    StartTime = ULONG_MAX - 1000000 ; // При первом запуске возвращаем это "время"
    
   return (StartTime);
}

void OnStart ()
{
   const ulong StartTime = GetMicrosecondCount2();
  
//  Sleep(1000);
  
//  if (GetMicrosecondCount2() > StartTime + 1000000) // Неправильно
   if (GetMicrosecondCount2() - StartTime > 1000000 ) // Правильно
     Print ( "Прошло больше секунды." );
   else
     Print ( "Прошло меньше секунды." ); 
}
그리고 이것은 문제가 아니라 미묘함입니다.
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

"메타 트레이더 5에 추가된 헤지 포지션 회계 시스템" 기사 토론

fxsaber , 2018.01.25 10:14

  1. Andrey가 이 기사를 읽을 때 주의를 기울인 거래 상황의 예가 표시됩니다.
  2. HistorySelectByPosition은 거래를 일으킨 주문을 선택하지 않을 수 있습니다.
  3. 주문과 생성된 거래는 서로 다른 ID를 가질 수 있습니다.
두 번째와 세 번째 요점은 적어도 어딘가에서 발음되어야 합니다. 그가 한.

우리는 수동 거래의 역사에 대한 분석에 대해 이야기하고 있으며 TS를 작성하는 것에 대해 이야기하는 것이 아닙니다.

예를 들어 거래가 어떻게 실패했는지 이해하고 싶습니다.