Discussion de l'article "Développement d'un robot en Python et MQL5 (Partie 1) : Pré-traitement des données" - page 6

 
A propos des signes stationnaires, une autre observation.

Le modèle XGBoost sur les tests, quel que soit le nombre de fois que je l'exécute, à des dates différentes, montre l'une après l'autre des avancées rentables, des dizaines de fois à des dates différentes avec des signes actuels. Bien que je sois un débutant, mais pas un idiot, j'ai interrompu l'entraînement pour la période 2007-2016, puis j'ai effectué un test de forward pur. La précision des tags avec des trades risque/récompense de 1:8 - 66% sur les forwards est moyenne, parfois XGB donne 72-74%. Tous les autres modèles, les réseaux neuronaux, tous les autres bouscules, les forêts aléatoires - versent des sommes astronomiques.

Je ne publierais même pas le premier article d'un cycle avec les caractéristiques actuelles s'ils ont utilisé un modèle usagé sur les avances pendant plus de 10 ans.

Ce n'est pas pour rien que le modèle XGB remporte de nombreux concours de prévision et de science des données. Apparemment, il sait comment travailler avec des données brutes. Et la validation croisée est intégrée. C'est un scientifique, docteur en sciences, qui m'en a parlé. Il l'utilise pour ses prévisions et ses transactions, il m'a envoyé un rapport de trading avec un facteur de profit de 55, mais il a disparu d'Internet, il avait beaucoup de développements, on ne sait pas très bien ce qui a pu lui arriver. En fait, c'est lui et aussi de super articles de Maxim Dmitrievsky qui m'ont amené à MO il y a quelques années.

Mais l'apprentissage du XGB prend beaucoup de temps. Le dernier modèle a été entraîné pendant deux jours, je suis déjà fatigué d'attendre, alors qu'un booléen normal apprend généralement en quelques minutes sur le serveur. Mais pour moi, c'est en quelque sorte un indicateur de la complexité et de l'efficacité de l'algorithme. Je vais louer un serveur plus puissant pour la recherche.

J'espère que la version ONNX ne sera pas trop lourde et ne comportera pas trop de lignes. Dans MQL5 il y a une limite sur le nombre de lignes de données du modèle ONNX. J'ai une fois entraîné un modèle avec 100 millions de lignes et j'en ai été très contrarié, mcl ne me permet pas de l'utiliser) Je pense que cela pèsera beaucoup, et en anticipant cela j'ai fait un modèle pour le trading en ligne directement à travers Python, il apparaîtra dans les prochains articles du cycle, lundi je le mettrai à l'essai. Le brouillon de la série est déjà fait. Je voulais tout publier en une seule feuille au début, mais l'administration ne m'a pas laissé faire, et c'est probablement vrai, ce serait ennuyeux de lire un tel bazar).

L'idée d'un scalper pour Sber dans Finam MT 5 est apparue, le fait est qu'il y a une fonction dans la bibliothèque Python mkle pour obtenir l'historique de la pile de prix, et si nous entraînions un modèle sur ce modèle, et le laissions scalper, les gars dans les propahs négocient sur la pile, et plutôt avec succès. À en juger par l'expérience des traders de propahs, je ne suis pas le premier à avoir une telle idée, et il y a beaucoup d'algorithmes de scalping de ce type sur MO depuis longtemps. Le scalping est intéressant parce que la rentabilité peut être couverte jour après jour. J'ai un compte Finam en tant qu'investisseur étranger en Russie, même si c'est un petit compte) Donc peut-être que le dernier article de la série sera consacré à un tel scalper sur le Moscow Exchange ou le CME, via Finam ou AMP Futures Europe.

J'ai aussi un projet de vision artificielle en Python, j'en ferai un article après le cycle en cours.

Il y a beaucoup d'idées, vraiment beaucoup, chaque jour une nouvelle idée apparaît et je m'assois pour le code. Bien que ma femme me dise, faisons déjà de l'argent, prenons l'US Prop USA avec ce que nous avons, faisons de l'argent. Il existe déjà des dizaines de modèles formés. Mais je suis plus intéressé par la recherche. Je suppose que c'est vrai, je devrais prendre un compte et me calmer. J'ai ouvert un compte en février, et comme c'est dommage, il y a eu des problèmes avec le prop pour les quotas de méta, j'ai cru comprendre que le prop ne voulait pas acheter de licences et qu'il chimisait. Par chance, mon fournisseur a supprimé MT 5, je négociais avec mes mains via un autre terminal qu'ils ont mis à la place de MT 5, et j'ai fini par perdre. Je vais ouvrir un nouveau compte dans un autre prop avec MT 5, et j'écrirai des nouvelles à ce sujet, sur la façon dont les transactions se déroulent.

En ce qui concerne le fait que le choix des meilleurs prédicteurs devrait être limité à la date FORWARD, c'est une très bonne idée, j'ai en quelque sorte manqué ce point).
 

L'échantillon Forward date de 2010, l'entraînement d'avant 2010.

