MT5와 속도 - 페이지 14

 

거기에 있었는지 없었는지 모르겠습니다.

우리는 정말 상자 트리와 해시맵이 필요합니다. 다중 통화 소프트웨어의 경우 해시맵은 추가 테스트를 위해 매우 느립니다.

글쎄, C++17 :)

 

베타 빌드 2577을 사용해보십시오.

선택을 통해 스토리가 개선되었으며 계속해서 근본적으로 다시 할 것입니다.

 
Renat Fatkhullin :

베타 빌드 2577을 사용해보십시오.

선택을 통해 스토리가 개선되었으며 계속해서 근본적으로 다시 할 것입니다.

더 나빠지는 것 같습니다:

 2020.08 . 19 03 : 41 : 43.173          Time[MT4Orders.mqh 434 : :: HistorySelect ( this .LastTime, D'31.12.3000 23:59:59' )] = 11 ms.
2020.08 . 19 03 : 41 : 43.174          Time[MT4Orders.mqh 622 : this .RefreshHistory()] = 12 ms.

전날인 2573년에는 그런 수치가 없었다.

 
Andrey Pogoreltsev :

거기에 있었는지 없었는지 모르겠습니다.

우리는 정말 상자 트리와 해시맵이 필요합니다. 다중 통화 소프트웨어 의 경우 해시맵은 추가 테스트를 위해 매우 느립니다.

글쎄, C++17 :)

배달의 해시맵이 모든 구현 중 가장 빠른 것으로 확인했습니다. 여기 CB에는 두 가지 옵션이 더 있고 기사가 하나씩 있습니다. 그것들은 훨씬 더 느립니다. 그리고 소프트웨어가 아닌 어떤 종류의 해시맵 이 필요합니까? FPGA에서 하드웨어를 정말로 원하십니까? )) 엘론 머스크, 어때요!

플러스에 무슨 문제가 있습니까? MQL5가 64비트 DLL 로드 지원을 중단했습니까? 그런 불명예에 대해 Renat에게 긴급히 편지를 보내십시오! C++20도 지원합니다! 정말로 마스터하는 것만 남아 있습니다))

------------------

마이크로소프트 비주얼 스튜디오 엔터프라이즈 2019 프리뷰

버전 16.7.0 미리보기 4.0

설치된 버전: 엔터프라이즈

마이크로소프트 비주얼 C++ 2019

 
Andrey Khatimlianskii :

더 나빠지는 것 같습니다:

전날인 2573년에는 그런 수치가 없었다.

이것이 첫 번째 콜드 요청이었던 것 같습니다. 그 이후로는 인쇄가 되지 않습니다.

 
Renat Fatkhullin :

베타 빌드 2577을 사용해 보십시오.

선택을 통해 스토리가 개선되었으며 계속해서 근본적으로 다시 할 것입니다.

 2020.08 . 19 09 : 30 : 06.512 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 17 : CopyTicks (Symb,Ticks, COPY_TICKS_ALL , 0 , 1 )] = 1 ms.
2020.08 . 19 09 : 30 : 08.035 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 4 ms.
2020.08 . 19 09 : 30 : 08.038 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 13 : SymbolInfoTick (Symb,Tick)] = 7 ms.
2020.08 . 19 09 : 30 : 08.042 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 13 : SymbolInfoTick (Symb,Tick)] = 10 ms.
2020.08 . 19 09 : 30 : 08.044 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 13 ms.
2020.08 . 19 09 : 30 : 08.046 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 39 : SymbolInfoDouble (Symb, SYMBOL_ASK )] = 4 ms.
2020.08 . 19 09 : 30 : 08.046 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 7 ms.
2020.08 . 19 09 : 30 : 08.047 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 75 : SymbolName ( 0 , true )] = 3 ms.
2020.08 . 19 09 : 30 : 08.048 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 2 ms.
2020.08 . 19 09 : 30 : 08.052 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 13 : SymbolInfoTick (Symb,Tick)] = 2 ms.
2020.08 . 19 09 : 30 : 08.053 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 41 : SymbolInfoDouble (Symb, SYMBOL_POINT )] = 5 ms.
2020.08 . 19 09 : 30 : 08.055 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 3 ms.
2020.08 . 19 09 : 30 : 08.060 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 42 : SymbolInfoInteger (Symb, SYMBOL_DIGITS )] = 5 ms.
2020.08 . 19 09 : 30 : 08.071 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 25 ms.
2020.08 . 19 09 : 30 : 24.489 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 1 ms.
2020.08 . 19 09 : 30 : 25.857 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 30 : 26.092 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 30 : 26.119 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 30 : 29.279 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 17 : CopyTicks (Symb,Ticks, COPY_TICKS_ALL , 0 , 1 )] = 1 ms.
2020.08 . 19 09 : 30 : 31.931 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 42 : SymbolInfoInteger (Symb, SYMBOL_DIGITS )] = 2 ms.
2020.08 . 19 09 : 30 : 31.931 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 1 ms.
2020.08 . 19 09 : 30 : 33.402 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 34 : HistoryOrderSelect ( 0 )] = 7 ms.
2020.08 . 19 09 : 30 : 35.686 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 2 ms.
2020.08 . 19 09 : 30 : 37.810 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 39 : SymbolInfoDouble (Symb, SYMBOL_ASK )] = 1 ms.
2020.08 . 19 09 : 30 : 52.415 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 3 ms.
2020.08 . 19 09 : 31 : 10.903 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 31 : 11.414 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 5 ms.
2020.08 . 19 09 : 31 : 11.414 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 39 : SymbolInfoDouble (Symb, SYMBOL_ASK )] = 9 ms.
2020.08 . 19 09 : 31 : 32.694 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 42 : SymbolInfoInteger (Symb, SYMBOL_DIGITS )] = 2 ms.
2020.08 . 19 09 : 31 : 51.245 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 31 : 53.989 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 17 : CopyTicks (Symb,Ticks, COPY_TICKS_ALL , 0 , 1 )] = 2 ms.
2020.08 . 19 09 : 32 : 11.871 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 32 : 20.310 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 42 : SymbolInfoInteger (Symb, SYMBOL_DIGITS )] = 3 ms.
2020.08 . 19 09 : 32 : 47.513 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 3 ms.
2020.08 . 19 09 : 32 : 49.367 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 32 : 56.358 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 33 : 05.424 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 75 : SymbolName ( 0 , true )] = 2 ms.
2020.08 . 19 09 : 33 : 16.537 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 5 ms.
2020.08 . 19 09 : 33 : 16.551 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 13 ms.
2020.08 . 19 09 : 33 : 47.303 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 7 ms.
2020.08 . 19 09 : 33 : 50.587 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 2 ms.
2020.08 . 19 09 : 33 : 56.181 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 41 : SymbolInfoDouble (Symb, SYMBOL_POINT )] = 1 ms.
2020.08 . 19 09 : 33 : 59.244 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 1 ms.
2020.08 . 19 09 : 34 : 03.255 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 41 : SymbolInfoDouble (Symb, SYMBOL_POINT )] = 2 ms.
2020.08 . 19 09 : 34 : 47.388 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 28 : HistoryDealSelect ( 0 )] = 1 ms.
2020.08 . 19 09 : 34 : 47.498 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 35 : 06.001 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 3 ms.
2020.08 . 19 09 : 35 : 06.005 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 75 : SymbolName ( 0 , true )] = 1 ms.
2020.08 . 19 09 : 35 : 06.017 Test6 (EURGBP,M1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 35 : 06.022 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 42 : SymbolInfoInteger (Symb, SYMBOL_DIGITS )] = 3 ms.
2020.08 . 19 09 : 35 : 06.046 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 28 : HistoryDealSelect ( 0 )] = 12 ms.
2020.08 . 19 09 : 35 : 29.014 Test6 (GBPNZD,H1)       Alert : Time[Test6.mq5 22 : HistorySelect (Tick.time, INT_MAX )] = 1 ms.
2020.08 . 19 09 : 36 : 30.289 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 40 : SymbolInfoDouble (Symb, SYMBOL_TRADE_TICK_VALUE )] = 1 ms.
2020.08 . 19 09 : 36 : 55.946 Test6 (EURUSD,H1)       Alert : Time[Test6.mq5 74 : SymbolsTotal ( true )] = 2 ms.
2020.08 . 19 09 : 36 : 55.950 Test6 (EURNZD,H1)       Alert : Time[Test6.mq5 39 : SymbolInfoDouble (Symb, SYMBOL_ASK )] = 3 ms.

