Optimisez un EA et obtenez le meilleur des EA optimisés. - page 23

 
+1 Pris celui qui reste à optimiser
Dossiers :
 
George Merts:

Pertinent en tout cas.

Même si vous effectuez plusieurs optimisations en même temps, cela permettra de mieux sélectionner le meilleur ensemble de paramètres d'entrée, simplement en fusionnant les fichiers XML et en les traitant par le script d'évaluation. Il ne peut y avoir de problèmes que si le script trouve des erreurs, comme la dernière fois, lorsque je n'ai pas marqué toutes les variables dans le fichier SET. Le script me disait "fichier invalide", mais je n'arrivais pas à comprendre ce qui n'allait pas.

Pour que votre optimisation soit prise en compte. Maintenant je vais le traiter, mettre à jour la version sur Yandex, et poster les prochains experts "abandonnés" de la Ligue. Si c'est intéressant - je peux écrire "pour ce que j'ai été viré". :)

En général, je pensais que la génétique sélectionnerait les mêmes résultats à chaque fois, n'est-ce pas ?

Des statistiques sur les abandons peuvent être collectées, peut-être ces données permettront-elles d'améliorer le conseiller, si l'approche change ...

 
Aleksey Vyazmikin:

En général, je pensais que la génétique permettait d'obtenir les mêmes résultats à chaque fois, n'est-ce pas le cas ?

Les statistiques de départ peuvent être collectées, peut-être suivre ces données pour améliorer l'EA, si l'approche change...

La génétique - ne peut pas donner les mêmes résultats. Seulement les proches. Et ce, si la fonction est suffisamment "égale".

Nous avons un espace d'un milliard d'options cobmin. Nous devons sélectionner les meilleurs.

Tout d'abord, nous prenons au hasard 512 variantes. C'est la première génération.

Puis nous formons la génération suivante - nous effectuons des changements de paramètres aléatoires - des mutations dans chaque cobmination. Nous obtenons 1024 individus. Nous sélectionnons le 512 ayant la valeur la plus élevée de la fonction de fitness (fonction de fitness - il s'agit simplement du paramètre personnalisé dans les paramètres d'optimisation). Et le cycle de mutation se répète.

Les cycles se poursuivent jusqu'à ce que de grandes valeurs de la fonction d'aptitude cessent d'apparaître.

Par conséquent, bien que le résultat (une valeur) puisse être le même dans différentes optimisations, les générations elles-mêmes, et les "chemins pour trouver" cette valeur - seront différents. Et ces chemins de recherche - sont montrés dans le fichier XML. Mon script d'estimation parcourt ce fichier et calcule la variance des valeurs de la fonction d'aptitude pour la période précédente et la période suivante. Ensuite, une valeur de compromis de la fonction d'aptitude est sélectionnée, de sorte qu'elle soit la plus grande possible, mais que la variance soit la plus petite possible (mais dans le deuxième ordre de grandeur).

Si nous prenons deux fichiers d'optimisation XML différents, la meilleure valeur qu'ils contiennent peut être la même. Mais la variance - sera nécessairement différente. Et ceci - affectera le choix, il peut être plus raisonnable de prendre une valeur légèrement plus petite de la fonction de fitness, cependant, de sorte que la variance autour de cette valeur est beaucoup plus petite.

 
Aleksey Vyazmikin:
+1 Pris le reste à optimiser.

Vous avez 24 codes rouges, je vais traiter GBPCHF_EMAFlatRTS, ce sera 25. Postez le prochain fichier, ce sera 26. Mais je dois sortir maintenant. Je serai de retour dans environ quatre heures, je posterai les prochains outsiders.


Alexei, si tu veux utiliser les redcodes - il sera plus raisonnable de compiler une version séparée de "league" - qui sera immédiatement "chargée" avec les codes sélectionnés pour le temps d'action choisi. Ainsi, dans les paramètres, il suffit d'écrire le risque souhaité. Tous les systèmes sélectionnés - fonctionneront indépendamment, comme s'il s'agissait de copies multiples de la Ligue, chacune sur son propre Magic (c'est ainsi que les EA fonctionnent sur un compte de démonstration commun, il n'y a pas 270 EA, mais seulement cinq, mais ils fonctionnent avec les 270 TS).

Pour les personnes intéressées, la ligue des systèmes de trading Expert Advisor - disponible en téléchargement sur YandexDisk

EALeague
EALeague
  • yadi.sk
View and download from Yandex.Disk
 
GBPJPY_ChnTrendRTS
Dossiers :
 
George Merts:

Premièrement - nous prenons 512 choix au hasard. C'est la première génération.

Nous prenons ou nous optimisons ? J'ai juste un doute sur le caractère aléatoire, c'est-à-dire sur ce qui génère ce caractère aléatoire, l'algorithme est-il connu ? Est-elle limitée dans le temps ?


George Merts:

Ensuite, nous formons la génération suivante - à chaque fois, nous modifions les paramètres de manière aléatoire - les mutations. Nous obtenons 1024 individus. Nous sélectionnons le 512 ayant la valeur la plus élevée de la fonction de fitness (la fonction de fitness est simplement le paramètre Personnalisé dans les paramètres d'optimisation). Et le cycle de mutation se répète.

Et où puis-je voir des exemples d'une telle fonction se compilant elle-même ?

Ou s'agit-il simplement d'un chiffre unique basé sur un calcul personnalisé qui devrait tendre vers une valeur supérieure ou inférieure, et par conséquent, s'il existe une dynamique, la génétique s'écoule dans cette même direction ?

George Merts:

Vous avez 24 codes d'enregistrement, je vais traiter GBPCHF_EMAFlatRTS, ça fera 25. Vous postez le fichier suivant, ça fera 26. Mais je dois y aller maintenant. Je serai de retour dans quatre heures, je posterai les prochains "outsiders".


Alexei, si tu veux utiliser des codes de lecture, il sera plus raisonnable de compiler une version séparée de "League", qui sera immédiatement "chargée" avec les codes sélectionnés pour le moment d'action choisi. Ainsi, dans les paramètres, il suffit d'écrire le risque souhaité. Tous les systèmes sélectionnés - fonctionneront indépendamment, comme s'il s'agissait de copies multiples de la Ligue, chacune sur son propre Magic (ainsi, les experts travaillent sur le compte de démonstration commun, il n'y a pas 270 conseillers, mais seulement cinq, mais ils travaillent tous les 270 TS).

Hmmm, je ne sais même pas comment les sélectionner... qu'y a-t-il à optimiser alors, ou juste une valeur "risque" ?

 

Bien. Il convient. C'est bon, tout est traité, intégré dans la Ligue.

J'ai l'idée de modifier les EA pour les optimiser, de sorte que je puisse voir immédiatement, à partir des fichiers XML, sur quel symbole ils ont été exécutés, et sur quelle période arrière et avant. Je m'en occuperai ce week-end.

Pour l'instant, je dois écrire d'autres instructions pour les débutants.

Aleksey Vyazmikin:

Est-ce qu'on bat le batteur ou l'optimiseur ? J'ai juste des doutes sur le caractère aléatoire, c'est-à-dire qu'est-ce qui génère ce caractère aléatoire et l'algorithme est-il connu ? Est-elle basée sur le temps ?

L'optimiseur, bien sûr. Il fait de l'optimisation génétique.

Et d'après ce que je sais et ce que je vois, les jeux de paramètres initiaux sont générés de manière purement aléatoire, très probablement à l'aide d'une instruction du processeur donnant des nombres aléatoires. L'idéal est d'utiliser une instruction de processeur RDRAND, qui produit un nombre aléatoire répondant à de nombreuses normes particulières. Mais, bien sûr, les nombres aléatoires peuvent en fait être pseudo-aléatoires - ce n'est pas bien pire - nous n'avons pas besoin d'une cryptographie robuste, nous avons besoin d'un champ de valeurs uniforme "ensemencé".

 
Aleksey Vyazmikin:

Et où puis-je voir des exemples d'une fonction autocompilée comme celle-ci ?

Ou s'agit-il simplement d'un chiffre unique basé sur les résultats d'un calcul personnalisé, qui devrait tendre vers une valeur supérieure ou inférieure, et par conséquent, s'il y a une dynamique, la génétique s'écoule dans cette même direction ?

Oui, c'est exact, la fonction de fitness est le résultat de OnTester(), qui caractérise le passage. Dans le cas le plus simple, il s'agit simplement de la valeur du dépôt à la fin de la passe. L'optimiseur sélectionne les cobmins dans lesquels cette fonction sera maximale. Et les nouvelles générations se forment de plus en plus près du maximum.

J'utilise une fonction multifactorielle intelligente qui reflète très bien la qualité de la transaction. J'ai obtenu ce code une fois contre rémunération, mais maintenant je ne le regrette pas.

Là, l'algorithme génétique en général a pas mal d'astuces, il y avait même un article quelque part sur les algorithmes génétiques, et on en parlait beaucoup.

 
Aleksey Vyazmikin:

Hmmm, je ne sais même pas comment les sélectionner... qu'est-ce qu'il y a à optimiser ensuite, ou juste une valeur de "risque" ?

Vous n'avez pas besoin d'optimiser quoi que ce soit, tout est déjà optimisé avant vous. Ce que vous faites maintenant, c'est optimiser les systèmes externes pour qu'ils deviennent des favoris sur d'autres ensembles de paramètres. Mettez-les sur la démo, et voyez comment ils négocient. Certains d'entre eux auront la chance de négocier sur les positions ouvertes. Nous verrons dans un mois. À ce moment-là, les anciens favoris auront tiré un coup d'essai et seront retirés du commerce, et de nouveaux systèmes, parmi ceux qui sont en cours d'optimisation, prendront leur place.

Nous prenons n'importe quel système favori, nous y fixons la valeur du risque - et vous pouvez négocier.

Mais "comment choisir"... C'est ma question principale. Si je ne fais que "moudre" - alors visuellement et par le paramètre "qualité". Ces systèmes que j'ai sélectionnés - je les ai mis sur un compte réel, le mot de passe d'investissement dont vous disposez. Mais, ils ont été choisis intuitivement. Malheureusement, je n'ai pas encore établi de critères clairs.

Alors - regardez les graphiques, choisissez le meilleur - c'est votre choix pour le moment. Il y en a manifestement beaucoup parmi lesquels choisir.

 

Systèmes nécessitant une sur-optimisation :

Deux d'entre elles présentaient une file d'attente SL trop longue, les autres dépassaient la marge de manœuvre autorisée.