MT5와 속도 - 페이지 58

 
fxsaber :

Parallel Access에서 SymbolInfoTick을 제동하는 이유인 것 같습니다.


결과는 ( inAmount = 15 )입니다.

> SymbolInfoTick을 실행하는 데 100ms. 코드가 석궁임이 분명합니다. 하지만 일반 Expert Advisors에서 브레이크가 미끄러지는 이유를 보여줍니다.

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

MT5와 속도

로만 , 2020.10.14 04:54

현재 틱에 대해 미리 정의된 변수가 더 좋습니다.



 
이것은 석궁이라고 부르는 것이 매우 어렵습니다.
 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick ()
{
   MqlTick Tick;

  _B( SymbolInfoTick ( _Symbol , Tick), 1000 );
}


결과는 ( inAmount = 15 )입니다.

 2020.10 . 20 07 : 43 : 16.687 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1476 mcs.
2020.10 . 20 07 : 57 : 21.730 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1904 mcs.
2020.10 . 20 08 : 00 : 25.089 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1676 mcs.
2020.10 . 20 08 : 02 : 27.279 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1383 mcs.
2020.10 . 20 08 : 02 : 41.126 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1506 mcs.
2020.10 . 20 08 : 03 : 34.680 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3046 mcs.
2020.10 . 20 08 : 03 : 34.742 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 36763 mcs.
2020.10 . 20 08 : 10 : 47.359 Test9 (EURCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1415 mcs.
2020.10 . 20 08 : 11 : 30.653 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 5832 mcs.
2020.10 . 20 08 : 13 : 37.736 Test9 (AUDCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 26816 mcs.
2020.10 . 20 08 : 13 : 47.453 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 21976 mcs.
2020.10 . 20 08 : 13 : 50.815 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 15876 mcs.
2020.10 . 20 08 : 14 : 10.315 Test9 (CADCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 15718 mcs.
2020.10 . 20 08 : 14 : 36.255 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 10142 mcs.
2020.10 . 20 08 : 14 : 36.392 Test9 (EURUSD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2571 mcs.
2020.10 . 20 08 : 15 : 16.985 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7113 mcs.
2020.10 . 20 08 : 16 : 48.631 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2069 mcs.
2020.10 . 20 08 : 16 : 55.178 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 6040 mcs.
2020.10 . 20 08 : 17 : 00.015 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3185 mcs.
2020.10 . 20 08 : 23 : 11.912 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1459 mcs.
2020.10 . 20 08 : 25 : 17.511 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1289 mcs.
2020.10 . 20 08 : 25 : 53.496 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 5905 mcs.
2020.10 . 20 08 : 27 : 20.446 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 8505 mcs.
2020.10 . 20 08 : 27 : 22.821 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1287 mcs.
2020.10 . 20 08 : 27 : 31.528 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1196 mcs.
2020.10 . 20 08 : 27 : 59.563 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 13283 mcs.
2020.10 . 20 08 : 28 : 43.103 Test9 (CADJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1073 mcs.
2020.10 . 20 08 : 29 : 08.284 Test9 (CADJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2493 mcs.
2020.10 . 20 08 : 30 : 01.088 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7911 mcs.
2020.10 . 20 08 : 30 : 24.796 Test9 (EURCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2733 mcs.
2020.10 . 20 08 : 30 : 29.838 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1340 mcs.
2020.10 . 20 08 : 31 : 04.041 Test9 (AUDCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1347 mcs.
2020.10 . 20 08 : 31 : 21.987 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7660 mcs.
2020.10 . 20 08 : 32 : 47.860 Test9 (AUDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1642 mcs.
2020.10 . 20 08 : 33 : 28.522 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3231 mcs.
2020.10 . 20 08 : 33 : 31.120 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1169 mcs.
2020.10 . 20 08 : 33 : 42.686 Test9 (EURGBP,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 22864 mcs.
 
이 문제는 나도 귀찮게 한다.
HFT는 이러한 지연으로 빌드되지 않습니다.
 
fxsaber :


어쩌면 유리에서 티키를 가져 오는 것이 더 낫습니까?
얼지 않았다?

Z.Y. 그러나 FIX를 제출하는 것이 좋습니다))

 
fxsaber :

막대를 통해 새 눈금을 정의하지 않는 것이 좋습니다.

 // Насколько бары отстают от тиков.

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

// Идентификация нового тика
bool IsNewTick_CopyRates()
{
   static MqlRates PrevRates = { 0 };
   MqlRates Rates[ 1 ];
    
   const bool Res = (:: CopyRates ( _Symbol , PERIOD_CURRENT , 0 , 1 , Rates) == 1 ) &&
//                   (_R(PrevRates) != Rates[0]); // TypeToBytes.mqh
                   ((Rates[ 0 ].time != PrevRates.time) ||
                    (Rates[ 0 ].tick_volume > PrevRates.tick_volume) ||
                    (Rates[ 0 ].close != PrevRates.close)); // Лишнее условие, но на всякий случай.
                   
   if (Res)
    PrevRates = Rates[ 0 ];
    
   return (Res);
}

void OnTick ()
{
  _BV( while (!IsNewTick_CopyRates());, 100 )
}


결과.

 2020.10 . 20 09 : 14 : 03.892 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 116743 mcs.
2020.10 . 20 09 : 14 : 07.467 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 2079963 mcs.
2020.10 . 20 09 : 14 : 13.788 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 4832700 mcs.
2020.10 . 20 09 : 14 : 16.028 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 529991 mcs.
2020.10 . 20 09 : 14 : 18.235 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 353948 mcs.
2020.10 . 20 09 : 14 : 22.198 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 1591809 mcs.
2020.10 . 20 09 : 14 : 25.960 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 117302 mcs.
2020.10 . 20 09 : 14 : 26.103 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 60079 mcs.
2020.10 . 20 09 : 14 : 26.222 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 53880 mcs.
2020.10 . 20 09 : 14 : 26.393 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 40772 mcs.
2020.10 . 20 09 : 14 : 27.054 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 214792 mcs.
2020.10 . 20 09 : 14 : 29.180 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 404409 mcs.
2020.10 . 20 09 : 14 : 42.721 Test9 (AUDCAD,M1)       Alert : Bench_Stack = 0 , 100 <= Time[Test9.mq5 25 in OnTick : while (!IsNewTick_CopyRates());] = 13207442 mcs.


몇 초 동안 현재 상태보다 뒤쳐지는 막대! 막대와 지표를 사랑하는 여러분 안녕하세요.

 
fxsaber :
이것은 석궁이라고 부르는 것이 매우 어렵습니다.
 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick ()
{
   MqlTick Tick;

  _B( SymbolInfoTick ( _Symbol , Tick), 1000 );
}

결과는 ( inAmount = 15 )입니다.

 2020.10 . 20 07 : 43 : 16.687 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1476 mcs.
2020.10 . 20 07 : 57 : 21.730 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1904 mcs.
2020.10 . 20 08 : 00 : 25.089 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1676 mcs.
2020.10 . 20 08 : 02 : 27.279 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1383 mcs.
2020.10 . 20 08 : 02 : 41.126 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1506 mcs.
2020.10 . 20 08 : 03 : 34.680 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3046 mcs.
2020.10 . 20 08 : 03 : 34.742 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 36763 mcs.
2020.10 . 20 08 : 10 : 47.359 Test9 (EURCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1415 mcs.
2020.10 . 20 08 : 11 : 30.653 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 5832 mcs.
2020.10 . 20 08 : 13 : 37.736 Test9 (AUDCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 26816 mcs.
2020.10 . 20 08 : 13 : 47.453 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 21976 mcs.
2020.10 . 20 08 : 13 : 50.815 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 15876 mcs.
2020.10 . 20 08 : 14 : 10.315 Test9 (CADCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 15718 mcs.
2020.10 . 20 08 : 14 : 36.255 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 10142 mcs.
2020.10 . 20 08 : 14 : 36.392 Test9 (EURUSD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2571 mcs.
2020.10 . 20 08 : 15 : 16.985 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7113 mcs.
2020.10 . 20 08 : 16 : 48.631 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2069 mcs.
2020.10 . 20 08 : 16 : 55.178 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 6040 mcs.
2020.10 . 20 08 : 17 : 00.015 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3185 mcs.
2020.10 . 20 08 : 23 : 11.912 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1459 mcs.
2020.10 . 20 08 : 25 : 17.511 Test9 (GBPJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1289 mcs.
2020.10 . 20 08 : 25 : 53.496 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 5905 mcs.
2020.10 . 20 08 : 27 : 20.446 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 8505 mcs.
2020.10 . 20 08 : 27 : 22.821 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1287 mcs.
2020.10 . 20 08 : 27 : 31.528 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1196 mcs.
2020.10 . 20 08 : 27 : 59.563 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 13283 mcs.
2020.10 . 20 08 : 28 : 43.103 Test9 (CADJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1073 mcs.
2020.10 . 20 08 : 29 : 08.284 Test9 (CADJPY,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2493 mcs.
2020.10 . 20 08 : 30 : 01.088 Test9 (GBPAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7911 mcs.
2020.10 . 20 08 : 30 : 24.796 Test9 (EURCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2733 mcs.
2020.10 . 20 08 : 30 : 29.838 Test9 (GBPCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1340 mcs.
2020.10 . 20 08 : 31 : 04.041 Test9 (AUDCHF,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1347 mcs.
2020.10 . 20 08 : 31 : 21.987 Test9 (EURCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 7660 mcs.
2020.10 . 20 08 : 32 : 47.860 Test9 (AUDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1642 mcs.
2020.10 . 20 08 : 33 : 28.522 Test9 (EURAUD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3231 mcs.
2020.10 . 20 08 : 33 : 31.120 Test9 (USDCAD,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 1169 mcs.
2020.10 . 20 08 : 33 : 42.686 Test9 (EURGBP,H1)       Alert : Bench_Stack = 0 , 1000 <= Time[Test9.mq5 95 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 22864 mcs.


당신은 그것을 어떻게합니까?

 2020.10 . 20 10 : 18 : 05.087 SymbolInfoTick (USDJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 05.185 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 06.093 SymbolInfoTick (CADJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 06.192 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 07.294 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 09.707 SymbolInfoTick (USDJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 11.110 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 11.110 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 11.110 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 11.111 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3 mcs.
2020.10 . 20 10 : 18 : 11.511 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 11.512 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 19 mcs.
2020.10 . 20 10 : 18 : 12.118 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 12.517 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 12.916 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 12.916 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 3 mcs.
2020.10 . 20 10 : 18 : 13.020 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 13.420 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 14.026 SymbolInfoTick (CADJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 14.125 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 14.531 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 15.234 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 15.732 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
2020.10 . 20 10 : 18 : 15.830 SymbolInfoTick (CADJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 7 in OnTick : SymbolInfoTick ( _Symbol ,Tick)] = 2 mcs.
#include <Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnTick ()
  {
   MqlTick Tick;

   _B( SymbolInfoTick ( _Symbol , Tick), 1 );
  }

20개의 차트.

빌드 2656.

 

아, 1000개의 요청이 있었다고?
컴퓨터에서 확인하는 것이 아닙니다.

fxsaber, 하지만 실제로 현재 틱에 대해 1000번의 요청을 수행하려면 어떻게 해야 합니까?

Anton, 그러나 여전히 19 mcs를 미끄러졌습니다.
다른 지표와 함께 백분율로 환산하면 850%입니다.

 

Roman :

Anton, 그러나 여전히 19 mcs를 미끄러졌습니다.

다른 지표와 함께 백분율로 환산하면 850%입니다.

동결 자체가 느려지는 경우가 발생합니다. ::GetMicrosecondCount().

간단한 예:

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

void OnTick ()
  {
   MqlTick Tick;

   for ( int i= 0 ;i< 10 ;i++)
      _B( GetLastError (), 1 );
  }

20개의 차트.

 2020.10 . 20 10 : 42 : 55.843 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 18 mcs.
2020.10 . 20 10 : 43 : 06.371 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 16 mcs.
2020.10 . 20 10 : 43 : 12.098 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 19 mcs.
2020.10 . 20 10 : 43 : 17.716 SymbolInfoTick (GBPCHF,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 15 mcs.
2020.10 . 20 10 : 43 : 31.359 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 2 mcs.
2020.10 . 20 10 : 43 : 35.276 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 17 mcs.
2020.10 . 20 10 : 43 : 45.814 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 8 in OnTick : GetLastError ()] = 6 mcs.

GetLastError() - 네이티브에서 메모리 셀을 읽는 것뿐입니다. 비용이 거의 0입니다.

여전히 확신이 서지 않으면 다음을 수행할 수 있습니다.

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

void OnTick ()
  {
   MqlTick Tick;

   int x= 0 ;
   for ( int i= 0 ;i< 10 ;i++)
      _B(x++, 1 );
  }
 2020.10 . 20 10 : 46 : 09.755 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 20 mcs.
2020.10 . 20 10 : 46 : 17.473 SymbolInfoTick (EURUSD,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 17 mcs.
2020.10 . 20 10 : 46 : 39.039 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 18 mcs.
2020.10 . 20 10 : 47 : 17.661 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 2 mcs.
2020.10 . 20 10 : 47 : 32.000 SymbolInfoTick (CADJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 17 mcs.
2020.10 . 20 10 : 47 : 57.485 SymbolInfoTick (EURUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 17 mcs.
2020.10 . 20 10 : 48 : 00.802 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 19 mcs.
2020.10 . 20 10 : 48 : 01.606 SymbolInfoTick (USDJPY,H1)      Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 17 mcs.
2020.10 . 20 10 : 48 : 06.928 SymbolInfoTick (AUDUSD,M15)     Bench_Stack = 0 , 1 <= Time[ SymbolInfoTick .mq5 9 in OnTick : x++] = 2 mcs.

이 벤치마크를 통해 일회성 행동의 측정을 평가할 때 이것을 염두에 두어야 합니다.

보다 정확한 측정 방법:

 void OnTick ()
  {
   MqlTick Tick;

   ulong gstart= GetMicrosecondCount ();

   int    count= 10000 ;
   for ( int i= 0 ; i<count; i++)
     {
       SymbolInfoTick ( _Symbol , Tick);
     }

   ulong gend= GetMicrosecondCount ()-gstart;
   Print (count, " iterations, total time " , DoubleToString (gend/ 1000.0 , 3 ), " ms; avr time: " , DoubleToString (gend/ 1000.0 /count, 3 ), " ms" );
  }

20개의 차트.

빌드 2656.

 2020.10 . 20 10 : 55 : 12.725 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.031 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.726 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.799 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.726 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.080 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.727 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.181 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.727 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.158 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.727 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.202 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 12.727 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.206 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.030 SymbolInfoTick (GBPCHF,H1)       10000 iterations, total time 0.433 ms; avr time: 0.000 ms
2020.10 . 20 10 : 55 : 13.528 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 6.344 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.530 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 8.253 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 9.745 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 9.873 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.392 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.201 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.020 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 13.532 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 10.388 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.439 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 11.488 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.439 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 12.251 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.439 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 12.257 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.440 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 12.495 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.440 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 12.624 ms; avr time: 0.001 ms
2020.10 . 20 10 : 55 : 14.440 SymbolInfoTick (AUDUSD,M15)     10000 iterations, total time 12.592 ms; avr time: 0.001 ms
 
Anton :

동결 자체가 느려지는 경우가 발생합니다. ::GetMicrosecondCount().

간단한 예:

20개의 차트.

GetLastError() - 네이티브에서 메모리 셀을 읽는 것뿐입니다. 비용이 거의 0입니다.

감사합니다. 이해합니다.
그러나 미리 정의된 변수 를 도입하는 것을 고려해 볼 수 있습니까?
변수를 읽는 것이 함수를 호출하고 구조를 채우는 것보다 빠를 것입니다.

 
Anton :

보다 정확한 측정 방법:

병원의 평균 온도.