MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 73

 
E un'altra domanda interessante è se eseguo un programma python con tutto il suo ambiente in un contenitore docker e il terminale è fuori, funzionerà?
 
Dmitri Custurov:
Se il programma python internamente fa logging, multithreading, connessione socket al terminale, funzionerà tutto correttamente se lo si esegue su un grafico?

Il terminale esegue il proprio interprete e reindirizza l'output standard alla scheda esperto del terminale e al logging interno. Il processo dell'interprete termina quando si chiude il diagramma, quindi non sarà possibile registrare alcuna funzione di callback "atexit". Inoltre, non sarete in grado di accedere immediatamente al testo del log, poiché il terminale non registra il file di log man mano che arrivano gli eventi del log. Potete provare il mio pacchetto shell che registrerà immediatamente.

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 : E un'altra domanda interessante è se eseguo un programma python con tutto il suo ambiente in un contenitore docker, e il terminale è fuori, quindi funzionerà?

Presumo che tu stia usando contenitori linux per docker, quindi non funzionerà con il pacchetto MetaTrader5. Potete usare python virtualenv. Non funzionerà se metti lo script sul grafico, ma funzionerà se attivi l'ambiente e lo esegui dalla linea di comando.

 
Che dire dell'autorizzazione estesa quando è richiesta non solo la username/password ma anche la password del certificato ssl?
 
Dmitri Custurov:
Che dire dell'autorizzazione estesa quando è richiesta non solo la username/password ma anche la password del certificato ssl?

La password del certificato è impostata dall'utente al momento della generazione. La chiave pubblica viene poi estratta dal certificato e data al broker per la registrazione. Leggete le istruzioni sul sito web del broker.

 
Alexey Viktorov:

La password del certificato è impostata dall'utente al momento della generazione. La chiave pubblica viene poi estratta dal certificato e data al broker per la registrazione. Leggete le istruzioni sul sito web del broker.

Sono in tema con questo.

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

Non c'è un campo password per il certificato. Come si comporterà la connessione da python se si usa l'autorizzazione estesa nel terminale?

 
Dmitri Custurov:

Sto parlando di questo.

Non c'è un campo password per il certificato. Come si comporterà la connessione da python se si usa l'autenticazione avanzata nel terminale?

Avresti dovuto scrivere subito la domanda completa. Io non lo so e avrei taciuto.

 
Dmitri Custurov:

Sto parlando di questo.

Non c'è un campo password per il certificato. Come si comporta la connessione da python se il terminale usa l'autenticazione estesa?

Questo userà un certificato già attivato e salvato nel terminale.

Ma puoi mettere tu stesso un file pfx in /config/certificates
 
Alexey Viktorov:

Avresti dovuto scrivere subito la domanda completa. Non lo so e avrei taciuto.

Mi scuso per questo. Pensavo che sarebbe stato chiaro dal contesto di questo thread, avrei dovuto essere più chiaro.

 
Renat Fatkhullin:
Verrà utilizzato un certificato già attivato e salvato nel terminale.

Ma puoi mettere tu stesso il file pfx in /config/certificates

Grazie.