Analyse des résultats des tests et optimisation dans le testeur de stratégie MetaTrader 5 - page 5

 
Anatoli Kazharski:

La même chose que ce qui est fait maintenant. Chargez les symboles pendant le processus de test.

Ou, immédiatement avant le début de l'essai, définir et ajouter aux symboles sélectionnés pour l'essai dans la liste, si une telle liste existe. Sinon, s'il est déterminé que les symboles qui sont dans le cache ne sont plus nécessaires, alors ne les utilisez pas dans le test.

Je ne peux pas avoir une réponse définitive dans tous les cas, mais seulement au niveau des hypothèses et des suggestions d'options.

Ok.

L'expert ne fait pas de commerce. Mais comme il semble vérifier la possibilité d'entrer sur le marché, une autre paire est chargée en plus de la principale pour le calcul des exigences de marge. Les données de deux paires sont mises en cache afin de ne pas perdre de temps à déballer et préparer les données lors du test suivant.

Le conseiller expert commence à négocier. La deuxième paire manquante est chargée pour calculer le bénéfice. Ces données sont à nouveau mises en cache, afin de ne pas perdre de temps à les décompresser et à les préparer lors du prochain test.

Personnellement, vous n'aimez pas perdre du temps à appliquer des tics "inutiles" à l'histoire. D'autres n'apprécieront pas du tout de perdre beaucoup plus de temps dans la ré-extraction et la préparation des données.

