Création d'un système de trading Python pour MT. - page 4

 

Tout est prêt maintenant, et il est temps de relier notre TS Python au terminal MT. Cependant, il y a certaines actions à entreprendre pour y parvenir.

Notre futur CT lit et écrit des fichiers dans le dossier C:\PyTS, mais le terminal MT, selon un caprice inconnu de MQ, ne peut lire et écrire des fichiers que dans son propre répertoire - C:\<multitude de lettres et de chiffres>\Files, et pas autrement. Bien sûr, vous pouvez modifier les paramètres dans le code Python, et le laisser basculer vers le dossier MQ natif, mais j'ai besoin que le terminal lise et écrive des fichiers à partir de là et là où je le veux, et non là où lui, le terminal, le veut. D'autant plus qu'elle sera nécessaire à l'avenir.

En fait, cette question a été résolue il y a quelques années, dans mon sujet - https://www.mql5.com/ru/forum/79922.

Tout est résolu avec les outils de Windows. Dans le dossier C:\<<un tas de lettres et de chiffres> \Files du terminal, vous faites référence au dossier C:\PyTS, qui est interprété par le terminal (et le système d'exploitation également) comme un sous-dossier Files\PyTS et le terminal y écrit, dans C:\PyTS, comme dans son dossier natif).

Cette opération s'effectue en ligne de commande, à l'aide de l'utilitaire MKLINK de Windows. Pour ceux qui ne peuvent pas le faire eux-mêmes, voici une description détaillée :

Tapez execute - cmd, ou dans le menu - Utilitaires-Windows -> Invite de commande. Vous obtenez une fenêtre où vous tapez MKLINK ou mklink. Ici, nous avons :


Tapez maintenant cd... plusieurs fois jusqu'à ce que vous arriviez à C:\.

Ensuite, ouvrez l'Explorateur Windows, et allez dans C:\<un tas de lettres et de chiffres> \Files, où le terminal met les fichiers, et sélectionnez et copiez le chemin Ctrl-Ins.

Retournez à la fenêtre de l'invite de commande et là écrivez cd <space>, utilisez Shift-Ins pour coller le chemin vers ... \Files, et Enter. On a compris :

Maintenant dans la ligne de commande nous écrivons - mklink /D PyTS c:\PyTS , et comme d'habitude - Enter. Ici, nous l'avons :

Nous voyons qu'un lien a été créé. Nous voyons qu'il est apparu dans le dossier ......\Files et nous y accédons - nous voyons les fichiers dans le dossier C:\PyTS. )) C'est tout.

Maintenant, tous les fichiers écrits par le terminal dans le dossier ...Files\PyTS seront, en fait, écrits dans le dossier C:\PyTS.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Donc, nous en avons fini avec le partage de fichiers. Tout fonctionne, toutes les sources sont dans la pièce jointe. Tout le reste, ainsi que le transfert inverse de Python à MT, se fait de la même manière, et j'espère que cela ne posera aucun problème. Pour fonctionner, lisez et exécutez mon post précédent. Il n'y a pas d'autre moyen).

Le code MQL se trouve également dans la pièce jointe. - MQL lit l'historique, et le transmet à l'application Python. Python l'accepte et l'imprime. Dans Python, n'oubliez pas d'appuyer sur le bouton Démarrer. )

J'espère qu'il n'est pas nécessaire d'écrire des commentaires sur le code MQL - il y a une référence). Oui, le transfert des données de MT se fait sur minuterie, c'est plus pratique pour moi, à ce stade.

Si vous avez des questions, n'hésitez pas à nous appeler).

Je vais faire une pause pour le moment - nous devons maintenant résoudre des questions avec la stratégie. Si vous avez des suggestions, nous en tiendrons compte).

Une fois encore, le partage de fichiers est idéal pour le développement et le débogage de stratégies, car il ne nécessite aucun effort de modification. Pour la plupart des stratégies du monde réel, elle reste adaptée. Mais, si nécessaire, nous pouvons toujours le remplacer par autre chose, sans modification importante du programme - une question de 1 à 2 jours.

Dossiers :
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Je ne promets pas d'écrire souvent, seulement au fur et à mesure que je l'obtiens. Le projet est réalisé dans l'ombre, avec peu ou pas de temps à perdre.

