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

 

Pythonスクリプトをエディタでコンパイルすることは、エディタ内で実行することを意味します。

エラーウィンドウとログの出力を見てください。ログにはメイン出力が、エラーウィンドウには標準エラー出力が表示されます。

 
Renat Fatkhullin:

Pythonスクリプトをエディタでコンパイルすることは、エディタ内で実行することを意味します。

エラーウィンドウとログの出力を見てください。ログにはメイン出力が、エラーウィンドウには標準エラー出力が表示されます。

なるほど、「エラー」ウィンドウにエラーは表示されません。

ノーエラー

が、ログウィンドウでは、スクリプトは私のアクションを待っているのでしょう。

スクリプトは私のアクションを待っています。

私の理解では、フィードバックがないだけです(たぶんまだない)。


そして、ポスト#1 (https://www.mql5.com/ru/forum/306688 ) の例を実行しようとします - matplotlibパッケージとMetaTrader5をインストールしました。

最初の投稿にあるサンプルを実行しようとしている

エラーで

test.py started test.py 1       1
Traceback (most recent call last):      test.py 1       1
    MT5Initialize()     test.py 1       1
NameError: name 'MT5Initialize' is not defined  test.py 1       1
test.py finished in 389 ms              1       1

インログ

2020.01.27 10:08:12.899 Python  "E:\Programs\Python37\python.exe" "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\test.py"

を実行しても何も起こりません(ターミナルも同時に起動しています)。

 
Renat Fatkhullin:

Pythonスクリプトをエディタでコンパイルすることは、エディタ内で実行することを意味します。

エラーウィンドウとログの出力を見てください。ログにはメイン出力が、エラーウィンドウには標準エラー出力が表示されます。

つまり、.pyスクリプトは.ex5にはコンパイルされないのですか?
そして、ナビゲーターから実行する。

 
Vladimir Karputov:

なるほど、"Errors "ウィンドウにエラーは出ていないんですね。


が、「ログ」ウィンドウでは、スクリプトが私のアクションを待っているのでしょう。

私の理解では、フィードバックがないだけです(たぶんまだない)。


そして、ポスト#1 (https://www.mql5.com/ru/forum/306688 ) の例を実行しようとします - matplotlibパッケージとMetaTrader5をインストールしました。

最初の投稿にあるサンプルを実行しようとしている

エラーで

インログ

を実行しても何も起こりません(ターミナルは起動しています)。

MetaTrader5 のライブラリがインストールされていないため、実行してください。

pip install --upgrade metatrader5

はすべて動作します。


 
Roman:

つまり、.pyスクリプトは.ex5にはコンパイルされないのですか?
そして、ナビゲーターから実行する。

もちろん、コンパイルはしませんが、ナビゲータに *.py プログラムとして表示され、別の端末スレッドで非表示に実行されることになります。

MetaTrader 5 Python ライブラリによるターミナルとの通信。

 
Renat Fatkhullin:

MetaTrader5 のライブラリには付属していませんので、実行してください。

はすべて動作します。


ライブラリがインストールされています。


(matplotlibで すぐに入れました)


追記:そして、pythonでは実行されません。


 
Renat Fatkhullin:

もちろん、コンパイルはされませんが、navigatorで*.pyプログラムとして表示され、ターミナルの別スレッドで非表示に実行されることになります。

Python用の組み込みMetaTrader 5ライブラリを介してターミナルと通信します。

Pythonのビジュアルノートブックのようなもので、コード全体が実行されるだけなんですね。
総集編のことで尻を叩いていたのですが、総集編はすごいことになっていたでしょう。
つまり、標準的な.pyから.exeへのコンパイルでは、リバースエンジニアリングに対する保護がほとんどないのです。無駄といえば無駄なんですけどね。
.pyが.ex5にコンパイルされれば、mql5が.ex5で十分に保護された実行ファイルにコンパイルされるという驚異的な点で本当にmql5を後押ししてくれるでしょう。
Pythonはこれを世界的な問題として持っている、考えてみてください。特にpythonは.exeにコンパイルするため、CまたはC++のようなコンパイラを使用します。
そして、mql5はLLVMを使用しています。

 

pythonをアンインストールしました。3.8.1 x64をインストールしました。

Pythonで実行すると、以下のようなエラーが発生するようになりました。


Python 3.8.1 (tags/v3.8.1:1 b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
= RESTART: C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py
Traceback (most recent call last):
  File "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py", line 2, in <module>
    from MetaTrader5 import *
  File "E:\Programs\Python\Python38\lib\site-packages\MetaTrader5\__init__.py", line 35, in <module>
    from .C import *
ImportError: DLL load failed while importing C: Не найден указанный модуль.
>>> 
 
Vladimir Karputov:

図書館が立つ。


(matplotlibと 一緒にすぐに提供されました)


追記:そして、pythonでは実行されません。


Python 3.8を使用していますが、多くのライブラリが3.8に対応していないため、3.7.6を推奨します。

1) コマンドラインから、スクリプトを確認する。

2) PATHにpythonのパスがあることを確認します。

3) Pythonのコピーが1つだけで、他のバージョンと競合していないことを確認します。

4) エディタにある1コピーのPythonへのパスが正しいことを確認します。


Visual Studioの ような異なる環境から間接的にインストールされたPythonの動物園があることはよくあることです。

 
Vladimir Karputov:

そして、ポスト#1 (https://www.mql5.com/ru/forum/306688 ) の例を実行しようとします - matplotlibパッケージとMetaTrader5をインストールしました。

最初の投稿にあるサンプルを実行しようとすると

エラーで

インログ

を実行しても何も起こりません(ターミナルも同時に起動しています)。

少し待つ必要があります - スクリプトは2019.01.28からのデータを要求します - それは時間がかかります。

2つ目の理由は、ターミナルで「ウィンドウ内の最大バー 数」が制限値で指定されていることです。

ticks1 = MT5CopyTicksFrom("EURAUD", datetime(2019,1,28,13), 10000, MT5_COPY_TICKS_ALL)
ticks2 = MT5CopyTicksRange("AUDUSD", datetime(2019,1,27,13), datetime(2019,1,28,13,1), MT5_COPY_TICKS_ALL)

rates1 = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,1,28,13), 1000)
rates2 = MT5CopyRatesFromPos("EURGBP", MT5_TIMEFRAME_M1, 0, 1000)
rates3 = MT5CopyRatesRange("EURCAD", MT5_TIMEFRAME_M1, datetime(2019,1,27,13), datetime(2019,1,28,13))

ヘルプに明示されているhttps://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

MetaTrader 5ターミナルは、チャート上でユーザーが利用可能な履歴内のバーだけを提供します。ユーザーが利用できるバーの数は、設定の「Max bars in window」パラメータで設定します。


もし、本当にバーの数が問題なら、上限を変更するか、分単位で表示するようにスクリプトを修正すればよいでしょう。

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду " Настройки" меню "Сервис" или нажмите "Ctrl+O". Графики — общая настройка отображения ценовых графиков, а также настройка параметров управления объектами: выделение объектов после их создания, немедленная...