MetaTrader 5 Python User Group - メタトレーダーでPythonを使用する方法 - ページ 73

 
もうひとつ興味深いのは、Dockerコンテナの中でPythonのプログラムをすべての環境とともに実行し、ターミナルは外に置いた場合、それは動作するのでしょうか?
 
Dmitri Custurov:
Python プログラムが内部でロギング、マルチスレッド、ターミナルへのソケット接続を行う場合、チャート上で実行すればすべて正しく動作するのでしょうか?

ターミナルは独自のインタプリタを実行し、標準出力をターミナルのエキスパートタブと内部ロギングにリダイレクトします。ダイアグラムを閉じるとインタプリタプロセスが終了するので、「atexit」コールバック関数を登録することができなくなります。また、端末はログイベントが到来してもログファイルを記録しないため、すぐにログテキストにアクセスすることはできません。私のシェルパッケージはすぐにログを取ることができますので、お試しください。

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のプログラムをすべての環境とともに実行し、ターミナルは外側にある場合、それで動作するのでしょうか。

dockerにlinuxのコンテナを使用していると思いますので、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:

これのことなんですけどね。

証明書のパスワード欄はありません。ターミナルでadvanced authenticationを使用した場合、pythonからの接続はどのように動作するのでしょうか?

すぐに質問の全文を書くべきでしたね。そんなことは知らないし、黙っていただろう。

 
Dmitri Custurov:

これのことなんですけどね。

証明書のパスワード欄はありません。ターミナルが拡張認証を使用している場合、pythonからの接続はどのように動作するのでしょうか?

この場合、すでに有効化され、端末に保存されている証明書が使用されます。

しかし、自分で /config/certificates に pfx ファイルを置くことができます。
 
Alexey Viktorov:

素直に質問の全文を書くべきでしたね。そんなこと知らないし、黙っていたかもしれない。

その点については、申し訳なく思っています。このスレッドの文脈からわかると思ったのですが、もっとはっきり言うべきでした。

 
Renat Fatkhullin:
すでに有効化され、端末に保存されている証明書が使用されます。

ただし、pfx ファイルは自分で /config/certificates に置くことができます。

ありがとうございます。