MT5와 속도 - 페이지 3

 
fxsaber :

빈 터미널 2460.


위협은 빈 계정에서 실행됩니다.


주문이 아니라 거래 횟수가 속도에 큰 영향을 미치는 것 같습니다.

아마도. 확실히 확인해보겠습니다.

무서운 20000ms / 100000 사이클에서도 이는 호출당 5-30ms와는 거리가 멉니다.

 

나는 그것이 어떻게 작동하는지 이해하지 못한다.

- 나에게 무슨 일이 생겼어

스냅 사진

 
A100 :

가장 간단한 형태:

계산 자체에 대한 접근 방식을 변경하기만 하면 됩니다(작업에 필요한 만큼 자주 중간 반환). 그러나 그것이 어렵다면 첫 번째 단계에서 OnMain이 당신을 위한 것이 아님을 고려하십시오(메인 코드를 OnMain이 아닌 OnTrade2XX로 전송). 따라서 OnMain에서 아무 것도 배울 필요가 없습니다.

온마인이란? 각 이벤트가 대기열을 처리하기 위해 온라인으로 호출하는 경우 어떻게 하나 이상의 이벤트가 온라인으로 대기열에 있을 수 있습니까?

 
fxsaber :

거래 내역이 긴 계정으로 실행해야 합니다.

더 이상 요점이 아닙니다. 누군가가 덴마크 왕국에 있습니다. ... 어떻게 더 나아가고 있습니까? ))

 

테스트1
 
fxsaber :

독자는 이 스크립트의 결과를 제공해야 합니다.

최신 노트북이 아닌 노트북에서 실행 중입니다.


 

다른 캐릭터로 3회 발사됩니다. 이러한 결과:

 2020.05 . 29 14 : 21 : 52.586 t2 (EURUSD,H1)   HistoryDealsTotal () = 4987
2020.05 . 29 14 : 21 : 52.588 t2 (EURUSD,H1)   HistoryOrdersTotal () = 4981
2020.05 . 29 14 : 21 : 52.757 t2 (EURUSD,H1)   100000 HistorySelect = 169.73 ms


2020.05 . 29 14 : 23 : 08.299 t2 (USDCHF,H4)   HistoryDealsTotal () = 4987
2020.05 . 29 14 : 23 : 08.299 t2 (USDCHF,H4)   HistoryOrdersTotal () = 4981
2020.05 . 29 14 : 23 : 08.480 t2 (USDCHF,H4)   100000 HistorySelect = 181.60 ms


2020.05 . 29 14 : 23 : 37.074 t2 (USDCAD,H1)   HistoryDealsTotal () = 4987
2020.05 . 29 14 : 23 : 37.074 t2 (USDCAD,H1)   HistoryOrdersTotal () = 4981
2020.05 . 29 14 : 23 : 37.238 t2 (USDCAD,H1)   100000 HistorySelect = 163.83 ms

자원:

 2020.05 . 29 14 : 25 : 26.874 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05 . 29 14 : 25 : 26.876 Terminal        Windows 10 build 17763 , AMD Phenom II X3 720 Processor, 10 / 15 Gb memory, 597 / 930 Gb disk, IE 11 , UAC, Admin, GMT+ 3


결과, IMHO는 훌륭합니다.

또한 컴퓨터에서 다양한 프로세스가 실행 중이며 평균 CPU 활동은 ~= 50-65%입니다.

 
fxsaber :


독자는 이 스크립트의 결과를 제공해야 합니다.

 2020.05 . 29 14 : 58 : 20.187 ddd (Si- 6.20 ,M1)         HistoryDealsTotal () = 4267
2020.05 . 29 14 : 58 : 20.187 ddd (Si- 6.20 ,M1)         HistoryOrdersTotal () = 43089
2020.05 . 29 14 : 58 : 24.777 ddd (Si- 6.20 ,M1)         100000 HistorySelect = 4589.30 ms
 
Anton :

무서운 20000ms / 100000 사이클에서도 이것은 호출당 5-30ms와는 거리가 멉니다.

 #include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