훨씬 좋아졌습니다. 아직 전투에서 테스트하지 않았습니다.


위협 전투 버전의 로그에 따르면 아직 수정해야 할 부분이 많습니다...

 
Alexey Volchanskiy :

배달의 해시맵이 모든 구현 중 가장 빠른 것으로 확인했습니다. 여기 CB에는 두 가지 옵션이 더 있고 기사가 하나씩 있습니다. 그것들은 훨씬 더 느립니다. 그리고 소프트웨어가 아닌 어떤 종류의 해시맵 이 필요합니까? FPGA에서 하드웨어를 정말로 원하십니까? )) 엘론 머스크, 어때요!

이것은 실행 가능한 mql5 언어로 구현하지 않은 std::를 의미합니다. 플러스에 대한 기본 구현보다 훨씬 느립니다.


플러스에 무슨 문제가 있습니까? MQL5가 64비트 DLL 로드 지원을 중단했습니까? 그런 불명예에 대해 Renat에게 긴급히 편지를 보내십시오! C++20도 지원합니다! 정말로 마스터하는 것만 남아 있습니다))

기본 DLL 옵션은 매력적이지만 많은 단점이 있습니다.

  1. 전략 테스터 에서 지원하지 않음
  2. 같은 가게에 밀치지 마세요
  3. 모든 사용자가 자신의 DLL로 어드바이저를 실행하는 것을 좋아하지는 않습니다.
  4. 내가 이해하는 한(잘못된 경우 수정) - DLL은 모든 호출에서 로드/언로드됩니다.
글쎄, MQL5 자체는 C++ 아날로그이며 C99뿐이므로 이것이 우리가 말하는 것입니다.


추신. 테스터에서 DLL을 계속 사용할 수 있습니다. 로봇을 라이브러리로 전송하려고 합니다. 테스트를 통과하고 일반적으로 작업하는 것이 더 빠를 수도 있습니다.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
b2579.
파일:
2579_lags.txt  653 kb
 
fxsaber :
OnTick에서는 이전 틱의 틱 이력을 요청합니다.

지연에 대한 주제는 아니지만 어쨌든 질문하겠습니다. 왜 역사인가? 틱을 건너뛸 수 있습니까? MT4는 이렇게 연습했는데 MT5는 그렇게 죄를 짓지 말아야 하지 않나?

 
traveller00 :

지연에 대한 주제는 아니지만 어쨌든 질문하겠습니다. 왜 역사인가? 틱을 건너뛸 수 있습니까? MT4는 이렇게 연습했는데 MT5는 그렇게 죄를 짓지 말아야 하지 않나?

NewTick 이벤트새 견적이 도착할 때 생성되며 첨부된 Expert Advisors의 OnTick() 함수에 의해 처리됩니다. 새 견적을 수신할 때 이전 견적에서 시작된 OnTick 기능이 실행된 경우 해당 이벤트가 Expert Advisor의 이벤트 대기열에 넣지 않기 때문에 들어오는 견적은 Expert Advisor에 의해 무시됩니다.

https://www.mql5.com/ru/docs/runtime/event_fire#newtick

사유: