MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 15

 
Maxim Dmitrievsky:

une commande et une liste de paramètres peuvent être transmises sous forme de chaîne, séparées par des séparateurs. Lorsque le conseiller expert analysera le message, il comprendra ce qu'il doit faire.


La commande OrderSend ?

Quel doit être le format de la chaîne de caractères? chaîne de caractères ? Dans l'exemple de socket, la chaîne de caractères du socket mql5 est transmiseà result : socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len) ;.retourner le résultat ;

 
slukin:

Commande OrderSend ?

Quel doit être le format de la chaîne de caractères? chaîne de caractères ? Dans l'exemple de socket, la chaîne du client mql5 socket est passéeà result : socketreceive(int sock,int timeout)...result+=CharArrayToString(rsp,0,rsp_len) ;.retourner le résultat ;

pas d'OrderSend() mais juste une chaîne contenant les 3 premiers caractères, par exemple "BUY", suivie d'une liste d'arguments : lot, take, sl. Le Conseiller Expert lit la chaîne, voit les 3 premières lettres buy et forme une requête Trog

c'est-à-dire concevoir un simple protocole d'échange entre applications, dans une forme libre
 
Maxim Dmitrievsky:

Pas d'OrderSend(), mais juste une chaîne avec les 3 premiers caractères, par exemple "BUY", et ensuite une liste d'arguments : lot, take, sl. Le conseiller expert lit la chaîne, voit que les 3 premières lettres sont "buy" et forme une requête trog.

c'est-à-dire penser à un simple protocole d'échange entre applications, sous une forme libre


Un exemple donné par un développeur expérimenté serait très utile.

 
Roffild:

J'ai déjà connecté un Python complet au terminal, et vous utilisez toujours des sockets et des pipes lents pour faire l'échange.

Si ce n'est pas trop difficile, quelle est la durée d'un test unique, quelle que soit la période ?

Cela signifie que nous sommes intéressés par la question de savoir combien de temps dure l'optimisation dans le testeur et si des calculs incorrects sont possibles ?

Dans les commentaires précédents, vous avez écrit que je devais avoir des connaissances de base en JAVA pour le comprendre.

Je connais également un peu de C# et de Python, je peux programmer en MQL4,5, puis-je maîtriser vos bibliothèques assez facilement, à quel point peuvent-elles être plus difficiles ?

 
slukin:

Un exemple donné par un développeur expérimenté serait très utile.

Il n'y a pas le temps d'expliquer, sauf s'il y a un article plus tard, avec des exemples.

 
forexman77:

S'il n'est pas difficile d'écrire combien de temps prend un test unique sur n'importe quel calendrier ?

C'est-à-dire que je suis intéressé par la question de savoir combien de temps dure l'optimisation dans le testeur et s'il y a des calculs incorrects ?

Dans les commentaires précédents, vous avez écrit que je devais avoir des connaissances de base en JAVA pour le comprendre.

Je connais un peu le C# et le Python, je peux programmer en MQL4,5, puis-je maîtriser vos bibliothèques assez facilement, à quel point peuvent-elles être plus difficiles ?

L'optimisation dans le testeur de stratégie est la même que d'habitude. Les calculs erronés dus à des données corrompues lors du transfert vers Python et inversement sont exclus, car le transfert s'effectue via la RAM, et non via des sockets ou des fichiers instables.

Oui, je mets dans ma bibliothèque du code en MQL, Java et Python. Mais vous n'êtes pas obligé d'utiliser Java si vous n'avez pas besoin d'Apache Spark, etc.

 

MetaTrader 5 build 2055 beta : Intégration avec Python, portée de type C++ et améliorations massives dans le testeur de stratégie

Terminal: Добавлено API для запроса данных из терминала MetaTrader 5 через приложения, использующие язык Python

Python est un langage de programmation moderne et de haut niveau permettant de développer des scripts et des applications. Contient de nombreuses bibliothèques pour l'apprentissage automatique, l'automatisation des processus, l'analyse et la visualisation des données.

Lepackage MetaTrader pour Python est conçu pour obtenir facilement et rapidement des données boursières via une communication interprocessus directement à partir du terminal MetaTrader 5. Les données ainsi obtenues peuvent ensuite être utilisées pour des calculs statistiques et l'apprentissage automatique.



Connexion

  1. Téléchargez la dernière version de Python à partir dehttps://www.python.org/downloads/windows.
  2. Lors de l'installation de Python, cochez la case "Add Python X.X to PATH%", afin de pouvoir exécuter des scripts en Python à partir de la ligne de commande.
  3. Installer le module MetaTrader 5 à partir de la ligne de commande
    pip install MetaTrader5
  4. Ajout des paquets matplotlib et pytz
    pip install matplotlib
    pip install pytz

Fonctions

  • MT5Initialize- établit la connexion au terminal MetaTrader 5
  • MT5Shutdown- ferme la connexion précédemment établie avec le terminal MetaTrader 5
  • MT5TerminalInfo- reçoit l'état et les paramètres du terminal MetaTrader 5 connecté
  • MT5Version- renvoie la version du terminal MetaTrader 5
  • MT5WaitForTerminal- attend que le terminal MetaTrader 5 se connecte au serveur de transactions.
  • MT5CopyRatesFrom- reçoit les barres du terminal MetaTrader 5 à partir de la date spécifiée
  • MT5CopyRatesFromPos- reçoit les barres du terminal MetaTrader 5 à partir de l'indice spécifié
  • MT5CopyRatesRange- reçoit des barres dans la plage de dates spécifiée à partir du terminal MetaTrader 5
  • MT5CopyTicksFrom- reçoit les ticks du terminal MetaTrader 5 à partir de la date spécifiée.
  • MT5CopyTicksRange- reçoit les ticks du terminal MetaTrader 5 pour la plage de dates spécifiée.
Welcome to Python.org
Welcome to Python.org
  • 2019.05.15
  • www.python.org
The official home of the Python Programming Language
 

Et alors ? Quelqu'un travaille-t-il dans ce sens ? Il n'a pas l'air enthousiaste.

Bonne chance

 
Vladimir Perervenko:

Et alors ? Quelqu'un travaille-t-il dans ce sens ? Il n'a pas l'air enthousiaste.

Bonne chance

Pas dans celui-là. Et j'utilise python pour les tests NS.
 
Roffild:

L'optimisation dans le testeur se fait comme d'habitude. Les calculs erronés dus à la corruption des données pendant le transfert vers et depuis Python sont exclus, car le transfert se fait via la RAM, et non via des sockets ou des fichiers instables.

Oui, je mets dans ma bibliothèque du code en MQL, Java et Python. Mais vous n'êtes pas obligé d'utiliser Java si vous n'avez pas besoin d'Apache Spark, etc.

Je suis d'accord pour dire que c'est plus rapide via la mémoire, mais je ne suis pas d'accord pour dire que les sockets ou les pips ne sont pas stables, et la vitesse folle de la mémoire lors de l'organisation d'un connecteur est inutile car il y a une latence échange <--- (un serveur intermédiaire est possible) ---> terminal, pour laquelle même des centaines de sockets consécutifs au sein d'une machine sont excessifs...