J'ai pensé que ce serait bien que le système affiche des graphiques

En général, Python est un langage simple - quelques jours pour l'étudier suffisent. Mais s'occuper des modules est beaucoup plus difficile - il y en a des milliers, et qui fait quoi et pourquoi n'est pas toujours évident. Avec les graphiques, c'est ce qui s'est passé - j'ai dû faire le tri pendant longtemps. Mais le résultat est le suivant :

Le programme lit un fichier CSV et dessine un graphique.

Le graphique montre les prix par clôture, soit environ 50 000 chandeliers.

Si vous cliquez sur la loupe et sélectionnez un rectangle dans la zone du graphique comme ceci :

vous pouvez zoomer sur le graphique, et vous l'aurez :

Cela peut être fait à plusieurs reprises. Le graphique peut également être déplacé et sauvegardé en tant qu'image, et bien sûr être étendu en plein écran.

Tous les fichiers dont vous avez besoin se trouvent dans l'application. Dézippez le zip dans un dossier et exécutez CSVGraph.py.

Avant de l'exécuter, n'oubliez pas de vérifier si les modules que vous voulez importer sont installés.

Dossiers :
CSVGraph.zip  582 kb
 
Comme un exercice en Python, peut-être. Mais d'un point de vue pratique, c'est peu utile + une perte de temps. Bien sûr, chacun a sa propre façon de faire. Bonne chance
 

Laissons les bêtises aux voisins et à la caisse de résonance amateur, mais résumons nous-mêmes les résultats préliminaires.

Si vous êtes déjà familiarisé avec le sujet Si vous êtes un pro, vous connaissez déjà un peu de Python, vous savez comment travailler avec des fichiers CSV, vous savez comment construire des graphiques et échanger des données avec le terminal. C'est déjà suffisant pour développer, simuler et tester des stratégies de trading. Si votre stratégie fonctionne avec des TF 1 min et plus sans utiliser de ticks et accède au terminal avec des intervalles de 5-10 sec, vous pouvez déjà créer des stratégies fonctionnelles directement dans Phyton, en laissant seulement la livraison des données et l'"exécution" de vos ordres au terminal.

En outre, vous connaissez déjà la programmation et l'environnement Phyton, à un niveau supérieur au langage et à l'environnement R, si populaires parmi les apologistes locaux de l'apprentissage automatique. Vous serez déjà en mesure de construire des stratégies d'indicateurs, même très complexes, en Python, mais toutes les fonctionnalités de Python (à l'instar de R) peuvent être mises en œuvre à l'aide de modules. Dans ce sujet, nous avons utilisé seulement 3 modules - tkinter, numpy et matplotlib.

Maintenant, ce dont Python a besoin pour élaborer des stratégies plus avancées, par exemple en utilisant l'apprentissage automatique. Le module -scikit-learn peut être utilisé pour cela. Avec l'utilisation descikit-learn, les fonctionnalités suivantes sont disponibles - Guide de l'utilisateur. Comment trouvez-vous l'ensemble des méthodes ? - Il dispose déjà d'à peu près tout, y compris, ce qui n'est pas étranger à R et au thème de l'apprentissage automatique, de la classification bayésienne aux forêts aléatoires et aux réseaux neuronaux.

Ce n'est qu'un des modules d'apprentissage automatique en Python, et il en existe une douzaine. Le modulescikit-learn ne serait pas le meilleur d'entre eux, ni le plus avancé. Cela dépend de qui a besoin de quoi. Les autres ne sont pas difficiles à trouver sur l'internet.


PS Pour ceux qui commencent ou s'initient à Python.

J'ai essayé plusieurs environnements de développement Python et me suis arrêté au plus pratique pour les débutants (dont je fais partie) - Anaconda. Ce qui est pratique, c'est que tout ce dont j'ai besoin est déjà installé, y compris Python. L'éditeur que j'utilise est Spyder - installé avecAnaconda. Je vous conseille également d'installer l'éditeur VSCode - également très bien et installé directement depuisAnaconda.

Vous pourriez ne pas être satisfait de mon choix.

 
Après 4 pages sur le sujet, nous sommes enfin prêts à passer à ce qui a été énoncé - les stratégies en Python. Tout est déjà fait pour cela.
Nous allons commencer par une stratégie simple - le trading sur le croisement des EMA, avec éventuellement des modifications.
Lorsque j'ai maîtrisé les réseaux de neurones (NS), j'ai commencé par une tâche simple : les NS devaient identifier les points de croisement de l'EMA. Cette tâche, d'un point de vue pratique, est absolument inutile, mais elle nous a permis de déterminer comment alimenter le NS en données de marché, comment les préparer et résoudre de nombreux problèmes de formation.
Maintenant, notre tâche n'est pas du tout de faire du profit et même pas de communiquer avec le terminal - c'est simple, mais sans une stratégie rentable, cela n'a aucun sens. Notre tâche consiste maintenant à créer un modèle de stratégie, et à apprendre comment le tester, et n'importe quelle stratégie fera l'affaire. Ensuite, mettez n'importe quelle stratégie dans le modèle et testez-la, et si elle fonctionne, alors nous pouvons commencer à trader via le terminal.

Les indicateurs requis sont tous prêts. Voir la figure réalisée en Python (En Python, il est très pratique et rapide de dessiner toutes sortes de graphiques). Il s'agit de la réponse à un seul saut - 1(t), ou fonction transitoire. En fait, c'est un des tests standards.


La fm est la moyenne mobile conventionnelle (servant uniquement à la calibration), la f1 est l'EMA, avec un calcul de coefficient modifié, et la f2 est un indicateur non standard.

Cependant, comme le disait notre connaissance commune :

Igor Makanu:

Je l'ai dit un million de fois, et je le dirai probablement encore... Personne n'a inventé quelque chose de mieux que les indicateurs de l'offre MT (standard... pour dire les vieux indicateurs slaves... païens ! !!).

Ainsi, afin de ne pas vous prendre la tête avec la science, vous obtiendrez les sources standard de l'EMA et de la stratégie. Cependant, je vais réaliser et tester la stratégie sur mes indicateurs. Peut-être que je cacherai autre chose des regards indiscrets, mais sans perdre la fonctionnalité.

Mais ce n'est pas pour la traversée de l'EMA qu'il s'agit. L'objectif de tout cela, ce sont les stratégies d'apprentissage automatique. Pour l'instant, je teste différentes méthodes de classification. Et voici les résultats du test :

La classification gaussienne, RBF SVM, les réseaux neuronaux et la classification bayésienne naïve sont en tête jusqu'à présent. Le programme Python est déjà prêt, disponible quelque part sur Internet, mais la préparation des données est à la charge de l'utilisateur.

Allons-y.

 
Yuriy Asaulenko:
Après 4 pages sur le sujet, nous sommes enfin prêts à passer à ce qui a été énoncé - les stratégies en Python. Tout est déjà fait pour cela.
Nous allons commencer par une stratégie simple - le trading sur le croisement des EMA, avec éventuellement des modifications.
Lorsque j'ai maîtrisé les réseaux de neurones (NS), j'ai commencé par une tâche simple : les NS devaient identifier les points de croisement de l'EMA. Cette tâche, d'un point de vue pratique, est absolument inutile, mais elle nous a permis de déterminer comment alimenter le NS en données de marché, comment les préparer et résoudre de nombreux problèmes de formation.
Maintenant, notre tâche n'est pas du tout de faire du profit et même pas de communiquer avec le terminal - c'est simple, mais sans une stratégie rentable, cela n'a aucun sens. Notre tâche consiste maintenant à créer un modèle de stratégie, et à apprendre comment le tester, et n'importe quelle stratégie fera l'affaire. Ensuite, mettez n'importe quelle stratégie dans le modèle et testez-la, et si elle fonctionne, alors nous pouvons commencer à trader via le terminal.

Les indicateurs requis sont tous prêts. Voir la figure réalisée en Python (En Python, il est très pratique et rapide de dessiner toutes sortes de graphiques). C'est la réponse à un seul saut - 1(t), ou la fonction de transition. En fait, c'est un des tests standards.


Le fm est la moyenne mobile conventionnelle (servant uniquement à la calibration), le f1 est l'EMA, avec un calcul de coefficient modifié, et le f2 est un indicateur non standard.

Cependant, comme le disait notre connaissance commune :

Ainsi, pour éviter de vous prendre la tête avec la science, vous obtiendrez l'EMA standard et les sources de la stratégie. Cependant, je vais réaliser et tester la stratégie sur mes indicateurs. Peut-être que je cacherai autre chose aux regards indiscrets, mais sans perte de fonctionnalité.

Mais ce n'est pas pour la traversée de l'EMA qu'il s'agit. L'objectif de tout cela, ce sont les stratégies d'apprentissage automatique. Pour l'instant, je teste différentes méthodes de classification. Et voici les résultats du test :

La classification gaussienne, RBF SVM, les réseaux neuronaux et la classification bayésienne naïve sont en tête jusqu'à présent. Le programme Python est déjà prêt, disponible quelque part sur Internet, mais la préparation des données est à la charge de l'utilisateur.

Allons-y.


C'est une honte qu'ils soient passés aux réseaux neuronaux. Mais surtout très utile, je pense que ça va servir.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Robots à apprentissage automatique

Yuriy Asaulenko, 2018.09.21 00:45

Ils ne le feront pas. Le maximum qu'ils feront est le même qu'avant.


 
Sergey Chalyshev:


C'est dommage qu'ils soient passés aux réseaux neuronaux. Mais surtout très utile, je pense que ça va servir.

Il n'est pas prévu de passer aux méthodes NS et autres MoD dans ce fil. Pour l'instant, du moins). Nous verrons bien.

Ce qui est fait ici est un modèle de système Python. Le remplissage spécifique de ce modèle est une question d'utilisateur spécifique.

Eh bien, montrer les capacités des bibliothèques Python, je pense, n'est pas superflu.

 
PS Oui, je n'ai pas dit que je ferais toutes les stratégies pour FORTS (MOEX). Je ne joue pas avec les OC du forex.
 
Continuons avec nos jeux. A partir d'aujourd'hui, nous sommes prêts et nous fonctionnons :
2. modèle de stratégie.
3. Une stratégie simple de croisement des EMA est placée dans le modèle.

Lorsque le programme est lancé, la stratégie est testée, le rapport de toutes les transactions est enregistré dans un fichier CSV, le graphique des bénéfices est affiché sur la console, qui peut être sauvegardée sur le disque - voir Fig.


Les tests ont été effectués en utilisant les futures SBER MOEX, intervalle 3M, timeframe 1M, total de ~55000 bougies. Seuls les chandeliers fermés ont été utilisés dans la stratégie. La durée du test est d'environ 1 minute, à partir du début du programme. Cela représente environ 1ms par bougie.
Un dossier contenant tous les fichiers de programme nécessaires, y compris l'historique des contrats à terme SBER, est joint.
Pour exécuter le programme - exécutez le fichier main.py. Avant de l'exécuter, assurez-vous que votre Python dispose de tous les paquets et modules nécessaires. Si vous travaillez sous Anaconda, tous les paquets-modules requis sont déjà installés.
En gros, écrivez votre stratégie dans le modèle, et testez-la.
Maintenant, comment j'imagine l'application de cette technologie.
Il a été décidé de traduire sur la plate-forme Python la stratégie éprouvée qui utilise les réseaux neuronaux, peut-être avec une petite mise à niveau. Il sera ainsi possible, avec des dépenses minimales, de maîtriser l'application des technologies ML disponibles en Python, de connecter le système au terminal et de commencer à fonctionner directement. Pour moi la plateforme de trading principale est MOEX, et le Forex est auxiliaire, donc dans un futur proche la connexion du système au terminal MT n'est pas prévue, bien qu'elle ait été supposée au début du sujet comme une option pour les tests.
Cependant, il y a suffisamment d'experts sur le forum qui, s'ils le veulent, peuvent le faire. En outre, l'API C Python est beaucoup plus facile que l'API C du même R, ce que les spécialistes locaux ont réussi à maîtriser.
Nous pouvons considérer que les objectifs du sujet sont complètement remplis.
Dossiers :
Public.zip  683 kb
Raison: