L'optimisation dans le testeur de stratégie - page 16

 
Renat:

Dans les dernières versions, nous avons complètement éliminé les surcharges du système lors de l'exécution des tâches, les faisant passer de près de 2000 ms à zéro.

Voici les résultats de l'exécution d'une tâche de calcul, qui a été suggérée par joo :

Paramètres (les dates sont fixées exprès pour que l'historique des graphiques ne soit pas utilisé) :

Paramètres à exécuter :

Agents utilisés (4 agents locaux) :

Résultats de l'optimisation :

L'optimisation n'a pris que 25 secondes et 18 432 passages ont été effectués :

Retour à l'ancienne tâche d' optimisation du testeur de stratégie de trading.

Les améliorations apportées au plan général de la construction 425 ont donné lieu à :

  • réduction des frais généraux du système en vue des passages
  • l'ajout d'un mode "calculs mathématiques" explicite à la sélection du type de simulation, ce qui a simplifié la configuration

Encore une fois avec le même matériel (4 agents locaux) et des caches propres dans la version 425 :

Tester	optimization passed in 0 minutes 07 seconds
Tester	genetic optimization finished on pass 19456 (of 100000020000001)
Tester	result cache was used 10124 times
Tester	genetics is over

Par rapport auproblème soulevé à l'origine(l'overhead était de 2 secondes par passage), nous avons résolu le problème avec succès. La même tâche a commencé à compter en 7 secondes au lieu de 25 secondes.

La base de la lutte contre les surcharges du système était de regrouper les tâches. La vitesse d'exécution de chaque agent est maintenant mesurée, et un lot de 1-64 tâches nous a été donné pour le calcul. Par conséquent, le temps nécessaire pour préparer les tests et obtenir les résultats est proportionnellement réduit. Les agents rapides obtiennent plus de tâches et des lots plus importants que les agents lents. Cela est particulièrement avantageux pour les tâches de calcul rapide, où le temps de calcul utile est comparable au temps de préparation des tests et d'envoi des résultats.

Le travail d'optimisation de la maintenance des agents n'est pas encore terminé. Pour le travail efficace des agents à distance dans le réseau en nuage de MQL5, la réduction des coûts de communication est la question principale.

 

Aidez-nous à comprendre !

Les blocs de code suivants fonctionnent bien dans le terminal sur un compte de démonstration, mais lorsqu'ils sont testés, ils donnent un message d'erreur 4109.

if(!ChartGetDouble(0,CHART_PRICE_MAX,0,price_max))
 {
  printf(__FUNCTION__,": Не получены данные по максимальной цене. Ошибка: %g.",GetLastError());
 }

La même situation se produit avec

if(!ChartGetDouble(0,CHART_PRICE_MIN,0,price_min))
 {
  printf(__FUNCTION__,": Не получены данные по минимальной цене. Ошибка: %g.",GetLastError());
 }
 
slyusar:

Aidez-nous à comprendre !

Les blocs de code suivants fonctionnent bien dans le terminal sur un compte de démonstration, mais lorsqu'ils sont testés, ils donnent un message d'erreur 4109.

La même situation se produit avec

Les diagrammes et les objets graphiques ne sont pas modélisés pendant les tests car cela réduit considérablement la vitesse des tests.
 
Renat:
Les diagrammes et les objets graphiques ne sont pas modélisés pendant les tests, car cela réduit de façon catastrophique la vitesse des tests.
Je vois, merci. Y a-t-il un moyen de sortir de cette situation ?
 
Renat:
Les diagrammes et les objets graphiques ne sont pas modélisés pendant les tests, car cela réduit de façon catastrophique la vitesse des tests.
J'espère vraiment que ce genre de simulation sans graphisme ne sera qu'en mode sans "visualisation".
 
sergeev:
J'espère vraiment que ce type de modélisation sans graphisme ne sera que dans un mode sans "visualisation".
Un soutien total, des graphiques sont parfois très nécessaires...
 
Renat:

Revenons à l'ancienne tâche d'optimisation du testeur de stratégie de trading.

Les améliorations apportées au plan d'ensemble de la construction 425 se sont traduites par :

  • réduction des frais généraux du système en vue des passages
  • ajout du mode explicite "calculs mathématiques" dans la sélection du type de simulation, ce qui a simplifié la configuration