void OnStart ()
{
   MqlTick Tick;

   if ( SymbolInfoTick ( _Symbol , Tick))
     for ( int i = 0 ; i < 100000 ; i++)
      _B( HistorySelect (Tick.time, INT_MAX ), 5 );
}
         Alert : Time[Test6.mq5 9 : HistorySelect (Tick.time, INT_MAX )] = 32 ms.
         Alert : Time[Test6.mq5 9 : HistorySelect (Tick.time, INT_MAX )] = 6 ms.


전투 고문에서는 의심스러운 곳 어디에서나 _B(FuncName(...), AlertTime) 의 기능을 입혔습니다. 다음은 가장 최근 항목에서 발췌한 짧은 로그입니다.

 2020.05 . 29 15 : 08 : 41.806 Alert : Time[NewTicks.mqh 271 : NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 20 ms.
2020.05 . 29 15 : 08 : 41.806 Alert : Time[SyncChannel.mqh 381 : NEWTICKS::CheckFreshTicks(::LastTicks)] = 21 ms.
2020.05 . 29 15 : 08 : 42.793 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 8 ms.
2020.05 . 29 15 : 08 : 42.793 Alert : Time[NewTicks.mqh 271 : NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 8 ms.
2020.05 . 29 15 : 08 : 42.925 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 6 ms.
2020.05 . 29 15 : 08 : 42.930 Alert : Time[NewTicks.mqh 247 : NEWTICKS::IsHistoryDeals(Ticks[Size- 1 ].time_msc)] = 7 ms.
2020.05 . 29 15 : 08 : 42.930 Alert : Time[SyncChannel.mqh 381 : NEWTICKS::CheckFreshTicks(::LastTicks)] = 11 ms.
2020.05 . 29 15 : 08 : 42.952 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 6 ms.
2020.05 . 29 15 : 08 : 42.952 Alert : Time[NewTicks.mqh 271 : NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 6 ms.
2020.05 . 29 15 : 08 : 44.557 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 7 ms.
2020.05 . 29 15 : 08 : 44.557 Alert : Time[NewTicks.mqh 271 : NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 12 ms.
2020.05 . 29 15 : 08 : 44.557 Alert : Time[SyncChannel.mqh 381 : NEWTICKS::CheckFreshTicks(::LastTicks)] = 12 ms.
2020.05 . 29 15 : 08 : 45.010 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 5 ms.
2020.05 . 29 15 : 08 : 45.010 Alert : Time[NewTicks.mqh 247 : NEWTICKS::IsHistoryDeals(Ticks[Size- 1 ].time_msc)] = 6 ms.
2020.05 . 29 15 : 08 : 46.303 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 24 ms.
2020.05 . 29 15 : 08 : 46.303 Alert : Time[NewTicks.mqh 271 : NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 32 ms.
2020.05 . 29 15 : 08 : 46.303 Alert : Time[SyncChannel.mqh 381 : NEWTICKS::CheckFreshTicks(::LastTicks)] = 32 ms.
2020.05 . 29 15 : 08 : 51.984 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 15 ms.
시간 열은 정지가 발생하는 빈도를 보여줍니다.
파일:
Benchmark.mqh  2 kb
 
2020.05 . 29 14 : 59 : 37.947     Test_HS (USDJPY,M15)     HistoryDealsTotal () = 5097
2020.05 . 29 14 : 59 : 37.948     Test_HS (USDJPY,M15)     HistoryOrdersTotal () = 5154
2020.05 . 29 14 : 59 : 37.961     Test_HS (USDJPY,M15)     100000 HistorySelect = 13.81 ms

자원:

 2020.05 . 29 14 : 49 : 51.173 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05 . 29 14 : 49 : 51.175 Terminal        Windows 10 build 19041 , Intel Core i7- 9700   @ 3.00 GHz, 54 / 63 Gb memory, 78 / 222 Gb disk, IE 11 , UAC, GMT+ 3