Discussion de l'article "Création de Critères Personnalisés d’Optimisation des Expert Advisors" - page 2
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Voulez-vous dire que le code est du type
si (solde < 3000) ExpertRemove() ;
ne fonctionne pas ?
Il fonctionne. J'ai déjà compris. Il interrompt l'optimisation mais affiche quand même les résultats, c'est pourquoi je pensais qu'il ne fonctionnait pas.
Karlson:
Mais ce n'est pas ce que j'ai dit. J'ai dit qu'une telle panne (qui fonctionnait auparavant au moins) entraînait le départ des généticiens à la fin.
Karlson : C'est le cas.
Mais si vous remettez les résultats de OnTester() à zéro ou faites comme ci-dessus (assignez la valeur moins -777), alors la génétique peut vraiment se comporter de manière imprévisible, parce que la sélection est effectuée sur les résultats juste par la valeur de retour de OnTester().
Une telle chose existait dans MT4 :
Il est certainement possible de le faire à l'aide des outils MQL5, puisque les développeurs ont complètement supprimé ces fonctions.
Bien sûr, tout peut être copié dans Excel, mais j'aimerais profiter de la nouvelle plateforme.
Nous avons résolu les limitations - nous pouvons le faire avec ExpertRemove().
Qu'en est-il de l'élimination des résultats inutiles dans le rapport ?
Qu'en est-il de la possibilité d'ignorer les résultats inutiles dans le rapport ?
Vous ne pouvez pas le faire dans le rapport standard et vous n'avez pas besoin de le faire (je suis contre). Créez votre propre rapport.
Vous pouvez désormais générer un rapport au stade de l'optimisation(https://www.mql5.com/fr/docs/optimization_frames) dans le format de votre choix.
Et bientôt (hoo-hoo) il sera possible de gérer soi-même la génétique.
Excellent.
Grâce à mes travaux antérieurs dans le domaine des réseaux neuronaux et des algorithmes génétiques pour la prédiction des contrats à terme, j'ai réalisé l'importance d'une courbe d'actions raisonnablement droite.
et j'ai écrit quelques routines pour en tenir compte. Il s'agit vraiment d'une mesure de la "robustesse" d'un système prédictif.
Constatations lors des travaux pratiques.
Le module sur la rectitude est un bon début, mais il est incomplet. Il est possible d'obtenir une très bonne note avec un bénéfice nul. Le bénéfice doit donc entrer dans l'équation. Se contenter d'ajouter une mesure du bénéfice total ne fonctionne pas.
ne fonctionne pas. Vous pourriez obtenir une ligne très droite avec une bonne valeur en ayant quelques gains au début, quelques baisses au milieu et quelques meilleurs gains à la fin. On obtiendrait ainsi une ligne droite de niveau avec une bonne adéquation et un certain profit. Mais ce n'est pas vraiment ce que nous recherchons.
Nous voulons vraiment une ligne de régression qui monte avec un bon ajustement. Ainsi, pour concrétiser l'idée d'utiliser une ligne de régression avec le moins d'écart possible, le coefficient de la pente ascendante doit être incorporé dans l'équation. C'est ce que nous voulons voir.
c'est ce que nous voulons voir. Une ligne de régression à pente ascendante avec un bon ajustement. J'essaierai de l'incorporer. Les suggestions et l'aide sont les bienvenues :-)
J'essaie le code CSTS.
Je trouve ce résultat un peu étrange :
Résultat Profit #Trades Frofit factor DrawDown Expected Payoff Recovery Factor
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
Voici un autre exemple
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
A tous points de vue, les valeurs de la deuxième ligne sont meilleures ! mais le score est plus bas.
La seule chose que je peux déduire est qu'il y a une pénalité sur de nombreuses transactions. J'aurais préféré que ce soit l'inverse
Et pour finir, il semble qu'il n'y ait qu'une seule personne intéressée. Il semble qu'il n'y ait qu'une seule personne intéressée par ce sujet, moi.
Pour aller plus loin. J'ai fait une erreur dans mon code et cela a eu pour conséquence que les ordres en attente n'ont pas été effacés. Il en résulte également que seulement 5 ordres ont été placés pour une période de test de 12 mois. Avec un bon profit.
Cela a vraiment boosté le résultat de l'optimisation à plus de 100. Il est clair que la valeur du "gain moyen" était extrêmement élevée, ce qui a entraîné ce score extrême. Techniquement, c'est correct, mais cela n'a pas de sens dans le contexte du backtesting.
dans le contexte du backtesting. Quelle est la probabilité que des tendances longues comme celle-ci soient représentatives ? J'ai donc pensé que le nombre de transactions devait être incorporé dans l'équation d'une manière ou d'une autre.
Avec quelques essais et erreurs en modifiant le code, je suis arrivé à une méthode qui produit des résultats que je trouve utiles.
change :
// CSTS :
double tssf=real/teor ;
if(tssf <= 0) return 0 ;
work = TesterStatistics( STAT_TRADES ) ;
if( work <= 0) work = 1 ;
work = MathSqrt(work/4) ;
tssf = tssf * work ;
if( tssf < 1 ) tssf = 0 ;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0 ;
return(tssf) ;
La méthode originale est probablement bonne pour juger d'un système en fonctionnement mais fondamentalement inutile pour baser les paramètres d'un backtest.
Eh bien, me revoilà, le loup solitaire de cet univers :-)
J'ai essayé le critère de la rectitude en essayant d'intégrer la pente de la ligne droite calculée dans l'équation. En l'état, cela peut donner une note très élevée pour un bénéfice très faible. Le simple fait d'ajouter le bénéfice final
Dans une tentative d'ajouter la pente réelle dans l'équation, j'ai modifié le code comme indiqué ci-dessous.
Ce n'est pas une solution parfaite mais elle est plus proche de ce que je veux voir. L'utilisation du résultat avec le solde ou le bénéfice fonctionne bien pour moi avec ce code.
Eh bien, me revoilà, le loup solitaire de cet univers :-)
J'ai essayé le critère de la rectitude en essayant d'intégrer la pente de la ligne droite calculée dans l'équation. En l'état, cela peut donner une note très élevée pour un bénéfice très faible. Le simple fait d'ajouter le bénéfice final
Dans le but d'ajouter la pente réelle dans l'équation, j'ai modifié le code comme indiqué ci-dessous.
Ce n'est pas une solution parfaite mais elle est plus proche de ce que je veux voir. L'utilisation du résultat avec le solde ou le bénéfice fonctionne bien pour moi avec ce code.
Par exemple, pour les algorithmes génétiques, vous devez avoir un bon algorithme de fitness, et bien sûr créer un critère personnalisé aligné sur ce fitness.
Je ne suis pas sûr que calculer la pente de la courbe d'équilibre soit la meilleure façon, puisque nous avons plusieurs autres façons, en tout cas comptez sur moi pour explorer et débattre de ces idées.