MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 31

 

Das Kompilieren von Python-Skripten im Editor bedeutet, dass sie zur Ausführung im Editor gestartet werden.

Sehen Sie sich die Ausgaben in den Fehlerfenstern und im Protokoll an. Das Protokoll zeigt die Hauptausgabe, und die Fehlerfenster zeigen die stderr-Ausgabe.

 
Renat Fatkhullin:

Das Kompilieren von Python-Skripten im Editor bedeutet, dass sie zur Ausführung im Editor gestartet werden.

Sehen Sie sich die Ausgaben in den Fehlerfenstern und im Protokoll an. Das Protokoll zeigt die Hauptausgabe und das Fehlerfenster zeigt die stderr-Ausgabe.

Verstehe. Im Fehlerfenster werden keine Fehler angezeigt,

keine Fehler

aber im Protokollfenster wartet das Skript wahrscheinlich auf meine Aktion.

das Skript wartet auf meine Aktion

Soweit ich weiß, gibt es (wahrscheinlich noch) kein Feedback.


Dann versuche ich, das Beispiel aus Beitrag #1 (https://www.mql5.com/ru/forum/306688 ) auszuführen - installierte das matplotlib-Paket und MetaTrader5.

Ich versuche, das Beispiel aus dem ersten Beitrag auszuführen

Bei Fehlern

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

Im Protokoll

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"

und nichts passiert (das Terminal läuft gleichzeitig).

 
Renat Fatkhullin:

Das Kompilieren von Python-Skripten im Editor bedeutet, dass sie zur Ausführung im Editor gestartet werden.

Sehen Sie sich die Ausgaben in den Fehlerfenstern und im Protokoll an. Das Protokoll zeigt die Hauptausgabe und die Fehlerfenster zeigen die stderr-Ausgabe.

Das .py-Skript wird also nicht zu .ex5 kompiliert?
Und führen Sie es über den Navigator aus.

 
Vladimir Karputov:

Verstehe, im Fenster "Fehler" werden keine Fehler angezeigt,


aber im Fenster "Log" wartet das Skript wahrscheinlich auf meine Aktion.

Soweit ich weiß, gibt es einfach keine Rückmeldung (wahrscheinlich noch nicht).


Dann versuche ich, das Beispiel aus Beitrag #1 (https://www.mql5.com/ru/forum/306688 ) auszuführen - installierte das matplotlib-Paket und MetaTrader5.

Ich versuche, das Beispiel aus dem ersten Beitrag auszuführen

Bei Fehlern

Im Protokoll

und nichts passiert (Terminal läuft).

MetaTrader5-Bibliothek ist nicht installiert, tun Sie es:

pip install --upgrade metatrader5

alles funktioniert:


 
Roman:

Das .py-Skript wird also nicht zu .ex5 kompiliert?
Und führen Sie es über den Navigator aus.

Natürlich wird es nicht kompiliert, sondern ist im Navigator als *.py-Programm sichtbar und läuft versteckt in einem separaten Terminal-Thread.

Kommunikation mit dem Terminal über die MetaTrader 5 Python-Bibliothek.

 
Renat Fatkhullin:

Nicht mit der MetaTrader5-Bibliothek geliefert, tun Sie es:

alles funktioniert:


Die Bibliothek ist installiert:


(wurde sofort mitmatplotlib eingefügt)


Hinzugefügt: und läuft nicht in Python:


 
Renat Fatkhullin:

Natürlich wird es nicht kompiliert, sondern ist im Navigator als *.py-Programm sichtbar und läuft versteckt in einem separaten Thread des Terminals.

Kommunikation mit dem Terminal über die integrierte MetaTrader 5-Bibliothek für Python.

Jetzt verstehe ich es, es wird wie ein visuelles Python-Notizbuch sein, nur dass der gesamte Code ausgeführt wird.
Ich habe mir den Arsch aufgerissen für die Kompilation, und die Kompilation wäre großartig gewesen.
Die Sache ist die, dass es bei der Standardkompilierung von .py zu .exe nur sehr wenig Schutz gegen Reverse-Engineering gibt. Man könnte sagen, es ist nutzlos.
Wenn .py zu .ex5 kompiliert würde, würde es mql5 in Bezug auf die Kompilierung zu einer ausführbaren Datei, die durch .ex5 gut geschützt ist, wirklich aufwerten.
Bei Python handelt es sich um ein globales Problem, denken Sie darüber nach. Vor allem, da Python zu .exe kompiliert und einen C oder C++ ähnlichen Compiler verwendet.
Und mql5 verwendet LLVM.

 

Python deinstalliert. Installiert 3.8.1 x64.

Bei der Ausführung in Python treten nun diese Fehler auf:


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:

Die Bibliothek steht:


(wurde sofort zusammen mitmatplotlib geliefert)


Hinzugefügt: und läuft nicht in Python:


Sie haben Python 3.8, besser 3.7.6, da viele Bibliotheken ohnehin noch nicht für 3.8 bereit sind

1) Überprüfen Sie das Skript in der Befehlszeile.

2) Überprüfen Sie, ob der Python-Pfad in PATH enthalten ist.

3) Stellen Sie sicher, dass es nur eine Kopie von Python gibt und keine Konflikte mit anderen Versionen.

4) Stellen Sie sicher, dass der Editor den Pfad zu der einzelnen Python-Kopie im PATH von Python hat.


Es ist durchaus möglich, dass Sie einen Zoo von indirekt installierten Pythons aus verschiedenen Umgebungen wie Visual Studio haben.

 
Vladimir Karputov:

Dann versuche ich, das Beispiel aus Beitrag #1 (https://www.mql5.com/ru/forum/306688 ) auszuführen - installierte das matplotlib-Paket und MetaTrader5.

Ich versuche, das Beispiel aus dem ersten Beitrag auszuführen

Bei Fehlern

Im Protokoll

und nichts passiert (das Terminal läuft gleichzeitig).

Wir müssen ein wenig warten - das Skript fordert Daten ab dem 28.01.2019 an - das braucht Zeit.

Zweite mögliche Ursache: Im Terminal ist ein begrenzter Wert für "Max bars in window" angegeben.

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))

In der Hilfe steht ausdrücklich https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

Das MetaTrader 5-Terminal zeigt die Balken nur innerhalb der Historie an, die dem Benutzer in den Charts zur Verfügung steht. Die Anzahl der Takte, die dem Benutzer zur Verfügung stehen, wird in den Einstellungen durch den Parameter "Max Takte im Fenster " festgelegt.


Wenn es wirklich um die Anzahl der Balken geht, können Sie entweder das Limit ändern oder das Skript so einrichten, dass es die nächsten Minuten nimmt, z. B. für 2020 - das sollte funktionieren

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