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

 
Sleep ( 0 );

이러한 수면에는 수십 밀리초가 소요될 수 있습니다.

 
fxsaber :

이러한 수면에는 수십 밀리초가 소요될 수 있습니다.

무슨 뜻인가요?

오래전에 프로세스 병렬화에서 Sleep() 이 언급되었던 것을 기억합니다.

 
Fast528 :

무슨 뜻인가요?

그가 말한 바로 그 말.

 
fxsaber :

이러한 수면에는 수십 밀리초가 소요될 수 있습니다.

수십이 아니라 15.625밀리초입니다.
나는 오랫동안 건설을 사용해 왔습니다.

 if (pause> 0 ) Sleep (pause);
 
니콜라이 셈코 :

수십이 아니라 15.625밀리초입니다.
나는 오랫동안 건설을 사용해 왔습니다.

 ulong GetSleepTime( const int Pause = 0 )
{
   const ulong StartTime = GetMicrosecondCount ();
  
   Sleep (Pause);
  
   return ( GetMicrosecondCount () - StartTime);
}

void OnStart ()
{
   ulong MaxTime = 0 ;
  
   while (! IsStopped ())
  {
     const ulong SleepTime = GetSleepTime();
    
     if (SleepTime > MaxTime)
    {
       Print (SleepTime);
      
      MaxTime = SleepTime;
    }
  }
}


결과

 2542
9983
10033
10041
10148
10348
11982
26116
27529
40066
49915
56319
 
fxsaber :


결과

평균 시간을 계산합니다.

SleepTime을 누적하고 루프가 종료된 후 반복 횟수로 나눕니다.

그렇지 않으면 제시된 결과가 연약한 마음에 무섭게 보입니다. 음, 동시에 최소 시간을 표시하십시오.

추신. MQL5 의 Sleep() 함수 는 win API 함수 ::Sleep()에 대한 리디렉션이 아닙니다. 오히려 값이 100보다 작으면 리디렉션입니다. 그리고 100개 이상이 이미 와인 API 슬립 내부에 있는 사이클이므로 IsStopped에서 인터럽트할 수 있습니다.

그리고 또 다른 뉘앙스가 있습니다. 밀리초가 0보다 작으면 1로 대체됩니다. 즉, ::Sleep(0)을 호출하지 않습니다.

PPS는 kernel32.dll에서 Sleep 기능을 가져와서 동일한 실험을 합니다.

 
슬라바 :

평균 시간을 계산합니다.

SleepTime을 누적하고 루프가 종료된 후 반복 횟수로 나눕니다.

평균 시간이 아니라 파열 가능성에 관한 것이었습니다. OrderSend 결과와 거래 내역의 동기화를 기다리는 동안 그들을 만났습니다. 절전(0)과 함께 대기했습니다. 이것이 불가능하다는 것이 밝혀졌습니다.

슬라바 :

추신. MQL5 의 Sleep() 함수 는 win API 함수 ::Sleep()에 대한 리디렉션이 아닙니다. 오히려 값이 100보다 작으면 리디렉션입니다. 그리고 100개 이상이 이미 와인 API 슬립 내부에 있는 사이클이므로 IsStopped에서 인터럽트할 수 있습니다.

그리고 또 다른 뉘앙스가 있습니다. 밀리초가 0보다 작으면 1로 대체됩니다. 즉, ::Sleep(0)을 호출하지 않습니다.

자세한 내용은 감사합니다. Sleep(5000)이 IsStopped()를 통해 종료될 수 있다는 것을 몰랐습니다.

 
fxsaber :

평균 시간이 아니라 파열 가능성에 관한 것이었습니다. OrderSend 결과와 거래 내역의 동기화를 기다리는 동안 그들을 만났습니다. 절전(0)과 함께 대기했습니다. 이것이 불가능하다는 것이 밝혀졌습니다.

따라서 Windows 운영 체제는 결코 실시간 시스템이 아닙니다.
 

fxsaber :

자세한 내용은 감사합니다. Sleep(5000)이 IsStopped()를 통해 종료될 수 있다는 것을 몰랐습니다.

https://www.mql5.com/ru/docs/common/sleep

이 기능에는 0.1초마다 전문가 정지 플래그 상태를 검사하는 기능이 내장되어 있습니다.

Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить. В функцию встроена проверка состояния флага остановки эксперта каждую 0.1 секунды.
 
슬라바 :
따라서 Windows 운영 체제는 결코 실시간 시스템이 아닙니다.

솔직히 말해서, 그것이 무엇을 의미하는지, MQL5에서 어디서 그것을 만날 수 있는지조차 모릅니다.