Le terminal MT5 a été mis à jour aujourd'hui et la fenêtre "Optimisation" ne s'affiche pas pendant le test. - page 5

 
Texnolog:

Pourquoi casser un bon vieil algorithme et le remplacer par un nouveau qui est 3 fois plus lent ?

L'algorithme du testeur génétique n'a pas changé. Et les affirmations concernant les 3 fois sont absolument sans fondement.

La méthode de travail d'un cache des résultats précédents a changé. Et il est devenu bien meilleur et plus complet que le précédent.

Si vous devez introduire une nouvelle approche de la méthode génétique, ajoutez un nouvel élément à l'onglet "optimisation",

Créez une description et des techniques pour travailler avec elle.

Jetez un coup d'œil aux liens ci-dessus - tous ces articles proviennent de notre site. L'optimiseur génétique fait l'objet de discussions instantanées depuis de nombreuses années.

Cherchez"testeur de stratégie", "optimiseur génétique" dans la recherche, s'il vous plaît.

Et suivez mon conseil répété - l'optimisation d'un seul facteur de récupération en génétique est contre-indiquée. Vous trompez simplement l'algorithme avec un rapport"profit/tirage maximal" complètement instable et trompeur (pour les automatiques), qui génère facilement des valeurs énormes. Réfléchissez au comment et au pourquoi.


Nous corrigerons le dessin du graphique d'optimisation lundi.

 
Y aura-t-il une exécution partielle des ordres à cours limité, en fonction du volume du marché ?
 
pivomoe:
Y aura-t-il une exécution partielle des ordres à cours limité, en fonction des volumes passant par le marché ?

Avez-vous déjà vu des volumes dans un verre dans l'histoire ? Il est irréaliste de mettre en œuvre cette mesure sans avoir un aperçu du marché.

 
Aleksey Vyazmikin:

Avez-vous déjà vu des volumes dans un verre dans l'histoire ? Il est impossible de le faire sans un moule du verre.

Je n'en rêverais pas. Je voudrais que le Buy Limit avec le prix 90 et le lot 10 se déclenche partiellement, si, disons, il y avait un SELL tick avec le prix 89 et le volume 1. C'est très triste maintenant. L'ordre serait déclenché s'il y avait un tick BUY avec le prix 90 et le lot 1... et en plein volume.

 
Renat Fatkhullin:

L'algorithme du testeur génétique n'a pas changé. Les affirmations concernant les trois fois sont absolument sans fondement.

Ce qui a changé, c'est la façon dont fonctionne le cache des résultats précédents. Et il est devenu radicalement meilleur et plus complet que le précédent.


J'ai fait quelques tests comparatifs sur les nouvelles et anciennes versions du testeur.

Voici les résultats. Logs et description dans le post #34.

11

 

Voici mon test avec les conditions suggérées :

  • paramètres de https://www.mql5.com/ru/forum/241285/page4#comment_7271206
  • tous les caches de fichiers du testeur une fois retirés du disque avant le début des tests
  • Windows 10, Intel Xeon E5-2630 v4 @ 2.20GHz, 8 cœurs utilisés pour les agents

Passage complet jusqu'à la fin, puis redémarrage du terminal
avec arrêt à 1000 (environ) passages
Continuer après l'arrêt
Metatrader 5 build 1755
38 sec, 4780 passages
15 sec, 1105 passages
25 sec, 3487 passages
Metatrader 5 build 180933 sec, 5,549 passes
9 sec, 1126 passages
36 sec, 5863 passages


