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

Yuriy Asaulenko  
L'idée d'écrire un système de trading en Python a germé, et puisque c'est le cas, pourquoi ne pas le mettre à la disposition du public. Peut-être que quelqu'un d'autre que moi serait également intéressé.
Mais pourquoi Python ?
- C'est une question compliquée qui comporte de nombreux aspects. Je vais essayer d'y répondre.
Historiquement, j'ai quatre terminaux installés sur mon ordinateur. Certains disposent d'une API à part entière, d'autres de leur propre langage non standard, d'autres encore des deux.
Le premier, en 2008, était le terminal avec API - il a été utilisé pour créer les premiers systèmes, qui ont finalement atteint les langages C++/C#. Lorsque de nouveaux terminaux ont été ajoutés (avec ou sans langues), le système n'a pas été repensé, seule une nouvelle interface entre le terminal et le système a été développée. Ainsi, le système est unifié, et pour travailler avec un autre terminal, il suffit de connecter l'interface requise. Dans le cas le plus simple, cela ne prend pas plus d'une journée. Et il n'y a aucune volonté de reconcevoir le système pour un terminal particulier.
Le terminal n'est qu'un fournisseur de données et un exécuteur de demandes. C'est tout - on ne lui demande rien de plus.
C'est l'idéologie du système.
Mais ce n'est qu'un aspect. Les autres sont dans les prochains posts. Je ne promets pas d'écrire souvent.
Yuriy Asaulenko  
Oui, mais pourquoi Python ?
En fait, Python m'intéressait parce qu'il possède de nombreuses bibliothèques (modules), notamment celles destinées à l'apprentissage automatique (machine learning ou MO), qui est ce que je fais depuis un an. Cependant, je n'ai pas travaillé avec Python - je n'ai pas encore écrit une ligne). J'ai essayé quelque chose d'abstrait, mais sans objectifs précis.
Cependant, afin d'appliquer Python spécifiquement aux systèmes de trading, il est nécessaire, pour commencer, de déboguer son interaction avec le TS et le terminal.
Je considère que l'appel de fonctions Python à partir de MQL via DLL est une erreur - pour appeler une fonction Python de cette façon, je dois lancer un interpréteur et l'utiliser pour appeler la fonction - et c'est un processus très long pour chaque appel.
J'ai un concept différent : TC est une application EXE à part entière qui stocke toutes les données précédentes et l'historique nécessaire. Nous n'appelons donc la fonction qu'à partir d'une application déjà en cours d'exécution - le temps d'appel est minimal.
Certaines personnes disent - écrivent - que Python est très lent. Ce n'est pas vrai. Pour la plupart des systèmes (même intraday), les performances de Python sont plus que suffisantes, et nous le verrons plus tard. Quant aux HFT, nous ne pouvons pas les concurrencer à n'importe quelle vitesse - il s'agit d'autre argent). Et autres écarts).
Yuriy Asaulenko  
Viktar Dzemikhau:
A Python, je ne sais pas qui veut le faire. J'ai l'intention de porter certaines choses vers Java dans environ 3 mois. J'y pense. Et en python, je n'ai même pas vu l'API d'un quelconque courtier. Bien que... peut-être qu'il y en a, bien sûr.

Attendez, faisons l'API aussi. Dans ce fil. Pas tous en même temps). S'il y a un intérêt, du côté du forum.

IMHO, Java n'est pas une option. Je peux me tromper.

Yuriy Asaulenko  
Konstantin Nikitin:
Comme alternative, vous pouvez écrire du C++ en utilisant QT. L'un des avantages est que vous pouvez immédiatement écrire pour la compilation multiplateforme.

Je suis d'accord. Mais l'intention dans ce fil de discussion est Python et l'utilisation de ses bibliothèques (modules). Et nous nous retrouverons avec une API multiplateforme (cross-terminal). Pour tout langage de programmation.

Mais, en général, pour la plupart des CT, Python est plus que suffisant. Et l'interface d'écriture entre le CT et n'importe quel terminal est, eh bien, d'un jour au maximum.

Mais, pas tout de suite, en fonction du temps libre. Je ne promets rien sur une base régulière.

Yuriy Asaulenko  
Grigoriy Chaunin:
L'interpréteur Python est exécuté une fois et vous pouvez ensuite l'utiliser dans votre conseiller expert ou indicateur. Tout a déjà été fait et est disponible sur le forum. Il y a un fil de discussion sur l'apprentissage automatique. Utilisez https://github.com/RandomKori/Py36MT5

Oui, merci. Mais l'idée est différente. Vous avez besoin d'une application à part entière, un EXE, pour le mettre en œuvre. Mais quelque chose peut s'avérer utile. Il est dommage que le code source de DLL soit absent, mais ce n'est pas crucial.

Yuriy Asaulenko  

Commençons par créer une application Python qui va échanger des données avec le terminal - recevoir des données du terminal et les sortir dans la fenêtre de sortie, ainsi qu'envoyer des données au terminal à partir de la fenêtre SendData. Il sera nécessaire pour tester l'interaction du CT avec le terminal.

Jusqu'à présent, l'application ne remplit aucune fonction.

Voici la fenêtre.

Code Python en pièce jointe.

Dossiers :
PyTS.txt  2 kb
Sergey Chalyshev  
Yuriy Asaulenko:

Commençons par créer une application Python qui va échanger des données avec le terminal - recevoir des données du terminal et les sortir dans la fenêtre de sortie, ainsi qu'envoyer des données au terminal à partir de la fenêtre SendData. Il sera nécessaire pour tester l'interaction du CT avec le terminal.

Jusqu'à présent, l'application ne remplit aucune fonction.

Voici la fenêtre.

Code Python en pièce jointe.

Où sont les commentaires dans le code ? Pensez-vous que tout le monde ici comprend le Python et que vos idées, vos commentaires seront redondants ?

Qu'est-ce que c'est que tous ces tirs au craps? Окно вÐомааав """ ?

Quelle bibliothèque importe tkinter, où la description de ses fonctions (méthodes) ?


Raison: