Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 73

 
Y otra pregunta interesante es si ejecuto un programa python con todo su entorno en un contenedor docker y la terminal está fuera, ¿funcionará?
 
Dmitri Custurov:
Si el programa python hace internamente logging, multithreading, conexión de socket a la terminal, ¿funcionará todo correctamente si lo ejecutas en un gráfico?

La terminal ejecuta su propio intérprete y redirige la salida estándar a la pestaña de experto de la terminal y al registro interno. El proceso del intérprete termina cuando se cierra el diagrama, por lo que no podrá registrar ninguna función de devolución de llamada "atexit". Además, no podrá acceder al texto del registro inmediatamente, ya que el terminal no registra el archivo de registro a medida que llegan los eventos de registro. Puede probar mi paquete de shell que se registrará inmediatamente.

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 : Y otra pregunta interesante es si ejecuto un programa python con todo su entorno en un contenedor docker, y la terminal está fuera, ¿entonces funcionará?

Supongo que estás usando contenedores linux para el docker, por lo que no funcionará con el paquete MetaTrader5. Puedes usar python virtualenv. No funcionará si pones el script en el gráfico, pero sí si activas el entorno y lo ejecutas desde la línea de comandos.

 
¿Qué pasa con la autorización ampliada cuando no sólo se requiere el nombre de usuario/contraseña sino también la contraseña del certificado ssl?
 
Dmitri Custurov:
¿Qué pasa con la autorización ampliada cuando no sólo se requiere el nombre de usuario/contraseña sino también la contraseña del certificado ssl?

La contraseña del certificado la establece el usuario en el momento de la generación. A continuación, se extrae la clave pública del certificado y se entrega al intermediario para su registro. Lea las instrucciones en el sitio web del corredor.

 
Alexey Viktorov:

La contraseña del certificado la establece el usuario en el momento de la generación. A continuación, se extrae la clave pública del certificado y se entrega al intermediario para su registro. Lea las instrucciones en el sitio web del corredor.

Estoy en el tema de este.

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

No hay ningún campo de contraseña para el certificado. ¿Cómo se comportará la conexión desde python si se utiliza la autorización ampliada en el terminal?

 
Dmitri Custurov:

Me refiero a este.

No hay ningún campo de contraseña para el certificado. ¿Cómo se comportará la conexión desde python si se utiliza la autenticación avanzada en la terminal?

Deberías haber escrito la pregunta completa de inmediato. No lo sé y habría guardado silencio.

 
Dmitri Custurov:

Me refiero a este.

No hay campo de contraseña para el certificado. ¿Cómo se comportará la conexión desde python si la terminal utiliza la autenticación extendida?

Esto utilizará un certificado ya activado y guardado en el terminal.

Pero usted mismo puede poner un archivo pfx en /config/certificados
 
Alexey Viktorov:

Deberías haber escrito la pregunta completa de inmediato. No lo sé y me habría callado.

Me disculpo por ello. Pensé que quedaría claro por el contexto de este hilo, debería haber sido más claro.

 
Renat Fatkhullin:
Se utilizará un certificado ya activado y guardado en el terminal.

Pero usted mismo puede poner el archivo pfx en /config/certificados

Gracias.