OK, tu réponds. Pourquoi ne pas appliquer, tant qu'il n'y a pas de demande, des tics d'outils "superflus" ? "Bonne question" (ts) Et par ce moment, le moment de la demande, vous devez construire l'histoire, (et en plus avoir des tics, parce que quelqu'un peut les demander aussi). La perte de temps sera encore plus importante que si nous construisons progressivement l'histoire (comme nous le faisons actuellement).

Il n'y a aucune garantie qu'un expert qui utilise une histoire particulière ne l'utilisera pas pour d'autres passes. 99 % de chances que l'histoire des passages suivants soit la même que celle des passages précédents.

 
Je suis d'accord avec Slava - l'exemple est sphérique.
 
Slava:

Ok.

Le conseiller expert n'effectue pas de transactions. Mais étant donné qu'il semble vérifier la possibilité d'entrer sur le marché, une paire supplémentaire est chargée en plus de la paire principale pour le calcul des exigences de marge. Les données de deux paires sont mises en cache afin de ne pas perdre de temps à déballer et préparer les données lors du test suivant.

Le conseiller expert commence à négocier. La deuxième paire manquante est chargée pour calculer le bénéfice. Ces données sont à nouveau mises en cache, afin de ne pas perdre de temps à les décompresser et à les préparer lors du prochain test.

Personnellement, vous n'aimez pas perdre du temps à appliquer des tics "inutiles" à l'histoire. Tous les autres n'apprécient pas du tout de perdre beaucoup plus de temps sur le remballage et la préparation des données.

OK, tu réponds. Pourquoi ne pas appliquer, tant qu'il n'y a pas de demande, des tics d'outils "superflus" ? "Bonne question" (ts) Et à ce moment, le moment de la requête, vous devez construire l'histoire, (et en plus avoir des tics, parce que quelqu'un peut les demander aussi). La perte de temps sera encore plus importante que si nous construisons progressivement l'histoire (comme nous le faisons actuellement).

Vous ne pouvez pas prédire de manière fiable que le conseiller expert qui utilise un certain historique n'utilisera pas le même historique sur d'autres passes. 99 % de chances que l'historique utilisé lors des passages ultérieurs des tests soit le même que celui utilisé lors des passages précédents.

Je n'insiste pas vraiment. Vous auriez pu commencer tout de suite par cette clarification. Si vous êtes sûr que votre option est la meilleure, vous pouvez gagner du temps sans perdre de temps à en discuter. Mais une clarification est nécessaire, si je peux me permettre, car je ne suis pas sûr d'avoir été compris.

Toutes ces précisions concernent-elles le processus d'optimisation ?

Et s'il ne s'agissait que du processus de test unique ? Pourquoi les ticks de GBPUSD et AUDUSD des tests précédents alors que seul EURUSD est testé ?

Je ne vois tout simplement pas dans quel cas nous pourrions avoir besoin des ticks d'autres symboles (GBPUSD et AUDUSD), alors qu'un seul symbole (EURUSD) est nécessaire. J'ai besoin d'exemples et de chiffres précis.

Que faire si j'ai déjà testé 20 symboles à la fois ? Pourquoi ai-je besoin des ticks de tous ces symboles si je ne dois en tester qu'un seul ? Plus le nombre de personnages utilisés dans le test unique précédent est élevé, plus le test sur un seul personnage sera long. Je peux, après tout, passer à des tests sur des personnages d'un groupe de personnages complètement différent. Et je n'ai pas du tout besoin des données du groupe de caractères précédent pour le moment.

Et de quel type de temps parle-t-on (déballage/préparation) ? Combien de temps faut-il pour déballer et préparer les données ? Et combien de temps augmente pour un test unique après un test multi-symboles ?

Je vais faire les tests maintenant et vous montrer les résultats. J'ai besoin d'une clarification concernant un exemple spécifique.

 
Anatoli Kazharski:
La case à cocher "Réinitialiser les caches" est manquante.
 

1 symbole : EURUSD

2018.01.29 19:30:33.875 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:00:27.266 (including ticks preprocessing 0:00:01.282).
2018.01.29 19:30:33.875 Core 1  EURUSD,M5: total time from login to stop testing 0:00:27.344 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:30:33.875 Core 1  837 Mb memory used including 8 Mb of history data, 512 Mb of tick data

//---

5 symboles : EURUSD,GBPUSD,USDJPY,AUDUSD,USDCAD

2018.01.29 19:59:39.750 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:11:52.156.
2018.01.29 19:59:39.750 Core 1  EURUSD,M5: total time from login to stop testing 0:11:52.234 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:59:39.750 Core 1  130637614 total ticks for all symbols
2018.01.29 19:59:39.750 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 19:59:39.750 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 19:59:39.750 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 19:59:39.750 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 19:59:39.750 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 19:59:39.750 Core 1  1574 Mb memory used including 44 Mb of history data, 1088 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Maintenant, nous devons tester à nouveau sur un seul symbole.

1 symbole : EURUSD

2018.01.29 20:04:25.737 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:01:34.203.
2018.01.29 20:04:25.737 Core 1  EURUSD,M5: total time from login to stop testing 0:01:34.281 (including 0:00:00.078 for history data synchronization)
2018.01.29 20:04:25.737 Core 1  130637614 total ticks for all symbols
2018.01.29 20:04:25.737 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 20:04:25.737 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 20:04:25.737 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 20:04:25.737 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 20:04:25.737 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 20:04:25.737 Core 1  1288 Mb memory used including 44 Mb of history data, 1024 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Dans ce cas, pourquoi avons-nous besoin des ticks de ces symboles? En raison de cette charge supplémentaire, le temps de test sur un symbole a été multiplié par plus de 3. L'intervalle de temps est d'un an. Et si j'avais besoin de faire un test sur 5 ans ?

 
fxsaber:
La case à cocher "Réinitialiser les caches" est manquante.
Il est peut-être possible de se passer complètement de la case à cocher. Il faut juste le trouver.
 
fxsaber:
La case à cocher "Réinitialiser les caches" est manquante.

Nous avons eu un tel tic (similaire) en quatre. Nous l'avons enlevé. Parce qu'il y a eu un malentendu de la part de la majorité des utilisateurs et beaucoup de questions.

 
Slava:

Nous avons eu un tel tic (similaire) en quatre. Nous l'avons enlevé. Comme il y avait un malentendu parmi la majorité des utilisateurs et de nombreuses questions.

Il y a toujours le fichier terminal.ini :)
 

Trois postes seront publiés prochainement :

  1. Combien de temps dure un test d'EA dans le testeur de stratégie?
  2. Combien de temps faut-il pour optimiser les paramètres sur un ordinateur ?
  3. Combien de temps faut-il pour optimiser les paramètres dans le nuage ?

Je vais utiliser mon propre conseiller expert pour les tests. Vous pouvez effectuer la même série de tests et présenter vos résultats. Dans mon cas, je reçois plusieurs dizaines de milliers d'offres pendant un an.


1. Quelle est la durée d'un test d'un conseiller expert dans le testeur de stratégie ?

Prenons l'exemple des résultats du test dans le mode "Open price only". Cadre temporelM5(données de 5 minutes). Type de compteHedge. Période d'un an(2017.01.01-2018.01. 01).

Symbole: EURUSD

EURUSD,M5: 281877 ticks, 74300 bars generated. Test passed in 0:00:01.453.
282883 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
466 Mb memory used including 8 Mb of history data, 64 Mb of tick data

D'après les résultats du test ci-dessus, nous pouvons constater que le test sur un symbole dure1 à 1,5 seconde pendant une période d'un an.

Essayons maintenant de tester une paire de devises sans devise de compte. Par exemple, si votre compte est en USD, prenons pour le test un symbole qui n'a pas d'USD. Par exemple, EURCHF. La raison en est que pour calculer correctement les marges requises et les bénéfices, le test utilisera dans ce cas les symboles EURUSD et USDCHF, ce qui augmente la durée du test.

Symbole: EURCHF

EURCHF,M5: 281063 ticks, 74273 bars generated. Test passed in 0:00:01.860.
846826 total ticks for all symbols
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
USDCHF: passed to tester 281475 ticks
467 Mb memory used including 8 Mb of history data, 64 Mb of tick data

Comme on peut le voir, le test des taux croisés sera environ deux fois plus long. Dans ce cas, le test a pris1,5 à 2 secondes. Essayons maintenant de le tester sur plusieurs symboles.

Symboles: EURUSD,GBPUSD,USDJPY

EURUSD,M5: 282881 ticks, 74300 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:07.172.
EURUSD,M5: total time from login to stop testing 0:00:07.203 (including 0:00:00.031 for history data synchronization)
853054 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
GBPUSD: passed to tester 285067 ticks
USDJPY: passed to tester 285104 ticks
628 Mb memory used including 26 Mb of history data, 64 Mb of tick data

Symboles: EURCHF,AUDCAD,AUDNZD

EURCHF,M5: 282465 ticks, 74273 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:12.109.
EURCHF,M5: total time from login to stop testing 0:00:12.140 (including 0:00:00.031 for history data synchronization)
2264405 total ticks for all symbols
AUDCAD: passed to tester 284995 ticks
AUDNZD: passed to tester 285398 ticks
AUDUSD: passed to tester 282069 ticks
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
NZDUSD: passed to tester 282153 ticks
USDCAD: passed to tester 282964 ticks
USDCHF: passed to tester 281475 ticks
854 Mb memory used including 26 Mb of history data, 192 Mb of tick data

Lors du test de plusieurs symboles, la vitesse du test ralentit. Malheureusement, il n'est pas possible de procéder différemment aujourd'hui, sans perdre la précision des tests. Mais, comme mentionné précédemment, dans la prochaine mise à jour, les développeurs du terminal vont étendre les capacités de MQL5, en ajoutant la possibilité d'effectuer des tests multi-symboles beaucoup plus rapidement.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

2. Combien de temps faut-il pour optimiser les paramètres de mon ordinateur ?

A titre d'exemple, essayons d'optimiser les paramètres sur les données du courtierAlpari sur différents symboles en modeOpen price only. Cadre temporelM5(données de cinq minutes). Type de compte decouverture. Période d'un an(2017.01.01-2018.01. 01).

Symbole: EURUSD

result cache used 7953 times
genetic optimization finished on pass 15616 (of 504330836375520000)
optimization done in 28 minutes 56 seconds
local 7663 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Symbole: EURCHF

result cache used 2507 times
genetic optimization finished on pass 8704 (of 504330836375520000)
optimization done in 32 minutes 50 seconds
local 6197 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Symboles: EURUSD,GBPUSD,USDJPY

result cache used 9892 times
genetic optimization finished on pass 18176 (of 504330836375520000)
optimization done in 2 hours 15 minutes 03 seconds
local 8284 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Symboles: EURCHF,AUDCAD,AUDNZD

result cache used 7281 times
genetic optimization finished on pass 13312 (of 504330836375520000)
optimization done in 3 hours 13 minutes 37 seconds
local 6031 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Dans un avenir proche, le terminalMetaTrader 5 sera mis à jour, et la vitesse des tests et de l'optimisation sera beaucoup plus rapide. Peut-être sera-t-il alors possible d'effectuer l'optimisation même en modeTous les ticks. En outre, l'utilisation du serviceMQL5 Cloud Network deviendra plus rentable, car la vitesse d'optimisation augmentera.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Raison: