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

 
Et une autre question intéressante : si j'exécute un programme python avec tout son environnement dans un conteneur docker et que le terminal est à l'extérieur, cela fonctionnera-t-il ?
 
Dmitri Custurov:
Si le programme python effectue en interne la journalisation, le multithreading, la connexion par socket au terminal, tout cela fonctionnera-t-il correctement si vous l'exécutez sur un graphique ?

Le terminal exécute son propre interprète et redirige la sortie standard vers l'onglet expert du terminal et la journalisation interne. Le processus de l'interpréteur se termine lorsque vous fermez le diagramme, vous ne pourrez donc pas enregistrer de fonctions de rappel "atexit". De plus, vous ne pourrez pas accéder immédiatement au texte du journal car le terminal n'enregistre pas le fichier journal au fur et à mesure de l'arrivée des événements. Vous pouvez essayer mon paquet shell qui se connectera immédiatement.

import atexit
import logging
import os
from pathlib import Path

import pymt5adapter as mta


def main(conn):
    try:
        symbol, timeframe = mta.parse_args()
        conn.logger.info(f'Script dropped on {symbol} {mta.TIMEFRAME(timeframe).name}')
        return True
    except TypeError:
        conn.logger.warning(f'Missing... Drop on chart or start script with commandline args...')
        return False


if __name__ == '__main__':
    desktop_log_path = Path.home() / 'Desktop/python_mt5.log'
    atexit.register(lambda: os.startfile(desktop_log_path))
    logger = mta.get_logger(path_to_logfile=desktop_log_path, loglevel=logging.DEBUG)
    with mta.connected(raise_on_errors=True, logger=logger) as conn:
        main(conn)
 
Dmitri Custurov : Et une autre question intéressante : si je lance un programme python avec tout son environnement dans un conteneur docker, et que le terminal est à l'extérieur, cela fonctionnera-t-il ?

Je suppose que vous utilisez des conteneurs linux pour le docker, il ne fonctionnera donc pas avec le paquet MetaTrader5. Vous pouvez utiliser python virtualenv. Il ne fonctionnera pas si vous placez le script sur le graphique, mais il fonctionnera si vous activez l'environnement et l'exécutez depuis la ligne de commande.

 
Qu'en est-il de l'autorisation étendue lorsque non seulement le nom d'utilisateur/mot de passe mais aussi le mot de passe du certificat ssl sont requis ?
 
Dmitri Custurov:
Qu'en est-il de l'autorisation étendue lorsque non seulement le nom d'utilisateur/mot de passe mais aussi le mot de passe du certificat ssl sont requis ?

Le mot de passe du certificat est défini par l'utilisateur au moment de la génération. La clé publique est ensuite extraite du certificat et donnée au courtier pour l'enregistrement. Lisez les instructions sur le site web du courtier.

 
Alexey Viktorov:

Le mot de passe du certificat est défini par l'utilisateur au moment de la génération. La clé publique est ensuite extraite du certificat et donnée au courtier pour l'enregistrement. Lisez les instructions sur le site web du courtier.

Je suis sur le sujet de celui-ci.

initialize(
   path,                     // путь к EXE-файлу терминала MetaTrader 5
   login=LOGIN,              // номер счета
   password="PASSWORD",      // пароль
   server="SERVER",          // имя сервера, как оно задано в терминале
   timeout=TIMEOUT,          // таймаут
   portable=False            // режим portable
   )

Il n'y a pas de champ de mot de passe pour le certificat. Comment se comportera la connexion depuis python si l'autorisation étendue est utilisée dans le terminal ?

 
Dmitri Custurov:

Je parle de celui-là.

Il n'y a pas de champ de mot de passe pour le certificat. Comment se comportera la connexion depuis python si l'authentification avancée est utilisée dans le terminal ?

Vous auriez dû écrire la question complète tout de suite. Je ne le sais pas et j'aurais gardé le silence.

 
Dmitri Custurov:

Je parle de celui-là.

Il n'y a pas de champ de mot de passe pour le certificat. Comment se comportera la connexion depuis python si le terminal utilise l'authentification étendue ?

Cela utilisera un certificat déjà activé et enregistré dans le terminal.

Mais vous pouvez mettre vous-même un fichier pfx dans /config/certificates
 
Alexey Viktorov:

Vous auriez dû écrire la question complète tout de suite. Je ne le sais pas et j'aurais gardé le silence.

Je m'excuse pour cela. Je pensais que ce serait clair vu le contexte de ce fil, j'aurais dû être plus clair.

 
Renat Fatkhullin:
Un certificat déjà activé et enregistré dans le terminal sera utilisé.

Mais vous pouvez mettre vous-même le fichier pfx dans /config/certificats

Merci.