MT5 et la vitesse en action - page 14

 

Je ne sais pas si c'était ici ou pas.

J'ai vraiment besoin d'arbres à boîtes et de hashmaps. Pour les multivolumes, le logiciel hashmap est très lent pour des tests supplémentaires.

Et C++17 :)

 

Essayez la version bêta 2577, s'il vous plaît.

Nous avons amélioré l'échantillonnage de l'histoire et nous continuerons à le réviser de manière drastique.

 
Renat Fatkhullin:

Essayez la version bêta 2577, s'il vous plaît.

Amélioré par l'échantillonnage des histoires et continuera à être remanié de façon spectaculaire.

Il semble que ça ait empiré :

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.

Il n'y avait pas de tels chiffres sur le 2573 le jour précédent.

 
Andrey Pogoreltsev:

Je ne sais pas si c'était ici ou pas.

J'ai vraiment besoin d'arbres à boîtes et de hashmaps. Pour les multivolumes, le logiciel hashmap est très lent pour des tests supplémentaires.

Et C++17 :)

Le hashmap fourni est le plus rapide de toutes les implémentations, j'ai vérifié. Il y a deux autres variantes qui traînent dans CB et il y a un article sur l'une d'entre elles, elles sont plus lentes d'un ordre de grandeur. Et de quel type de hashmap avez-vous besoin,pas de logiciel? Ne voulez-vous pas un hashmap matériel sur FPGA ? )) Alors, Elon Musk !

Quel est le problème avec les plus ? MQL5 ne supporte plus le chargement de DLL 64 bits ? Écrivez immédiatement à Renate au sujet de cet outrage ! J'ai même le support du C++ 20 ! Il ne me reste plus qu'à l'apprendre ;))

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

Aperçu de Microsoft Visual Studio Enterprise 2019

Version 16.7.0 Aperçu 4.0

Version installée : Enterprise

Microsoft Visual C++ 2019

 
Andrey Khatimlianskii:

Il semble que ça ait empiré :

Il n'y avait pas de tels chiffres sur le 2573 le jour précédent.

Il semble que ce soit les premières demandes de froid. Pas une seule empreinte depuis.

 
Renat Fatkhullin:

Essayez la version bêta 2577, s'il vous plaît.

Nous avons amélioré l'échantillonnage de l'histoire et nous continuerons à le réviser de manière drastique.

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.

Cela s'est beaucoup amélioré. En combat, n'a pas encore été testé.


Les journaux de la version de ZZY Combat montrent qu'il y a encore beaucoup de choses à corriger...

 
Alexey Volchanskiy:

Le hashmap fourni est le plus rapide de toutes les implémentations, j'ai vérifié. Il existe deux autres variantes dans la CB et il y a un article sur l'une d'entre elles, elles sont un ordre de grandeur plus lentes. De quel type de hashmap avez-vous besoin,pas de logiciel? Ne voulez-vous pas un hashmap matériel sur FPGA ? )) Qu'en est-il, Ilon Musk !

Je veux dire std: : sans implémentation dans le langage exécutable mql5, parce que c'est significativement plus lent que l'implémentation native sur les plus.


Quel est le problème avec les plus ? MQL5 ne supporte plus le chargement de DLL 64 bits ? Écrivez immédiatement à Renate au sujet de cet outrage ! J'ai même le support du C++ 20 ! J'ai juste besoin de m'y habituer ;)) !

L'option DLL native est intéressante, mais elle présente de nombreux inconvénients :
.

  1. Non pris en charge par le testeur de stratégie
  2. Ne peut pas rester dans le même magasin
  3. Tous les utilisateurs n'aiment pas exécuter l'EA avec leur DLL.
  4. D'après ce que j'ai compris (corrigez-moi si je me trompe), la DLL est chargée/déchargée à chaque appel.
Et MQL5 lui-même est un analogue de C++, seulement C99, c'est donc bien de cela qu'il s'agit.


PS. Je vais essayer de traduire mon robot en DLL - cela pourrait être plus rapide pour passer les tests et travailler en général.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
b2579.
Dossiers :
2579_lags.txt  653 kb
 
fxsaber:
Dans OnTick, je demande l'historique du tick à partir du tick précédent.

Ce n'est pas vraiment le sujet des décalages, mais je vais quand même demander. A quoi sert l'histoire ? Les tiques peuvent-elles être manquées ? MT4 a pratiqué cela, mais MT5 ne devrait pas le faire, n'est-ce pas ?

 
traveller00:

Ce n'est pas vraiment le sujet des décalages, mais je vais quand même demander. A quoi sert l'histoire ? Les tiques peuvent-elles être manquées ? MT4 le pratiquait, et MT5 ne devrait pas le faire, non ?

L'événementNewTick est généré lorsque de nouvelles cotations arrivent et est traité parOnTick() dans les EAs attachés. Si, à l'arrivée d'une nouvelle cotation, la fonction OnTick exécutée sur la cotation précédente est exécutée, la cotation entrante sera ignorée par le conseiller expert, car l'événement correspondant n'est pas placé dans la file d'attente des événements de l'EA.

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