L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 11

 
J'attends que CC précise comment il veut procéder.

Une fois de plus, je pense que prévoir les transactions avec une sortie par une simple condition n'est peut-être pas optimal.

Et si nous formons une autre machine qui apprend le moment de clôture à partir de transactions déjà ouvertes ? Laissez-moi vous expliquer. Une affaire doit être conclue en une heure - nous avons entraîné la machine à ouvrir des affaires de cette manière.

Pour chaque transaction ouverte, il y aura 60 enregistrements (lignes) avec des jetons - pour chaque minute, à partir de 31 minutes et jusqu'à 90 minutes. Environ la moitié de ces entrées seront marquées 1 comme une bonne sortie aux alentours de la 60e minute.

C'est ce que j'appelle une explication détaillée de la manière dont le problème doit être résolu.

Qu'en pensez-vous ?
 
Alexey Burnakov:

C'est une idée intéressante. J'ai des EAs qui fonctionnent aussi. Je vais peut-être réfléchir à la façon de les améliorer. Mais je ne vois pas très bien ce qui doit être amélioré. Que devez-vous apprendre à la machine ?

Le conseiller expert a une logique rigide pour l'ouverture et la fermeture des positions. Dans l'apprentissage automatique, la décision est prise d'une manière légèrement différente.

C'est-à-dire que l'on ne sait pas exactement ce que l'on va faire.

Vous pouvez le voir ici à partir de mon post ci-dessus :

Je prends la direction générale de la barre fixe. Mais quand on regarde de près l'heure, on constate un décalage monstrueux, notamment au niveau des barres inférieures. Donc, si c'est D1 mais que je négocie sur M5, il s'avère que je prends presque les données d'avant-hier pour direction. Même le fait de prédire un pas en avant pour D1 avec une erreur de 30 % a radicalement amélioré la rentabilité de l'EA, et surtout, cela a renforcé la confiance dans le fait qu'elle ne sera pas épuisée.

Dans mon cas, je vais utiliser les données décalées des indicateurs pour une prédiction R appropriée.

 
SanSanych Fomenko:

Voici une note de mon post ci-dessus :

La direction générale est prise à partir de la barre fixe. Mais quand on regarde de près l'heure, on constate un décalage monstrueux, notamment au niveau des barres inférieures. Donc, si c'est D1 mais que je négocie sur M5, il s'avère que je prends presque les données d'avant-hier pour direction. Même en prévoyant un pas en avant pour D1 avec une erreur de 30 %, on améliore radicalement la rentabilité du conseiller expert, et surtout on augmente la confiance dans le fait qu'il ne sera pas épuisé.

Dans mon cas particulier, j'ai décidé d'utiliser les données décalées des indicateurs pour les prédictions correspondantes de R.

Ok, je comprends l'idée en gros.
 

J'ai une grande nouvelle.

Lors d'un voyage d'affaires, le soir, je faisais tourner les machines d'apprentissage sur mes données. J'ai essayé différentes combinaisons d'approches. Et on dirait qu'une fleur en pierre est sortie - tout d'un coup.

J'ai donc utilisé les données du lien que j'ai cité pour effectuer de plus en plus d'entraînements, en essayant des choses qui ont déjà été décrites dans mon blog. Mais j'ai ajouté quelques astuces supplémentaires. Par exemple, j'ai sélectionné les paramètres d'apprentissage pour lesquels le bénéfice de la validation croisée est le plus élevé, plutôt que la précision de la supposition abstraite.

Pour cela, j'ai bien sûr dû écrire ma fonction de fitness.

Sur le graphique figurent des paires de valeurs d'espérance sur la formation et la validation pour différents horizons de prédiction et paramètres de formation. J'ai également utilisé l'idée d'une "zone grise", c'est-à-dire un espace de prédiction où rien ne se passe.

Comme vous pouvez le voir, j'ai obtenu des valeurs de MO tout à fait saines sur les deux formations et des valeurs corrélées sur la validation ! Notez que la simulation a utilisé un écart de 0,00020 (vingt picks).

J'ai également calculé le montant total de la transaction, y compris le spread. Les valeurs sont également très belles. Le profit maximum est atteint à partir d'un certain rapport entre le nombre de transactions et le MO de la transaction, le tout sur un horizon de planification de 12 heures. Le graphique présente tous les horizons de planification, toutes les valeurs de la zone grise et les meilleurs paramètres d'apprentissage du modèle. Voir ci-dessous :


Eh bien, et afin de diffuser cette connaissance, je joins un fichier avec tous les résultats, y compris même les paramètres de formation des échafaudages. Mais sans les entrées. Les entrées de mes données sont sélectionnées. Ce sera un petit secret. Je vais réfléchir au code complet de l'expérience ou pas. Je veux maintenant faire l'intégration avec MT de cette machine, parce que le résultat me semble déjà très fonctionnel.

Alexey

 
Alexey Burnakov:

J'ai une grande nouvelle.

Lors d'un voyage d'affaires, le soir, je faisais tourner les machines d'apprentissage sur mes données. J'ai essayé différentes combinaisons d'approches. Et on dirait qu'une fleur en pierre est sortie - tout d'un coup.

Quoi qu'il en soit, sur mes données provenant du lien que j'ai donné, j'ai exécuté l'entraînement encore et encore, en essayant des choses qui ont déjà été décrites sur mon blog. Mais j'ai ajouté quelques astuces supplémentaires. Par exemple, la sélection des paramètres d'apprentissage pour lesquels il y a plus de profit sur la validation croisée, plutôt que la précision abstraite de la devinette.

Pour cela, j'ai bien sûr dû écrire ma fonction de fitness.

Sur le graphique figurent des paires de valeurs d'espérance sur la formation et la validation pour différents horizons de prédiction et paramètres de formation. J'ai également utilisé l'idée d'une "zone grise", c'est-à-dire un espace de prédiction où rien ne se passe.

Comme vous pouvez le voir, j'ai obtenu des valeurs de MO tout à fait saines sur les deux formations et des valeurs corrélées sur la validation ! Notez que la simulation a utilisé un écart de 0,00020 (vingt picks).

J'ai également compté le total de la transaction, y compris le spread. Les valeurs sont également très belles. Le profit maximum est atteint à partir d'un certain rapport entre le nombre de transactions et le MO de la transaction, le tout sur un horizon de planification de 12 heures. Le graphique présente tous les horizons de planification, toutes les valeurs de la zone grise et les meilleurs paramètres d'apprentissage du modèle. Voir ci-dessous :


Eh bien, et afin de diffuser cette connaissance, je joins un fichier avec tous les résultats, y compris même les paramètres de formation des échafaudages. Mais sans les entrées. Les entrées de mes données sont sélectionnées. Ce sera un petit secret. Je vais réfléchir au code complet de l'expérience ou pas. Je veux maintenant faire l'intégration avec MT de cette machine, parce que le résultat me semble déjà très fonctionnel.

Alexey

Le bénéfice total en pips n'est pas un indicateur. C'est le rapport entre le bénéfice total et le nombre de barres d'histoire, sur lesquelles il est obtenu, qui est le facteur de qualité qui est indicatif. Je le dis depuis longtemps et je l'utilise uniquement pour l'optimisation et l'estimation de modèles.

Le travail acharné donne des résultats.

Bonne chance

 
Vladimir Perervenko:

Le bénéfice total en pips n'est pas l'indicateur. C'est le rapport entre ce bénéfice total et le nombre de barres d'histoire, sur lesquelles il est acquis, qui est le facteur de qualité qui est indicatif. Je le dis depuis longtemps, et je ne l'utilise que pour l'optimisation et l'estimation de modèles.

Le travail acharné donne des résultats.

Bonne chance

Pour moi, l'un n'exclut pas l'autre.

Alexey a surmonté l'inconvénient évident de toutes les évaluations de prédictions de classement : il est évident que la valeur d'une prédiction correcte de barre de 1 pip et la valeur d'une prédiction de barre de 10 pip sont complètement différentes.

Félicitations à toi Alexey !

 
Vladimir Perervenko:

Le bénéfice total en pips n'est pas un indicateur. C'est le rapport entre ce bénéfice total et le nombre de barres d'histoire sur lesquelles il est obtenu - c'est le coefficient de qualité qui est indicatif. Je l'ai longtemps dit et ne l'utilise que pour l'optimisation et l'estimation de modèles.

Le travail acharné donne des résultats.

Bonne chance

Laissez-moi vous expliquer.

Prévisions 12 heures à l'avance (724 minutes pour être exact).

Le nombre de transactions est supérieur à 5000 pour chacun des échantillons de validation. La moyenne du résultat est calculée sur 49 échantillons de validation. Les transactions au sein de chaque échantillon se produisent par incréments d'environ 12 heures, c'est-à-dire qu'il n'y a pas de dépendance évidente ni de chevauchement des résultats. Je posterai d'autres graphiques de la simulation de trading dans un moment. Les résultats sont trop bons. Mais jusqu'à présent, tout se confirme.

 

Données finales sur mon expérience :

Simulation des signaux de trading d'une machine entraînée sur 49 échantillons de validation (en pips) :

Distribution du résultat du trade en pips pour 49 échantillons :

Et effectuer un test d'hypothèse d'une différence significative entre la MO moyenne (médiane) de chaque échantillon de validation et zéro :

