Discussion de l'article "Création de Critères Personnalisés d’Optimisation des Expert Advisors"

 

Un nouvel article Création de Critères Personnalisés d’Optimisation des Expert Advisors a été publié :

Le terminal client MetaTrader 5 offre un large éventail de possibilités d’optimisation des paramètres de l’Expert Advisor. En plus des critères d’optimisation compris dans le testeur de stratégie, les développeurs sont offerts une opportunité de créer leurs propres critères. Cela conduit à un nombre presque illimité de possibilités de test et d’optimisation des Expert Advisors. L’article décrit des méthodes pratiques d’établir de tels critères - à la fois complexes et simples.

Si vous examinez la documentation, vous trouverez la description suivante : titlehttps://www.metatrader5.com/fr/terminal/help/algotrading/testingtitle critère d’optimisationtitlehttps://www.metatrader5.com/ru/terminal/help/algotrading/optimization_types est un certain facteur, dont la valeur définit la qualité d’un ensemble de paramètres testés.title Plus la valeur du critère d’optimisation est élevée, meilleur est le résultat du test avec l’ensemble de paramètres donné.

Ici, nous devrons faire une note importante: un critère d’optimisation ne peut être utilisé que dans le mode d’optimisation de l’algorithme génétique. Il est clair que lorsque l’on passe en revue toutes les combinaisons possibles de valeurs de paramètres, il ne peut y avoir aucun facteur de choix des paramètres optimaux d’un Expert Advisor. L’autre côté est que nous pouvons enregistrer les résultats des tests, puis les traiter pour trouver une combinaison optimale de paramètres.

Comme il est écrit dans la documentation, le testeur de stratégie inclut les critèressuivants à utiliser avec l’algorithme génétique :

Un critère d’optimisation peut être sélectionné dans l’onglet Paramètres du testeur de stratégie comme le montre la fig. 1 :

Choisir le critère d’optimisation pour un Expert Advisor

Fig. 1. Choisir le critère d’optimisation pour Expert Advisor

Auteur : Dmitriy Skub

 
Vous savez, l'EA multi-paires a des résultats de test différents selon les symboles. Je teste l'EA en EURUSD, il n'ouvre pas de transactions longues en AUDUSD, puis je le teste en AUDUSD, il n'ouvre pas de transactions courtes en EURUSD ! Comment résoudre ce problème ? Merci de votre compréhension.
 

Merci pour cet excellent article, Dmitriy,

Y a-t-il un moyen ou une possibilité d'intégrer les critères de Perfect Profit de Pardo http://www.breakoutfutures.com/Newsletters/Newsletter0605.htm en plus de vos critères ?

 

Article très utile, tout est facile à utiliser.....

Mais il ne décrit que les critères d'appel de la fonction OnTester(), c'est à dire quand l'optimisation est terminée avec ce paramètre.

Est-il possible d'interrompre l'optimisation plus tôt, par exemple si le drawdown est supérieur à 50% ou si le solde est inférieur à la valeur n, afin de ne pas gaspiller le temps de l'unité centrale !

 
sigma7i:

Article très utile, tout est facile à utiliser.....

Mais il ne décrit que les critères d'appel de la fonction OnTester(), c'est à dire quand l'optimisation est terminée avec ce paramètre.

Est-il possible d'interrompre l'optimisation plus tôt, par exemple lorsque le drawdown est supérieur à 50% ou que le solde est inférieur à la valeur n, afin de ne pas perdre de temps CPU !

ExpertRemove
 
MetaDriver:
ExpertRemove
Oh, c'est vrai !!! Je vous remercie !
 

Pourriez-vous me dire s'il est possible de filtrer les résultats inutiles après la fin de l'optimisation (appel OnTester), par exemple avec un résultat négatif, afin de ne pas encombrer l'onglet"résultats de l'optimisation" ? ?

 

Le tri peut être effectué en cliquant sur...

sur n'importe quelle colonne.

PS : les résultats ne sont pas toujours sciemment erronés ; au cours du processus d'optimisation génétique, vous pouvez "arracher" ExpertRemove().

Réinitialisation également dans OnTester().

Personnellement, il m'est arrivé que la génétique aille dans le mauvais sens.

 
Karlson:

Le tri peut être effectué en cliquant sur le...

sur n'importe quelle colonne.

Vous pouvez également le mettre à zéro dans OnTester().

Pour moi, personnellement, la génétique a parfois pris le mauvais chemin.

Alors c'est le tri, je veux que les résultats non désirés ne soient pas affichés du tout....

avec le tri, c'est simple, par exemple :

double  OnTester()
double  balance = TesterStatistics(STAT_PROFIT);
double  trades_number = TesterStatistics(STAT_TRADES);

if(balance < 5000 || trades_number < 20) return(-777);

....бла бла return(свой критерий оптимизации);

et puis on trie...

mais c'est un peu "maladroit", je veux que les résultats indésirables ne soient pas affichés du tout.

 

Karlson:

Il n'est pas toujours possible de "démolir" ExpertRemove() au cours du processus d'optimisation génétique.

Vous avez raison de dire que je n'arrive pas à "arracher" les résultats pendant l'optimisation (pas seulement génétique) en utilisant ExpertRemove()....

peut-être que je ne sais pas comment le préparer :) ...je l'ai mis dans le gestionnaire OnTick() avec une condition...

 

Êtes-vous en train de dire qu'un code comme :

if (balance < 3000) ExpertRemove();

ne fonctionne pas ?

Mais ce n'est pas ce que j'ai dit. J'ai dit qu'une telle décomposition (qui a fonctionné dans le passé au moins) a conduit à une fuite génétique à la fin.