Metatrader 5 build 1755 :

  • Bild 1755 passage complet, un total de 8960 variantes passées, dont 4780 ont été effectivement calculées et 4180 ont été prises dans le cache accumulé dans la même session

    après quoi le terminal est redémarré pour éviter l'effet direct des caches chauds en mémoire
    2018.04.30 11:20:46.867	Tester	Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 11:20:47.118	Tester	genetic calculation is over
    2018.04.30 11:20:47.126	Tester	4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:20:47.338	Tester	result cache used 4180 times
    2018.04.30 11:20:47.338	Tester	genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 11:20:47.349	Statistics	optimization done in 0 minutes 38 seconds
    2018.04.30 11:20:47.349	Statistics	local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • construire 1755 avec un arrêt à 1337 exécutions. 216 d'entre elles sont prises dans le cache (216 / 1337 = 16% de succès dans le cache, pas beaucoup en raison du hasard du départ et de la petite taille de l'échantillon)
    2018.04.30 11:24:15.913	Tester	Best result 3254.53 produced at generation 0. Next generation 4
    2018.04.30 11:24:16.775	Tester	file cache used 19 times
    2018.04.30 11:24:16.775	Tester	result cache used 216 times
    2018.04.30 11:24:16.775	Tester	genetic optimization finished on pass 1337 (of 49644595)
    2018.04.30 11:24:16.775	Statistics	optimization done in 0 minutes 15 seconds
    2018.04.30 11:24:16.775	Statistics	local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1755 avec continuation après un arrêt sur Stop, le terminal n'a pas redémarré, continuation.

    le test continue à partir du point d'arrêt et non à partir du début comme dans le build 1809, puis à partir des 10496 passes proposées ont été prises 3487 et 66+3814 prises à partir du cache (66+3814 / 10496 = 36% cache hit)
    2018.04.30 11:26:27.931	Tester	Best result 3363.35 produced at generation 15. Next generation 32
    2018.04.30 11:26:28.104	Tester	genetic calculation is over
    2018.04.30 11:26:28.111	Tester	3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:26:28.539	Tester	file cache used 66 times
    2018.04.30 11:26:28.539	Tester	result cache used 3814 times
    2018.04.30 11:26:28.539	Tester	genetic optimization finished on pass 8704 (of 49644595)
    2018.04.30 11:26:28.550	Statistics	optimization done in 0 minutes 25 seconds
    2018.04.30 11:26:28.550	Statistics	local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    





Metatrader 5 build 1809 :

  • construire 1809 passes complètes, total 8960 passes, dont 5549 ont été réellement comptées et 3411 prises dans le cache hit accumulé dans la même session

    après quoi le redémarrage du terminal est effectué pour éviter l'influence directe des caches chauds en mémoire.
    2018.04.30 10:50:58.997 Tester  Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 10:50:59.485 Tester  genetic calculation is over
    2018.04.30 10:50:59.485 Tester  result cache used 3411 times
    2018.04.30 10:50:59.485 Tester  genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 10:50:59.495 Statistics      optimization done in 0 minutes 33 seconds
    2018.04.30 10:50:59.495 Statistics      local 5549 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • construire 1809 avec un arrêt à 1348 passes. 222 d'entre elles ont été prises dans le cache (222 / 1348 = 16% de cache hit, pas assez à cause du hasard du départ et du petit échantillon)
    2018.04.30 11:00:59.532 Tester  Best result 3263.17 produced at generation 0. Next generation 4
    2018.04.30 11:00:59.742 Tester  result cache used 222 times
    2018.04.30 11:00:59.742 Tester  genetic optimization finished on pass 1348 (of 49644595)
    2018.04.30 11:00:59.742 Statistics      optimization done in 0 minutes 09 seconds
    2018.04.30 11:00:59.742 Statistics      local 1126 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1809 avec continuation après un arrêt sur Stop, le terminal n'a pas redémarré, continuation.

    car le test est repris depuis le début, sur les 10240 passes proposées 5863 ont été effectuées proprement et 4377 ont été prises dans le cache (4377 / 10240 = 42% cache hit)
    2018.04.30 11:04:28.046 Tester  Best result 3391.17 produced at generation 27. Next generation 38
    2018.04.30 11:04:28.477 Tester  genetic calculation is over
    2018.04.30 11:04:28.477 Tester  result cache used 4377 times
    2018.04.30 11:04:28.477 Tester  genetic optimization finished on pass 10240 (of 49644595)
    2018.04.30 11:04:28.488 Statistics      optimization done in 0 minutes 36 seconds
    2018.04.30 11:04:28.488 Statistics      local 5863 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    



Maintenant, les conclusions :

  1. Votre déclaration sur "3 fois plus lent" est fausse.

  2. En fait, le testeur de la build 1809 est devenu plus rapide grâce à l'optimisation et à la réécriture des processus internes.

    Cela se voit dans le temps de passage complet, il est de 33 secondes au lieu de 38 secondes. Et 33 secondes pour un plus grand nombre de passages.

    Si nous recalculons le nombre de passages par seconde, il s'avère que :
    - build 1755 donne 4780 passages / 38 sec = 125 passages par seconde
    - build 1809 donne 5549 passages / 33 sec = 168 passages par seconde

  3. Le nouveau schéma de l'optimiseur génétique "continuation after stop" avec génération d'un nouveau plan de population est correct.

    Nous sommes en train de réévaluer le concept de testeur et de corriger les anciennes mauvaises décisions.

    Étant donné que les tests génétiques doivent être exécutés plusieurs fois pour couvrir plus complètement la zone de recherche, notre nouveau modèle avec visualisation des exécutions précédentes à partir du cache permet de mieux comprendre les mécanismes du flux de travail de la génétique.

    Le nouveau modèle d'affichage des résultats d'optimisation avec toutes les données des caches calculées précédemment ajoutées au tableau permet d'avoir une vision plus complète de la situation. Il est possible de calculer votre stratégie par morceaux et de voir les résultats complets à chaque fois, y compris les exécutions précédentes.

    C'est en raison des tableaux de résultats fusionnés très volumineux que nous avons désactivé l'affichage en temps réel de la liste des résultats, et que nous montrons le résultat agrégé après la fusion de tous les résultats précédents.
 

Mon robot se bloque pendant l'initialisation, à la fois en Runtime et en Debug. La compilation est bonne.

Il y a une classe avec des membres statiques dans le code, probablement à cause d'eux. Tout fonctionnait bien avant. Mais maintenant, il signale une erreur pendant l'initialisation globale.

J'ai supprimé les membres statiques de la classe, elle fonctionne bien.

 
Dennis Kirichenko:

Mon robot se bloque pendant l'initialisation, à la fois en Runtime et en Debug. La compilation est bonne.

Il y a une classe avec des membres statiques dans le code, probablement à cause d'eux. Tout fonctionnait bien avant. Maintenant, il écrit une erreur pendant l'initialisation globale.

Suppression des éléments statiques dans la classe, lancée normalement.

Écrivez votre demande au Service Desk et joignez le conseiller expert (peut être un fichier ex5), s'il vous plaît.

 
Aleksey Vyazmikin:

Tout cela est génial !

Toutefois, veuillez rétablir l'onglet "Optimisation" - il est impossible de travailler sans analyse opérationnelle ! Les grands tableaux sont lents - faisons un filtre - montrons les 20 premiers pour chaque critère - ce n'est pas si gourmand en ressources( ?), mais cela aidera à voir le tableau. Et, ces milliards de passes - qui les fabrique ? Ce sont des unités dotées d'énormes capacités - vous parlez vous-même du caractère raisonnable de l'application de la génétique, et il n'y a pas de tels portmanteaux. Ainsi, plus de 10 000 passages est une rareté.


Triste.

Au moins, il a été possible de dresser un tableau à partir de données préliminaires, pendant que l'optimisation se poursuit.

 
Renat Fatkhullin:

Nous sommes en train de procéder à une importante mise à niveau des performances du testeur et de redéfinir les modes de charge lourde. Des améliorations majeures ont été apportées et de nouvelles méthodes d'accélération seront bientôt mises en œuvre.

La fenêtre de la liste des allées a décidé de s'afficher à la fin de l'erreur de calcul, afin de ne pas gaspiller des ressources vraiment importantes pour maintenir, retrier et afficher la liste des allées qui change constamment.

Il y a vraiment eu un énorme gaspillage de ressources et des ralentissements. Surtout quand il s'agit de centaines de milliers de lignes, de millions et de dizaines de millions de passages. Il n'y a aucun sens raisonnable à regarder un tas de données préliminaires avec les yeux.


Nous réalisons notre propre optimisation et effectuons des tests avec 100 millions de passages complets.

Évidemment, avec de tels chiffres, il est hors de question de refaire un tri en temps réel et d'afficher un tableau de 2-5-10-50 millions de valeurs. Il n'y a qu'une seule option : tout rassembler rapidement et économiquement, faire un tri final et fournir une vue de toute profondeur.

Parlez-nous en, et c'est tout.