MT5와 속도 - 페이지 8

 
나는 많은 수표를 넣었다 ... 이것은 나를 놀라게했다.
 2020.06 . 03 14 : 09 : 21.604 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 182 ms.

이 시점에서 거래가 이루어지지 않았습니다.


PS 드문 일이 아닙니다.

 2020.06 . 03 14 : 31 : 39.484 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 65 ms.
 
fxsaber :

추신: 전투 모드에서 거래가 이루어지면 거의 항상 지연이 있습니다(5밀리초보다 긴 경우만 표시합니다).

그렇지 않으면 2470보다 훨씬 나은 것 같습니다.

스탯이 축적되었습니다. HistorySelect는 거래를 할 때만 지연 됩니다.


ZY 거짓말이야. 그리고 거래가 없습니다.

 2020.06 . 03 14 : 35 : 26.999 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 24 ms.
 
fxsaber :
나는 많은 수표를 넣었다 ... 이것은 나를 놀라게했다.

흔한 현상인 것 같습니다. 무역 기능을 호출하지 않았습니다.

 2020.06 . 03 15 : 23 : 21.428 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 26 : 09.433 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 8 ms.
2020.06 . 03 15 : 26 : 24.435 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 10 ms.
2020.06 . 03 15 : 26 : 31.417 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 1 ms.
2020.06 . 03 15 : 26 : 33.429 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 8 ms.
2020.06 . 03 15 : 26 : 34.428 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 3 ms.
2020.06 . 03 15 : 26 : 55.655 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 18 ms.
2020.06 . 03 15 : 27 : 05.578 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 14 ms.
2020.06 . 03 15 : 29 : 27.613 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 3 ms.
2020.06 . 03 15 : 31 : 29.426 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 4 ms.
2020.06 . 03 15 : 31 : 46.430 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 11 ms.
2020.06 . 03 15 : 33 : 12.441 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 14 ms.
2020.06 . 03 15 : 33 : 21.437 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 12 ms.
2020.06 . 03 15 : 33 : 35.430 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 34 : 55.424 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 2 ms.
2020.06 . 03 15 : 35 : 09.426 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 2 ms.
2020.06 . 03 15 : 35 : 34.428 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 4 ms.
2020.06 . 03 15 : 41 : 48.423 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 3 ms.
2020.06 . 03 15 : 41 : 54.439 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 13 ms.
2020.06 . 03 15 : 42 : 28.440 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 15 ms.
2020.06 . 03 15 : 42 : 48.845 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 14 ms.
2020.06 . 03 15 : 43 : 08.429 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 43 : 25.428 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 7 ms.
2020.06 . 03 15 : 43 : 27.428 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 4 ms.
2020.06 . 03 15 : 43 : 48.436 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 9 ms.
2020.06 . 03 15 : 47 : 05.424 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 3 ms.
2020.06 . 03 15 : 47 : 46.426 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 8 ms.
2020.06 . 03 15 : 47 : 58.845 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 4 ms.
2020.06 . 03 15 : 48 : 47.140 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 12 ms.
2020.06 . 03 15 : 49 : 03.430 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 49 : 52.684 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 3 ms.
2020.06 . 03 15 : 53 : 39.429 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 4 ms.
2020.06 . 03 15 : 54 : 17.424 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 54 : 47.425 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 1 ms.
2020.06 . 03 15 : 57 : 28.425 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 5 ms.
2020.06 . 03 15 : 57 : 47.425 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 2 ms.
2020.06 . 03 15 : 58 : 27.425 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 1 ms.
2020.06 . 03 15 : 59 : 08.445 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 23 ms.
2020.06 . 03 16 : 00 : 20.447 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 28 ms.
2020.06 . 03 16 : 01 : 50.430 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 7 ms.
2020.06 . 03 16 : 02 : 08.431 Alert : Time[NewTicks.mqh 28 : :: SymbolInfoTick ( _Symbol ,Tick)] = 6 ms.

SymbolInfoTick은 때때로 꽤 느립니다. HFT는 이러한 예기치 않은 지연으로 인해 매우 까다로울 수 있습니다.

이유를 찾기 위해 개발자에게 요청하십시오. 그 동안 전투 고문에게는 자신의 프로파일러 가 필수라는 것이 분명해졌습니다.

 
fxsaber :

흔한 현상인 것 같습니다. 무역 기능을 호출하지 않았습니다.

SymbolInfoTick은 때때로 꽤 느립니다. HFT는 이러한 예기치 않은 지연으로 인해 매우 까다로울 수 있습니다.

이유를 찾기 위해 개발자에게 요청하십시오. 그 동안 전투 고문에게는 자신의 프로파일러 가 필수라는 것이 분명해졌습니다.

어떻게 그러한 정확도로 밀리초를 측정합니까? 프로세서의 하드웨어 클럭 카운터?

 
Alexey Volchanskiy :

어떻게 그러한 정확도로 밀리초를 측정합니까? 프로세서의 하드웨어 클럭 카운터?

GetMicrosecondCount() .

 
fxsaber :

흔한 현상인 것 같습니다. 무역 기능을 호출하지 않았습니다.

SymbolInfoTick은 때때로 꽤 느립니다. HFT는 이러한 예기치 않은 지연으로 인해 매우 까다로울 수 있습니다.

이유를 찾기 위해 개발자에게 요청하십시오. 그 동안 전투 고문에게는 자신의 프로파일러 가 필수라는 것이 분명해졌습니다.

시스템 타이머의 기본 단계는 20ms입니다. 측정하기 전에 더 작게 재설정 했습니까?

다음 기능을 사용해 볼 수 있습니다.

 #import "kernel32.dll"
   int timeBeginPeriod( uint TimerRes);
   int timeEndPeriod( uint TimerRes);
#import
 
Igor Zakharov :

시스템 타이머의 기본 단계는 20ms입니다. 측정하기 전에 더 작은 것으로 재설정 했습니까?

개발자들에게.

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

MT5와 속도

안톤 , 2020.05.29 12:32

테스트 코드는 다음과 같아야 합니다.

 void OnStart ()
  {
   MqlTick Tick;
   SymbolInfoTick ( _Symbol , Tick);
   ulong start= GetMicrosecondCount () ;
   for ( int i= 0 ; i< 100000 ; i++)
     {
       HistorySelect (Tick.time, INT_MAX );
     }
   ulong end= GetMicrosecondCount () -start;
   Print (" 100000 HistorySelect = ", DoubleToString (end/ 1000.0 , 2 )," ms");
  }


더 이상 이론화하지 마십시오. 다음은 실제 적용 분야입니다.

 
fxsaber :

개발자들에게.

그래서 이것은 몇 년 전 개발자의 답변입니다.

 
Igor Zakharov :

그래서 이것은 몇 년 전 개발자의 답변입니다.

근데 아무것도 없고 날짜가 2020.05.29 12:32

 
Alexey Viktorov :

근데 아무것도 없고 날짜가 2020.05.29 12:32

나는 틀렸다. fxsaber는 이것을 지적했다. GetTickCount()는 내가 쓴 것처럼 틀릴 수 있지만 GetMicrosecondCount() 는 틀릴 수 있다.

https://www.mql5.com/ru/forum/189360#comment_4838735

조용히 하겠습니다 :)

사유: