장 마감 - 페이지 7

 
타이머를 0.5초로 설정했습니다. 조금 나아졌습니다. 좋아요, 지금은 그렇습니다.
 
Vasiliy Pushkaryov :
타이머를 0.5초로 설정했습니다. 조금 나아졌습니다. 좋아요, 지금은 그렇습니다.

코드를 보여주세요.

 
fxsaber :

코드를 보여주세요.

초과분을 정리했습니다.

그러나 이러한 지연은 종종 수동으로 잡을 수 있습니까? 아니면 500ms 동안 정상입니까?


파일:
 
Vasiliy Pushkaryov :

초과분을 정리했습니다.

그러나 이러한 지연은 종종 수동으로 잡을 수 있습니까? 아니면 500ms 동안 정상입니까?


레이블과 같은 구성을 삭제하는 대신 레이블이 있으면 텍스트를 교체하려고 시도했지만 큰 차이를 느끼지 못했습니다.

   if ( ObjectFind (idChart, nameFix) == 0 )
   {
     ObjectSetString (idChart, nameFix, OBJPROP_TEXT , text);
     ChartRedraw ();
     return ;
   }
 
Vasiliy Pushkaryov :

이러한 지연은 종종 수동으로 잡을 수 있습니까? 아니면 500ms 동안 정상입니까?

이것은 지연이 아닙니다. OnTimer에서 화면으로 시간을 인쇄한 다음 500ms 동안 기다립니다. 이 500ms 동안 시간이 변경되지만 OnTimer는 아직 호출되지 않았습니다.

동기화해야 합니다. "TimerCurrent가 변경된" 순간에 정확히 EventSetTimer(1)를 설정하십시오.


동기화를 시도했습니다

 bool SetTimerSync( const uint TimerMs = 1000 , const uint SyncError = 50 )
{
   // https://www.mql5.com/ru/forum/166646/page5#comment_5796939    
   return ((GetCurrenTime() % 1000 > 1000 - SyncError) && EventSetMillisecondTimer (TimerMs));
}

void OnTimer ()
{
   static bool Sync = GetCurrenTime() * 0 ;
   // --- при максимизированном окне выводим время на график
   if (Sync)
    showHideTime(); // https://www.mql5.com/ru/forum/166646/page7#comment_6384173
   else
    Sync = SetTimerSync();
}


int OnInit ()
{
   EventSetMillisecondTimer ( 1 );
  
   return INIT_SUCCEEDED ;
} 
작동하지 않습니다. 그리고 나는 MT5 랙에 대해 나쁜 생각을 가지고 있습니다. 스크립트가 이러한 변경 사항으로 어떻게 작동하는지 직접 확인하십시오.
 
fxsaber :

동기화를 시도했습니다

작동하지 않습니다. 그리고 나는 MT5 랙에 대해 나쁜 생각을 가지고 있습니다.

OnTimer는 주어진 시간(ms) 후에 호출되지 않습니다. 따라서 누적된 오류와 관찰된 지연이 발생합니다. 버그!

 
fxsaber :

이것은 지연이 아닙니다. OnTimer에서 화면으로 시간을 인쇄한 다음 500ms 동안 기다립니다. 이 500ms 동안 시간이 변경되지만 OnTimer는 아직 호출되지 않았습니다.

동기화해야 합니다. "TimerCurrent가 변경된" 순간에 정확히 EventSetTimer(1)를 설정하십시오.


동기화를 시도했습니다

작동하지 않습니다. 그리고 나는 MT5 랙에 대해 나쁜 생각을 가지고 있습니다. 스크립트가 이러한 변경 사항으로 어떻게 작동하는지 직접 확인하십시오.
코드의 OnInit 에는 밀리초 타이머 가 있으며 게시물에는 초당 평소대로 작성합니다. 내가 알기로는 여전히 EventSetTimer(1)를 사용해야 합니까?
 
Vasiliy Pushkaryov :
코드의 OnInit에는 밀리초 타이머가 있으며 포스트에서는 초당 평소대로 작성합니다. 내가 알기로는 여전히 EventSetTimer(1)를 사용해야 합니까?

먼저 첫 번째 타이머를 통해 동기화가 발생한 다음 두 번째 타이머가 설정됩니다.

 
fxsaber :

먼저 첫 번째 타이머를 통해 동기화가 발생한 다음 두 번째 타이머가 설정됩니다.

알았습니다. 내일 만 확인 할 수 있습니다. 도움 감사합니다.
 
fxsaber :

OnTimer는 주어진 시간(ms) 후에 호출되지 않습니다. 따라서 누적 오류와 관찰된 지연이 발생합니다. 버그!

차트에 대한 주석의 스크립트는 이 버그를 보여줍니다.

 input int TimerMs = 1000 ;

const bool Init = EventSetMillisecondTimer (TimerMs);

void OnTimer ()
{
   static ulong StartTime = 0 ;  
   static int Count = 0 ;
  
   if (!StartTime)
    StartTime = GetMicrosecondCount ();
  
   Comment ( "Error " + ( string )(( int )( GetMicrosecondCount () - StartTime) / 1000 - TimerMs * Count) + " ms." );  
  
  Count++;
}