MT5와 속도 - 페이지 40

 
Andrey Khatimlianskii :

전체 터미널을 접을 수 있는데 차트를 접는 이유는 무엇입니까?

확인했습니다. CPU 로드는 차트, Market Watch 및 도구를 축소하는 경우보다 높습니다.


ZY 내가 틀렸을 수도 있습니다.

 
CHART_IS_MINIMIZED와 유사한 TERMINAL_IS_MINIMIZED를 추가하세요. DLL 솔루션을 사용해야 하는 동안.
user32::IsIconic(TerminalHandle)
동일한 마우스의 투표를 제거할 수 있음을 이해하려면 패널 등을 그리지 마십시오.
 

VPS(가정용 컴퓨터가 아님)에서 이 EA를 실행한 결과를 공유하십시오.

 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

const bool Init = EventSetTimer ( 1 );

void OnTimer ()
{  
  _B( GetMicrosecondCount (), 1 ); // Замеряем длительность выполнения GetMicrosecondCount()
}


그런 VPS에서

 2020.10 . 03 20 : 21 : 49.222 Terminal        MetaTrader 5 x64 build 2629 started for MetaQuotes Software Corp.
2020.10 . 03 20 : 21 : 49.222 Terminal        Windows Server 2012 R2 build 9600 on KVM, Intel Xeon E3- 12 xx v2 (Ivy Bridge, IBRS), 4 / 5 Gb memory, 7 / 38 Gb disk, IE 11 , RDP, UAC, Admin, GMT+ 3


결과.

 2020.10 . 04 12 : 01 : 22.763 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 26 mсs.
2020.10 . 04 12 : 01 : 23.747 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 33 mсs.
2020.10 . 04 12 : 01 : 24.747 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 36 mсs.
2020.10 . 04 12 : 01 : 25.748 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 32 mсs.
2020.10 . 04 12 : 01 : 26.762 Test6 (EOSUSD,M1)       Alert : Time[Test6.mq5 7 in OnTimer : GetMicrosecondCount ()] = 23 mсs.


위와 같이 결과와 함께 VPS 구성을 제공하는 것이 좋습니다.


말 그대로 모든 기능이 느려진다는 사실에 직면했습니다. VPS를 변경하기 전에 다른 솔루션과 비교하고 어떤 솔루션을 선택하는 것이 더 나은지 이해하고 싶습니다. 그러므로 객관적인 사진을 위해 공유 부탁드립니다.


ZY 모든 터미널에서 가능합니다: MT4/MT5. 그러나 더 걱정되는 것은 물론 5입니다.

 
WinAPI 버전 으로 교체해 보았습니다.
 #import "kernel32.dll"
   int QueryPerformanceCounter( ulong &lpPerformanceCount);
   int QueryPerformanceFrequency( ulong &lpFrequency);
#import

ulong QueryPerfomanceCounter() { ulong value;   if (QueryPerformanceCounter(value)) return value;   return 0 ; } 

ulong QueryPerformanceFrequency() { ulong freq = 0 ;   if (kernel32::QueryPerformanceFrequency(freq)) return freq;   return 0 ; }  


// https://www.mql5.com/ru/forum/170952/page89#comment_8203859
ulong GetPerfomanceCount_mcs()
{ 
   static ulong freq= QueryPerformanceFrequency();
   return freq ? QueryPerfomanceCounter()* 1000000 /freq : 0 ;
}

#define GetMicrosecondCount GetPerfomanceCount_mcs
결과는 일반 결과와 동일합니다. 분명히 내부 구현은 동일합니다. 마이크로초 단위로 측정하는 다른 구현이 있습니까?
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.07.27
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

프로그램이 제동 기계에서 실행 중인지 여부를 결정합니다.

 // Возвращает true, если тормозной VPS.
bool IsFreezeVPS()
{
   static bool FirstRun = true ;
   static bool Res;
  
   if (FirstRun)
  {
     if (Res = :: GetMicrosecondCount () - :: GetMicrosecondCount ())
      :: Alert ( "Warning: FreezeVPS - https://www.mql5.com/ru/forum/342090/page40#comment_18579094" );
    
    FirstRun = false ;
  }
  
   return (Res);
}
 

VPS 시스템에서 GetMicrosecondsCount 브레이크를 우회 한 것 같습니다. 말도 안되는 소리처럼 보일 수 있습니다. 사실, 전투 고문은 CPU 부하로 VPS를 죽였습니다. 마이크로초 측정은 거래 환경의 스냅샷에 완전히 사용되어야 하며, 이는 차례로 로드되지 않고 CPU의 로드를 완화하도록 설계되었습니다.


여기 누가 또 왔어? 스냅샷, 이제 GetMicrosecondsCount...

 
fxsaber :

프로그램이 제동 기계에서 실행 중인지 여부를 결정합니다.

제로 차이는 우연의 문제입니다.

 void OnStart ()
{
         const int max = 2000000 ;
         int count = 0 ;
         for ( int i = 0 ; i < max; i++ )
                 if ( GetMicrosecondCount () != GetMicrosecondCount () )
                        count++;
         Print ( max, ":" ,count );
}

결과: 2000000:213579

 
A100 :

0인지 아닌지는 우연의 문제입니다.

결과: 2000000:213579

예, 그렇기 때문에 mqh에서 이 조건을 사용합니다.

     // Несколько проверок - от ложных срабатываний.
     bool Res = ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ()) &&
               ( bool )(:: GetMicrosecondCount () - :: GetMicrosecondCount ());
 
fxsaber :

예, 그렇기 때문에 mqh에서 이 조건을 사용합니다.

5개만 확인하면 됩니다. 컴퓨터(태블릿)가 느린데도 2000000/213579=10번째 검사마다 차이가 있습니다. 그리고 내가 느린 것을 가지고 있다는 사실은 이것조차도 누군가에 의해 재현되지 않는다는 사실에 의해 확인됩니다.

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

MT5와 속도

A100 , 2020.09.05 00:13

지연도 마찬가지입니다.

모든 수동 그래픽 구성(추세, 피보나치 등)도 느립니다.

설정은 모두 기본값입니다.

  • 서버: MetaQuotes-데모
  • 기록: 1971년 1월 1일부터 사용 가능
  • 정확한 시간 척도: 아니오
  • 창당 최대 막대: 100000
  • 차트 유형: 일본 촛대
  • 그래프 축소: 최대

기호, 마침표 지연
EURUSD 597 있다
EURUSD 주간
2590 있다
EURUSD 일일

12797

아니요

일종의 역 관계: 막대가 적을수록 느려짐

월별 및 주간 EURGBP 차트(깊은 기록이 없는 경우) - 지연 없음


 
A100 :

5개만 확인하면 됩니다. 컴퓨터(태블릿)가 느린데도 2000000/213579=10번째 검사마다 차이가 있습니다. 그리고 내가 느린 것을 가지고 있다는 사실은 이것조차도 누군가에 의해 재현되지 않는다는 사실에 의해 확인됩니다.

연속으로 5개의 검사 결과가 0이 아닌 경우 브레이크 GetMicrosecondsCount입니다. 물론 문제가 있는지 확인하는 다른(훨씬 더 논리적인) 방법이 있을 수 있습니다. 그렇게 놔뒀습니다.

바 히스토리 작업에 관해서는 사용하지 않습니다. 항상 M1+5000바의 가치가 있습니다. 임무는 빨리 거래하는 것입니다.