MetaTrader 5 Python用户组 - 如何在Metatrader中使用Python - 页 73

 
还有一个有趣的问题是,如果我在docker容器中运行一个带有所有环境的python程序,而终端在外面,这能行吗?
 
Dmitri Custurov:
如果python程序内部做了日志、多线程、套接字连接到终端,如果你在图表上运行它,是否都能正常工作?

终端运行自己的解释器,并将标准输出重定向到终端的专家标签和内部日志。当你关闭图表时,解释器进程就会终止,所以你将无法注册任何 "atexit "回调函数。另外,你将不能立即访问日志文本,因为终端不会在日志事件到达时记录日志文件。你可以试试我的shell包,它将立即记录。

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 : 另一个有趣的问题是,如果我在docker容器中运行一个带有所有环境的python程序,而终端在外面,那么它能工作吗?

我假设你使用的是linux容器的docker,所以它不会与MetaTrader5软件包一起工作。你可以使用python virtualenv。如果你把脚本放在图表上,它不会起作用,但如果你激活环境并从命令行运行它,它就会起作用。

 
当不仅需要用户名/密码,而且还需要ssl证书密码时,如何进行扩展授权?
 
Dmitri Custurov:
当不仅需要用户名/密码,而且还需要ssl证书密码时,如何进行扩展授权?

证书的密码是由用户在生成时设置的。然后从证书中提取公钥并交给经纪人进行注册。阅读经纪人网站上的说明。

 
Alexey Viktorov:

证书的密码是由用户在生成时设置的。然后从证书中提取公钥并交给经纪人进行注册。阅读经纪人网站上的说明。

我在这个主题上。

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

该证书没有密码字段。如果在终端中使用了扩展授权,从python中的连接将如何表现?

 
Dmitri Custurov:

我说的是这个。

该证书没有密码字段。如果在终端中使用高级认证,从python中的连接将如何表现?

你应该马上写出完整的问题。我不知道,也会保持沉默。

 
Dmitri Custurov:

我说的是这个。

该证书没有密码字段。如果终端使用扩展认证,从Python的连接将如何表现?

这将使用一个已经激活并保存在终端的证书。

但你可以自己在/config/certificates中放一个pfx文件
 
Alexey Viktorov:

你应该直接写出完整的问题。我不知道,我也会保持沉默。

我对此表示歉意。我以为从这个主题的上下文中可以看出,我应该更清楚。

 
Renat Fatkhullin:
将使用已经激活并保存在终端的证书。

但你可以自己把pfx文件放在/config/certificates里。

谢谢你。