L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 2903
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
La nouveauté dans ce cas est un zigzag et un canal le long de ce zigzag, c'est l'avant-garde de l'ingénierie.
Ce n'est pas tout ce que vous voyez.
C'est seulement 5% de ce qui est autorisé.))
c'est comme le dernier mot et un hamburger.)
il faut toujours se donner une chance de se justifier.
Hé, tout le monde !
Quelqu'un pourrait peut-être me donner quelques conseils. J'essaie de prédire la direction d'une paire de devises pour la journée (hausse ou baisse) en utilisant le modèle "DecisionTreeClassifier".
Je ne prends que 5 prédicteurs pour la prédiction, le résultat de la prédiction est une tendance à la hausse (1) ou à la baisse (-1). Taille du jeu de données : 999 lignes et 6 colonnes (jeu de données joint).
Mais j'ai rencontré un problème lorsque l'augmentation de "max_depth" augmente tout le temps la précision sur les échantillons d'entraînement et de test simultanément. La précision sur l'échantillon de test cesse d'augmenter et devient une constante à max_depth=22, égale à 0,780000. Résultats pour différentes valeurs de max_depth :
1) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=3)
Précision sur l'ensemble d'apprentissage : 0.539424 Précision sur l'ensemble de test : 0.565000
2) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=5)
Précision sur l'ensemble d'apprentissage : 0.579474 Précision sur l'ensemble de test : 0.585000
3) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=7)
Précision sur l'ensemble d'apprentissage : 0.637046 Précision sur l'ensemble de test : 0.640000
4) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=9)
Précision surl'ensemble d'apprentissage : 0.667084 Précision sur l'ensemble de test : 0.700000
5) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=11)
Précision sur l'ensemble d'apprentissage : 0,700876 Précision sur l'ensemble de test : 0,710000
6) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=13)
Précision sur l'ensemble d'apprentissage : 0.720901 Précision sur l'ensemble de test : 0.720000
7) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=15)
Précision sur l'ensemble d'apprentissage : 0,734668 Précision sur l'ensemble de test : 0,740000
8) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=17)
Précision sur l'ensemble d'apprentissage : 0,747184 Précision sur l'ensemble de test : 0,760000
9) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=19)
Précision sur l'ensemble d'apprentissage : 0.755945 Précision sur l'ensemble de test : 0.765000
10) clf_20=DecisionTreeClassifier(criterion='entropy', max_depth=22)
Précision sur l'ensemble d'apprentissage : 0.760951 Précision sur l'ensemble de test : 0.780000
Je suis extrêmement confus par cette situation, car j'ai entendu dire qu'il ne fallait pas utiliser max_depth plus de 3-4, parce qu'un réentraînement est possible. Mais le modèle se comporte-t-il ainsi lors du recyclage, il ressemble plus à un modèle sous-entraîné. .Je ne comprends pas, dans une telle situation, quelle profondeur de l'arbre de décision choisir ou quel modèle même et, en général, s'il vaut la peine de travailler davantage dans cette direction, peut-être qu'il manque quelque chose (mais, par exemple, l'ensemble de données n'est pas de 100 lignes), s'il est possible d'ajouter plus de prédicteurs et combien peuvent être ajoutés à une telle taille de l'ensemble de données (j'ajouterais 2 à 5 pièces supplémentaires).
Le code est simple, je le joins avec le jeu de données :
Je ne comprends pas, dans une telle situation, quelle profondeur d'arbre de décision choisir ou quel modèle même et, en général, s'il vaut la peine de travailler davantage dans cette direction, peut-être qu'il manque quelque chose (mais, par exemple, l'ensemble de données n'est pas de 100 lignes), s'il est possible d'ajouter d'autres prédicteurs et combien peuvent être ajoutés à une telle taille de l'ensemble de données (j'ajouterais 2 à 5 pièces supplémentaires).
Le code est simple, je le joins avec le jeu de données :
Bonjour.
Plus de splits - plus de mémoire = risque d'apprentissage de l'échantillon.
Je ne suis pas compétent en python, mais.. :
1. Essayez de diviser l'échantillon sans le mélanger.
2. Il me semble toujours que vous apprenez sur l'ensemble de l'échantillon, et non sur un échantillon réduit.
Bonjour.
Plus de fractionnements - plus de mémoire = risque d'apprentissage d'un échantillon.
Je ne maîtrise pas le langage python, mais.. :
1. Essayez de diviser l'échantillon sans le mélanger.
2. Il me semble que vous vous entraînez sur l'ensemble de l'échantillon et non sur un échantillon réduit.
Je vous remercie ! Il semble que vous ayez raison.
J'ai remplacé "clf_20.fit(X, y)" par "clf_20.fit(X_train, y_train)" dans le code ci-dessus et l'image a changé presque à 50/50.
Je vous remercie ! Je pense que vous avez raison.
J'ai remplacé "clf_20.fit(X, y)" par "clf_20.fit(X_train, y_train)" dans le code ci-dessus et l'image a changé presque à 50/50.
Il est normal d'obtenir un tel résultat - un résultat trop bon est toujours une raison de commencer à chercher un bogue dans le code.
Il est normal d'obtenir ce résultat - un résultat trop bon est toujours une raison de commencer à chercher un bogue dans le code.
J'ai une autre question, si vous le permettez.
Il s'avère que le meilleur résultat est obtenu avec max_depth=1 et ressemble à ceci :
Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333
Ce résultat semble extrêmement mauvais et égal à la probabilité de tirer à pile ou face. Ou pouvons-nous considérer qu'il s'agit d'un bon résultat et conclure que nous avons trouvé une formalisation qui nous permet de niveler la probabilité du mouvement du forex et la probabilité du résultat à pile ou face ?
En d'autres termes, la situation est telle que pour chaque combinaison de prédicteurs, il existe deux variantes équivalentes de mouvement du marché : à la hausse ou à la baisse, et il est donc nécessaire de compléter l'ensemble de données avec quelque chose qui pourrait spécifier que la combinaison actuelle est toujours à la hausse ou à la baisse.
Une autre question a été soulevée, si je puis me permettre.
Il s'est avéré que le meilleur résultat est obtenu avec max_depth=1 et ressemble à ceci :
Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333
Ce résultat semble extrêmement mauvais et égal à la probabilité de tirer à pile ou face. Ou pouvons-nous considérer qu'il s'agit d'un bon résultat et conclure que nous avons trouvé une formalisation qui nous permet de niveler la probabilité d'un mouvement de change et la probabilité d'un jeu de pile ou face ?
En d'autres termes, la situation est telle que pour chaque combinaison de prédicteurs, il existe deux variantes équivalentes de mouvement du marché : à la hausse ou à la baisse, et il est donc nécessaire de compléter l'ensemble de données avec quelque chose qui pourrait spécifier que la combinaison actuelle est toujours à la hausse ou à la baisse.
Lisez d'abord d'autres mesures permettant d'évaluer les résultats de la formation : le rappel (exhaustivité) et la précision (exactitude), qui sont particulièrement pertinents pour un échantillonnage déséquilibré. La stratégie peut consister à produire un résultat financier positif pour la classification avec la même probabilité de résultats corrects et incorrects.
Considérons un balisage cible plus complexe mais logique. Il est plus difficile de déterminer comment une journée se terminera par rapport à son ouverture que de déterminer la probabilité d'une hausse et d'une baisse d'un certain pourcentage de l'ouverture de la journée - il y a une probabilité d'identifier un modèle intrajournalier.
Pour moi, l'échantillon est trop petit.
Pensez à créer des prédicteurs qui peuvent décrire le marché. A partir des indicateurs des prédicteurs, il devrait être possible, à mon avis, de restituer la situation sur le graphique sans le regarder.
Je recommande d'essayer CatBoost pour l'entraînement - il construit des modèles rapidement et la question du transfert des modèles en code pour travailler dans MT5 sans béquilles est résolue.
Il s'avère que le meilleur résultat est obtenu lorsque max_depth=1 et se présente comme suit :
Précision sur l'ensemble d'apprentissage : 0.515021 Précision sur l'ensemble de test : 0.503333
Je constate aussi souvent que le meilleur résultat est obtenu à une profondeur de 1, ce qui signifie qu'une seule division sur l'une des caractéristiques a été effectuée. Une division supplémentaire de l'arbre conduit à un surentraînement sur l'ensemble d'entraînement et à de moins bons résultats sur l'ensemble de test.
Je constate aussi souvent que le meilleur résultat est obtenu à une profondeur de 1, ce qui signifie qu'une seule division a été effectuée sur l'une des caractéristiques. Un fractionnement supplémentaire de l'arbre entraîne un réentraînement sur l'arbre et une détérioration des résultats sur le test.
J'ai vérifié les résultats hier, il s'est avéré que le modèle pour tous les cas a donné une prédiction de "1", en moyenne et donc 50/50. On peut se passer du modèle - tout le temps en disant "up", ça va aller.
Voici ce que sont les niveaux de support et de résistance selon moi.....
Tout le monde ne le comprendra pas, mais si c'est le cas, bravo à eux....