Exemple, j'ai également implémenté l'échantillon EXAMWARD pour tester le modèle séparément, voici le résultat. TOUS les autres modèles et réseaux neuronaux se sont appuyés sur ces caractéristiques depuis le premier jour.

 

Et c'est en cela qu'un simple forward diffère :

Et un forward avec des éléments comme la validation croisée, le model bagging (oui, tout cela est intégré par défaut dans XGB je crois, mais j'ai décidé de l'implémenter), l'énumération des hyperparamètres de la grille, etc :


 
Yevgeniy Koshtenko #:
Si les étiquettes de classe ne sont pas réinitialisées, alors la meilleure caractéristique pour prédire les étiquettes sera les étiquettes elles-mêmes, non ?

Vous ne réinitialisez pas les étiquettes (ce qui signifie réinitialiser - effacer - comme synonyme), mais vous excluez les colonnes contenant des étiquettes, et vous introduisez les étiquettes elles-mêmes séparément dans le modèle en tant que cibles, c'est-à-dire que les informations les concernant ne sont pas réinitialisées et ne disparaissent pas irrévocablement, mais sont utilisées lors de l'entraînement du modèle.

 
Yevgeniy Koshtenko #:
Le modèle XGBoost sur les tests, peu importe le nombre de fois que je l'exécute, à des dates différentes, montre l'une après l'autre des avancées rentables, des dizaines de fois à des dates différentes avec des signes actuels. Bien que je sois un débutant, mais pas un idiot, j'ai interrompu l'entraînement pour la période 2007-2016, et j'ai ensuite effectué des tests purement prospectifs. La précision des étiquettes avec des trades risque/récompense de 1:8 - 66% sur les forwards est une moyenne, parfois XGB donne 72-74%. Tous les autres modèles, les réseaux neuronaux, tous les autres bouscules, les forêts aléatoires - versent des sommes astronomiques.

Il y a beaucoup d'erreurs de débutants dans l'article - j'ai écrit plus tôt que si vous utilisez le même code, il peut y avoir des miracles.

Essayez de trader votre solution pendant un mois sur une démo, puis comparez les points d'entrée en ajoutant un échantillon pour tester le modèle.

Il est certainement intéressant de lire sur les miracles de XGB, en particulier sur la façon dont vous avez trouvé les hyperparamètres - j'ai lu qu'il est très sensible à ces derniers.

 
Rashid Umarov #:

Je ne voulais pas faire cette supposition pour ne pas vous offenser :)

Dorénavant, vérifiez votre source avant de réprimander.

J'ai installé le terminal en mode portable, dois-je écrire la clé "portable" d'une manière ou d'une autre ?

Si le terminal est en cours d'exécution - le code ne fonctionne pas, et si vous l'éteignez, il essaie de démarrer sans la clé, mais cela ne fonctionne pas non plus.

 
Aleksey Vyazmikin #:

J'ai installé le terminal en mode portable, dois-je écrire la clé "portable" d'une manière ou d'une autre ?

Si le terminal est en cours d'exécution, le code ne fonctionne pas, et s'il est éteint, il essaie de démarrer sans la clé, mais cela ne fonctionne pas non plus.

Essayez de l'exécuter directement à partir du terminal. Il suffit de lancer le script sur le graphique et les résultats s'affichent dans l'onglet "Experts"

Peut-être devez-vous spécifier le chemin d'accès au dossier python dans le méta-éditeur.

C'est ainsi que cela fonctionne pour moi. Mais après beaucoup de danse))))

 
Aleksandr Slavskii #:

Essayez de l'exécuter directement à partir du terminal. Il suffit de lancer le script sur le graphique et il imprime les résultats dans l'onglet "Experts".

Peut-être devez-vous spécifier le chemin du dossier python dans le méta-éditeur.

C'est ainsi que cela fonctionne pour moi. Mais après beaucoup de danse))))

Utilisez-vous le terminal en mode portable ?

Dans ME, le chemin d'accès est prescrit (il apparaît automatiquement).

 
Aleksey Vyazmikin #:

Êtes-vous en mode portable avec le terminal ?

Dans ME, le chemin d'accès est prescrit (il apparaît automatiquement).

Je l'ai vérifié dans la version portable, tout fonctionne.

Si deux terminaux sont en cours d'exécution et que le chemin vers le terminal n'est pas spécifié dans le script, une erreur se produit dans l'un des terminaux lors de la tentative de compilation.

 
Aleksandr Slavskii #:

J'ai vérifié dans la version portable, tout fonctionne.

Si deux terminaux sont en cours d'exécution et que le chemin vers le terminal n'est pas spécifié dans le script, une erreur se produit dans l'un des terminaux lors de la compilation.

Je l'ai exécuté à partir du terminal

2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 1)
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 2)
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 3)
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 4)
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 5)

Le chemin d'accès au terminal a été spécifié dans les deux sens.

terminal_path = "C:/FX/MT5_02/terminal64.exe"
#terminal_path = "C:\\FX\\MT5_02\\terminal64.exe"

Quelque part, il cherche au mauvais endroit - il y a un historique dans le terminal.