MetaTrader 5 Python User Group - Comment utiliser Python dans Metatrader - page 31

 

Compiler des scripts python dans l'éditeur signifie les exécuter dans l'éditeur.

Examinez les résultats dans les fenêtres d'erreur et le journal. Le journal montre la sortie principale, et les fenêtres d'erreur montrent la sortie stderr.

 
Renat Fatkhullin:

Compiler des scripts python dans l'éditeur signifie les exécuter dans l'éditeur.

Examinez les résultats dans les fenêtres d'erreur et le journal. Le journal montre la sortie principale et la fenêtre d'erreur montre la sortie stderr.

Je vois. Il n'y a aucune erreur dans la fenêtre d'erreur,

aucune erreur

mais dans la fenêtre du journal, le script attend probablement mon action.

le script attend mon action

D'après ce que je comprends, il n'y a tout simplement pas de retour d'information (probablement pas encore).


J'essaie ensuite d'exécuter l'exemple du message n° 1 (https://www.mql5.com/ru/forum/306688 )- j'ai installé le paquet matplotlib et MetaTrader5.

J'essaie d'exécuter l'exemple du premier message

Dans les erreurs

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

Dans le journal

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"

et rien ne se passe (le terminal fonctionne en même temps).

 
Renat Fatkhullin:

Compiler des scripts python dans l'éditeur signifie les exécuter dans l'éditeur.

Examinez les résultats dans les fenêtres d'erreur et le journal. Le journal montre la sortie principale et les fenêtres d'erreur montrent la sortie stderr.

Le script .py ne compilera donc pas en .ex5 ?
Et lancez-la depuis le navigateur.

 
Vladimir Karputov:

Je vois. Il n'y a pas d'erreurs dans la fenêtre "Erreurs",


mais dans la fenêtre "Log", le script est probablement en train d'attendre mon action.

D'après ce que je comprends, il n'y a tout simplement pas de retour d'information (probablement pas encore).


J'essaie ensuite d'exécuter l'exemple du message n° 1 (https://www.mql5.com/ru/forum/306688 )- j'ai installé le paquet matplotlib et MetaTrader5.

J'essaie d'exécuter l'exemple du premier message

Dans les erreurs

Dans le journal

et rien ne se passe (le terminal est en cours d'exécution).

La bibliothèque MetaTrader5 n'est pas installée, faites-le :

pip install --upgrade metatrader5

tout fonctionne :


 
Roman:

Donc, le script .py ne sera pas compilé en .ex5 ?
Et lancez-la depuis le navigateur.

Bien sûr, il ne sera pas compilé, mais sera visible dans le navigateur en tant que programme *.py et s'exécutera de manière cachée dans un fil d'exécution terminal séparé.

Communication avec le terminal via la bibliothèque Python de MetaTrader 5.

 
Renat Fatkhullin:

Non fourni avec la bibliothèque MetaTrader5, faites-le :

tout fonctionne :


La bibliothèque est installée :


(a été mis en place immédiatement avecmatplotlib)


Ajouté : et ne fonctionne pas en python :


 
Renat Fatkhullin:

Bien sûr, il ne sera pas compilé, mais sera visible dans le navigateur en tant que programme *.py et s'exécutera de manière cachée dans un thread séparé du terminal.

Communication avec le terminal via la bibliothèque MetaTrader 5 intégrée pour Python.

Maintenant je comprends, ce sera comme un Python visual notebook, seulement le code entier est exécuté.
Je me suis démené pour la compilation, et la compilation aurait été géniale.
Le problème est qu'avec la compilation standard de .py en .exe, il y a très peu de protection contre la rétro-ingénierie. On peut dire que c'est inutile.
Si .py compilait en .ex5, cela donnerait un coup de pouce à mql5 en termes d'efficacité. mql5 compile en un exécutable bien protégé par .ex5.
Pour Python, c'est un problème mondial, pensez-y. D'autant plus que python se compile en .exe et utilise un compilateur de type C ou C++.
Et mql5 utilise LLVM.

 

J'ai désinstallé python. Installé 3.8.1 x64.

Lors de l'exécution en Python, il y a maintenant ces erreurs :


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:

La bibliothèque est debout :


(a été fourni immédiatement avecmatplotlib)


Ajouté : et ne fonctionne pas en python :


Vous avez Python 3.8, mieux vaut 3.7.6, car de nombreuses bibliothèques ne sont pas encore prêtes pour la 3.8 de toute façon.

1) Depuis la ligne de commande, vérifiez le script.

2) Vérifiez que le chemin de python est dans PATH.

3) Assurez-vous qu'il n'existe qu'une seule copie de Python, et qu'il n'y a pas de conflits avec d'autres versions.

4) Assurez-vous que l'éditeur a le chemin vers la copie unique de Python dans le PATH de Python.


Il est tout à fait possible que vous ayez un zoo de Pythons indirectement installés à partir de différents environnements comme Visual Studio.

 
Vladimir Karputov:

J'essaie ensuite d'exécuter l'exemple du message n° 1 (https://www.mql5.com/ru/forum/306688 )- j'ai installé le paquet matplotlib et MetaTrader5.

J'essaie d'exécuter l'exemple du premier message.

Dans les erreurs

Dans le journal

et rien ne se passe (le terminal fonctionne en même temps).

Nous devons attendre un peu - le script demande des données à partir du 28.01.2019 - cela prend du temps.

Deuxième raison possible - la valeur limitée de "Max bars in window" est spécifiée dans le terminal.

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

L'aide indique explicitement https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

Le terminal MetaTrader 5 ne donne des barres que dans l'historique disponible pour l'utilisateur sur les graphiques. Le nombre de barres disponibles pour l'utilisateur est défini dans les paramètres par le paramètre "Max bars in window ".


S'il s'agit vraiment du nombre de barres, vous pouvez soit modifier la limite, soit faire en sorte que le script prenne les minutes les plus proches, par exemple pour 2020 - cela devrait fonctionner.

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