Calculs & affichages / Le mode geek /
Partie 3 : Algorithmes génétiques

Optimise la recherche des meilleurs paramètres


Avant-propos

Les paramètres :


Objectif de l'algorithme génétique :


A faire avant de poursuivre :


Sujets à maîtriser :


Description

Plan du tuto :
  1. Diagramme de classes.
  2. Centralisation des paramètres.
  3. Paramètres à optimiser.
  4. Lancement de l'algorithme génétique.
  5. Minimisation.
  6. Surapprentissage ou overfitting.
  7. A vous !

 

1 - Diagramme de classes :

Retour au plan


4 classes, codées dans les 4 fichiers ci-après
 


Les 2 longueurs de moyennes mobiles sont 140 et 180 : Le résultat n'est pas satisfaisant.

Statistiques :
=============
Contexte :                      EUR/USD - Renko 5 - Tous les points entre 90 % et 100 % de la table en base de données.
Période :                       20/07/2021 -> 10/12/2021
Nb jours:                       144
Gain journalier:                0.47 €.

Capital initial:                1000.0 €
Capital min:                    718.71 € 
Capital max:                    1074.24 €
Capital final:                  1067.74 €
Performance:                    6.77 %
Gain en pips:                   118.7 pips

Nb trades à l'achat:            41
Nb trades à la vente:           42
Nb trades gagnants:             47
Nb trades perdants:             36
Nb max gagnants consécutifs:    4
Nb max perdants consécutifs:    3

Gain moyen trades gagnants:     19.71 €
Gain moyen trades perdants:     -23.85 €
Meilleur trade (pips):          63.9 pips, le 12/11/2021 (index de 4094 à 4191)
Meilleur trade (monnaie):       50.66 €, le 12/11/2021 (index de 4094 à 4191)
Pire trade (pips):              -156.1 pips, le 30/07/2021 (index de 521 à 821)
Pire trade (monnaie):           -147.49 €, le 30/07/2021 (index de 521 à 821)
Perte max (drawdown):           309 pips le 10/09/2021 (index 1781)
-------------------------------------------------------------------------------



2 - Centralisation des paramètres :

Retour au plan


3 - Paramètres à optimiser :

Retour au plan


4 - Lancement de l'algorithme génétique (AG) :

Retour au plan

La constante MODE est déclarée et affectée au début du fichier, après les imports.

MODE == 1 :


MODE == 2 :

ma1.params.length : [100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, ..., 290, 295, 300]
ma2.params.length : [1.01, 1.03, 1.05, 1.07, 1.09, 1.11, 1.13, 1.15, 1.17, 1.19]
Espace de recherche : 41 * 10 = 410 chromosomes.

L'affichage nous indique les différentes valeurs qui seront testées en MODE 3 et 4..


MODE == 3 :

ma1.params.length[23] -> 215
ma2.params.length[7] -> 1.1500000000000001
 

Minimisation de l'algo génétique :    2676.618
Chromosome :                        [23, 7]
Gains :                                      1053.6 pips
Drawdown :                            1270.1 pips
Arguments :                            {'ma1': {'params': {'length': 215}}, 'ma2': {'params': {'length': 247.25}}}

A chaque exécution le chromosome est différent : il en résulte des scores différents pour les gains et le drawdown.
Par exemple, ici, les arguments sont 215 et 247.


MODE == 4 :

Minimisation de l'algo génétique :    3905.692                                                                 ← Score à minimiser.
Chromosome :                        [7. 0.]
Gains :                                -176.6 pips
Drawdown :                            1264.6 pips
Arguments :                            {'ma1': {'params': {'length': 135}}, 'ma2': {'params': {'length': 136.35}}}
 

Minimisation de l'algo génétique :    3890.635
Chromosome :                        [38.  8.]
Gains :                                564.8 pips
Drawdown :                            1510.8 pips
Arguments :                            {'ma1': {'params': {'length': 290}}, 'ma2': {'params': {'length': 339.3}}}
 

Minimisation de l'algo génétique :    2734.467
Chromosome :                        [13.  0.]
Gains :                                170.0 pips
Drawdown :                            980.8 pips
Arguments :                            {'ma1': {'params': {'length': 165}}, 'ma2': {'params': {'length': 166.65}}}

etc ...

Ici, le score à minimiser diminue avec le temps : 3905, puis 3890, puis 2734, etc.


MODE == 1 - Vérification :


Vous obtiendrez de meilleurs résultats avec une stratégie plus élaborée. La stratégie des 2 moyennes est un cas d'école.


5 - Minimisation :

Retour au plan


6 - Surapprentissage ou overfitting :

Retour au plan


7 - A vous !

Retour au plan

Bonnes recherches et bon courage !


Bonjour les codeurs !