échantillon de validation
test de normalité de shapiro p-value
test p-value pour la différence avec zéro
moyenne
médiane
moyenne dist supérieure 99%-tail
moyenne dist inférieure queue de 99
1
1.11E-65
0
0.000139
0.000095
0.000146
0.000133
2
8.55E-64
0
0.000139
0.000096
0.000145
0.000133
3
8.24E-63
0
0.000137
0.000096
0.000143
0.000131
4
3.31E-66
0
0.000139
0.000095
0.000146
0.000133
5
4.64E-66
0
0.000142
0.000097
0.000149
0.000136
6
7.08E-63
0
0.000141
0.000097
0.000147
0.000135
7
8.72E-65
0
0.000135
0.000096
0.000141
0.000129
8
4.52E-65
0
0.000139
0.000096
0.000145
0.000132
9
4.31E-64
0
0.000143
0.000102
0.000149
0.000137
10
4.53E-66
0
0.000141
0.000099
0.000147
0.000134
11
8.97E-67
0
0.000143
0.000098
0.000149
0.000136
12
2.21E-63
0
0.000139
0.000102
0.000145
0.000133
13
1.16E-63
0
0.000142
0.000099
0.000148
0.000135
14
7.82E-64
0
0.000138
0.000097
0.000144
0.000132
15
1.41E-65
0
0.000146
0.000103
0.000152
0.000140
16
8.17E-63
0
0.000135
0.000097
0.000140
0.000129
17
6.54E-65
0
0.000143
0.000099
0.000149
0.000136
18
6.70E-66
0
0.000138
0.000096
0.000144
0.000132
19
1.86E-65
0
0.000143
0.000099
0.000149
0.000136
20
1.79E-66
0
0.000142
0.000098
0.000148
0.000135
21
2.37E-62
0
0.000136
0.000099
0.000142
0.000131
22
5.51E-65
0
0.000141
0.000100
0.000147
0.000135
23
7.15E-67
0
0.000142
0.000097
0.000149
0.000136
24
1.06E-65
0
0.000144
0.000102
0.000150
0.000137
25
4.01E-65
0
0.000147
0.000101
0.000153
0.000140
26
2.33E-64
0
0.000141
0.000098
0.000147
0.000135
27
7.85E-65
0
0.000141
0.000100
0.000147
0.000134
28
2.07E-64
0
0.000141
0.000098
0.000147
0.000134
29
2.01E-63
0
0.000140
0.000098
0.000146
0.000134
30
2.77E-64
0
0.000139
0.000098
0.000145
0.000133
31
1.43E-66
0
0.000145
0.000098
0.000151
0.000138
32
1.08E-65
0
0.000141
0.000098
0.000147
0.000134
33
3.47E-62
0
0.000136
0.000099
0.000141
0.000130
34
6.04E-67
0
0.000140
0.000096
0.000147
0.000134
35
2.32E-65
0
0.000145
0.000100
0.000152
0.000139
36
6.39E-65
0
0.000143
0.000098
0.000149
0.000137
37
1.10E-61
0
0.000141
0.000103
0.000147
0.000135
38
6.74E-63
0
0.000142
0.000100
0.000148
0.000136
39
2.54E-64
0
0.000141
0.000098
0.000147
0.000135
40
2.45E-64
0
0.000139
0.000098
0.000145
0.000133
41
6.25E-66
0
0.000141
0.000099
0.000148
0.000135
42
3.99E-66
0
0.000141
0.000097
0.000147
0.000135
43
1.35E-66
0
0.000142
0.000098
0.000148
0.000135
44
1.01E-63
0
0.000134
0.000097
0.000140
0.000128
45
1.56E-64
0
0.000139
0.000097
0.000145
0.000133
46
3.11E-66
0
0.000145
0.000103
0.000152
0.000139
47
6.11E-66
0
0.000138
0.000099
0.000144
0.000131
48
2.99E-66
0
0.000146
0.000101
0.000152
0.000139
49
1.84E-63
0
0.000138
0.000098
0.000144
0.000131

La distribution au sein des échantillons n'est pas normale. Le test de Wilcoxon montre que le MO est significativement différent de zéro.

D'ailleurs, le changement dans le modèle de croissance de la courbe de la somme des points dans les 3/5 dernières parties des échantillons de validation est explicable.

J'ai un nombre à peu près égal d'observations pour les 5 majors au sein des échantillons et elles vont dans l'ordre suivant :

dat_eurusd 
dat_audusd 
dat_gbpusd 
dat_usdcad 
dat_usdchf

Je suis sûr que pour les trois dernières paires la volatilité est plus élevée et le spread est plus élevé (nous devrions prendre 25-30 pips au lieu de 20 pips). Par conséquent, leur résultat brut et le pourcentage de directions devinées sont meilleurs. Mais le fait de saisir un écart plus important ne rendra pas les statistiques nulles de toute façon. Juste pour comprendre ce qui se passe.

PM.

 
SanSanych Fomenko:

De la manière dont je vois les choses, l'un n'exclut pas l'autre.

Alexey a surmonté l'inconvénient évident de toutes les évaluations de prédictions de classement : de toute évidence, la valeur d'une prédiction correcte de barre de 1 pip et la valeur d'une prédiction de barre de 10 pip sont complètement différentes.

Félicitations à toi Alexey !

Merci SanSanych. Tout fonctionne. Je vais essayer de l'exécuter sur MT4 pour commencer.
 

Attention. J'ai trouvé un bug dans le code, qui a donné de bons résultats. Toutes mes optimisations sont annulées jusqu'à l'analyse détaillée !

J'ai créé un conseiller expert sur MT4 en rapport avec Arom. J'ai vu quelques différences dans les résultats, donc j'ai fait un examen détaillé du code et j'ai trouvé une erreur grossière. Je n'ai encore rien trouvé de profitable. L'expérience continue.
Raison: