MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 73

 
Und eine andere interessante Frage ist, wenn ich ein Python-Programm mit all seiner Umgebung in einem Docker-Container ausführen und das Terminal ist außerhalb, wird das funktionieren?
 
Dmitri Custurov:
Wenn das Python-Programm intern Logging, Multithreading und eine Socket-Verbindung zum Terminal durchführt, wird das alles korrekt funktionieren, wenn Sie es auf einem Diagramm ausführen?

Das Terminal führt seinen eigenen Interpreter aus und leitet die Standardausgabe auf die Expertenregisterkarte des Terminals und die interne Protokollierung um. Der Interpreterprozess wird beendet, wenn Sie das Diagramm schließen, so dass Sie keine "atexit"-Callback-Funktionen registrieren können. Außerdem können Sie nicht sofort auf den Protokolltext zugreifen, da das Terminal die Protokolldatei nicht aufzeichnet, wenn Protokollereignisse eintreffen. Sie können mein Shell-Paket ausprobieren, das sofort protokolliert wird.

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 : Und eine andere interessante Frage ist, wenn ich ein Python-Programm mit all seiner Umgebung in einem Docker-Container laufen, und das Terminal ist außerhalb, so wird es funktionieren?

Ich gehe davon aus, dass Sie Linux-Container für das Docker-Paket verwenden, so dass es nicht mit dem MetaTrader5-Paket funktionieren wird. Sie können python virtualenv verwenden. Es wird nicht funktionieren, wenn Sie das Skript in das Diagramm einfügen, aber es wird funktionieren, wenn Sie die Umgebung aktivieren und es von der Befehlszeile aus ausführen.

 
Wie sieht es mit der erweiterten Autorisierung aus, wenn nicht nur Benutzername/Passwort, sondern auch das Passwort für das SSL-Zertifikat erforderlich ist?
 
Dmitri Custurov:
Wie sieht es mit der erweiterten Autorisierung aus, wenn nicht nur Benutzername/Passwort, sondern auch das Passwort für das SSL-Zertifikat erforderlich ist?

Das Passwort des Zertifikats wird vom Benutzer zum Zeitpunkt der Erstellung festgelegt. Der öffentliche Schlüssel wird dann aus dem Zertifikat extrahiert und dem Broker zur Registrierung übergeben. Lesen Sie die Anweisungen auf der Website des Brokers.

 
Alexey Viktorov:

Das Passwort des Zertifikats wird vom Benutzer zum Zeitpunkt der Erstellung festgelegt. Der öffentliche Schlüssel wird dann aus dem Zertifikat extrahiert und dem Broker zur Registrierung übergeben. Lesen Sie die Anweisungen auf der Website des Brokers.

Ich bin gerade bei diesem Thema.

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

Für das Zertifikat gibt es kein Passwortfeld. Wie verhält sich die Verbindung von Python aus, wenn im Terminal eine erweiterte Autorisierung verwendet wird?

 
Dmitri Custurov:

Ich spreche von diesem hier.

Für das Zertifikat gibt es kein Passwortfeld. Wie verhält sich die Verbindung von Python aus, wenn die erweiterte Authentifizierung im Terminal verwendet wird?

Sie hätten gleich die ganze Frage schreiben sollen. Ich weiß das nicht und hätte geschwiegen.

 
Dmitri Custurov:

Ich spreche von diesem hier.

Für das Zertifikat gibt es kein Passwortfeld. Wie verhält sich die Verbindung aus Python, wenn das Terminal die erweiterte Authentifizierung verwendet?

Dabei wird ein bereits aktiviertes und im Terminal gespeichertes Zertifikat verwendet.

Sie können jedoch selbst eine pfx-Datei in /config/certificates ablegen
 
Alexey Viktorov:

Sie hätten gleich die ganze Frage schreiben sollen. Das weiß ich nicht und ich hätte geschwiegen.

Ich entschuldige mich dafür. Ich dachte, das wäre aus dem Kontext dieses Threads klar, ich hätte mich deutlicher ausdrücken sollen.

 
Renat Fatkhullin:
Es wird ein bereits aktiviertes und im Terminal gespeichertes Zertifikat verwendet.

Aber Sie können die pfx-Datei selbst in /config/certificates ablegen

Ich danke Ihnen.