Un autre résultat sur le même matériel (4 agents locaux) et des caches propres dans la version 425 :

Par rapport auproblème soulevé à l'origine(l'overhead était de 2 secondes par passage), nous avons résolu le problème avec succès. La même tâche a commencé à compter en 7 secondes au lieu de 25 secondes.

La base de la lutte contre les surcharges du système était de regrouper les tâches. La vitesse d'exécution de chaque agent est maintenant mesurée, et un lot de 1-64 tâches nous a été donné pour le calcul. Par conséquent, le temps nécessaire pour préparer les tests et obtenir les résultats est proportionnellement réduit. Les agents rapides obtiennent plus de tâches et des lots plus importants que les agents lents. L'effet est particulièrement important pour les tâches de calcul rapide, où le temps des calculs utiles est comparable au temps de préparation du test et d'envoi des résultats.

Le travail d'optimisation de la maintenance des agents n'est pas encore terminé. Pour le travail efficace des agents à distance dans le réseau en nuage MQL5, la réduction du coût de la communication est la question principale.

Un changement très sérieux pour le mieux - merci.

Qu'en est-il de la limite de 64 paramètres ? C'est le seul facteur, du moins pour moi, qui limite l'utilisation à part entière de l'optimiseur. Je veux déjà oublier tout ce qui se passe et écrire pour le monde "réel", afin que le testeur puisse être optimisé sans aucune modification du code.

 
Nous nous occuperons des paramètres après avoir exécuté le visualiseur de test.
 
joo:

Un changement très sérieux pour une amélioration - merci.

Qu'en est-il de la limite de 64 paramètres ? C'est le seul facteur, du moins pour moi, qui limite l'utilisation à grande échelle de l'optimiseur. Et comme j'ai envie d'oublier toute cette agitation et d'écrire tout de suite pour le "monde réel" afin de pouvoir l'optimiser dans le testeur sans modifier le code.

Je vous soutiens.
Renat:
Nous traiterons des paramètres après le démarrage du visualiseur de test.
Merci ! Nous attendrons.
 
Renat:

Revenons au vieux problème de l'optimisation du testeur de stratégie de trading.

Résultats suivants sur le même matériel (4 agents locaux) et caches propres dans la version 425 :

Par rapport auproblème soulevé à l'origine(l'overhead était de 2 secondes par passage), nous avons résolu le problème avec succès. Le même problème se pose maintenant en 7 secondes au lieu de 25 secondes.

Dans la prochaine version qui sera publiée, nous avons fait beaucoup de travail pour optimiser le calcul de masse des problèmes mathématiques. Les frais généraux du système ont été réduits à zéro.

Maintenant le même problème avec le même matériel (Intel Q9400, 4 cœurs locaux) pour ~18 000 calculs prend 1 seconde (la dernière fois c'était 7 secondes, alors qu'avant cela prenait 25 secondes) :

2011.04.04 20:12:34    Tester    optimization passed in 0 minutes 01 seconds
2011.04.04 20:12:34    Tester    genetic optimization finished on pass 18432 (of 1000000002000000001)
2011.04.04 20:12:34    Tester    result cache was used 9718 times
2011.04.04 20:12:34    Tester    genetics is over


À titre de comparaison, je peux montrer combien de temps, sur le même matériel, la même tâche mathématique passe à calculer 4 millions de passages (en réduisant le pas à 0,005, le nombre total de calculs est devenu 4 millions, ce qui permet d'effectuer un calcul complet) :



2011.04.04 20:10:34    Tester    optimization passed in 0 minutes 46 seconds
2011.04.04 20:10:34    Tester    optimization finished, total passes 4004001


En 46 secondes, l'erreur de calcul complète de 4 millions de tâches a lieu, la fenêtre des résultats d'optimisation affiche les 4 millions de lignes avec les résultats, le tableau entier est instantanément trié sur n'importe quel champ, le graphique d'optimisation rend rapidement les 4 millions de valeurs, le graphique 3D dessine une surface 3D à partir des mêmes résultats et la fait tourner sous différents angles :