Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 31

 

Compilar para los scripts de python en el editor significa ejecutarlos dentro del editor.

Mira la salida en las ventanas de error y el registro. El registro muestra la salida principal, y las ventanas de error muestran la salida stderr.

 
Renat Fatkhullin:

Compilar para los scripts de python en el editor significa ejecutarlos dentro del editor.

Mira la salida en las ventanas de error y el registro. El registro muestra la salida principal y la ventana de error muestra la salida stderr.

Ya veo. No hay errores en la ventana de errores,

sin errores

pero en la ventana de registro, el script probablemente está esperando mi acción.

el guión está esperando mi acción

Según tengo entendido, simplemente no hay retroalimentación (probablemente todavía no).


Luego trato de ejecutar el ejemplo del post #1 (https://www.mql5.com/ru/forum/306688 )- instalado el paquete matplotlib y MetaTrader5.

Intentando ejecutar el ejemplo del primer post

En los errores

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

En el registro

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"

y no pasa nada (el terminal se está ejecutando al mismo tiempo).

 
Renat Fatkhullin:

Compilar para los scripts de python en el editor significa ejecutarlos dentro del editor.

Mira la salida en las ventanas de error y el registro. El registro muestra la salida principal y las ventanas de error muestran la salida stderr.

¿Así que el script .py no compilará a .ex5?
Y ejecutarlo desde el navegador.

 
Vladimir Karputov:

Ya veo. No hay errores en la ventana de "Errores",


pero en la ventana "Log", el script probablemente está esperando mi acción.

Según tengo entendido, simplemente no hay retroalimentación (probablemente aún no).


Luego trato de ejecutar el ejemplo del post #1 (https://www.mql5.com/ru/forum/306688 )- instalado el paquete matplotlib y MetaTrader5.

Intentando ejecutar el ejemplo del primer post

En los errores

En el registro

y no pasa nada (el terminal está funcionando).

La biblioteca de MetaTrader5 no está instalada, hágalo:

pip install --upgrade metatrader5

todo funciona:


 
Roman:

Entonces, ¿el script .py no será compilado a .ex5?
Y ejecutarlo desde el navegador.

Por supuesto, no compilará, pero será visible en el navegador como un programa *.py y se ejecutará oculto en un hilo de terminal separado.

Comunicación con el terminal a través de la biblioteca Python de MetaTrader 5.

 
Renat Fatkhullin:

No se suministra con la biblioteca de MetaTrader5, hágalo:

todo funciona:


La biblioteca está instalada:


(se puso inmediatamente conmatplotlib)


Añadido: y no se ejecuta en python:


 
Renat Fatkhullin:

Por supuesto, no se compilará, sino que será visible en el navegador como programa *.py y se ejecutará oculto en un hilo separado de la terminal.

Comunicación con el terminal a través de la biblioteca incorporada de MetaTrader 5 para Python.

Ahora lo entiendo, será como un cuaderno visual de Python, sólo que se ejecuta todo el código.
Me he dejado la piel por la compilación, y la compilación habría sido increíble.
La cuestión es que, con la compilación estándar de .py a .exe, hay muy poca protección contra la ingeniería inversa. Se podría decir que es inútil.
Si .py compilara a .ex5, realmente impulsaría a mql5 en términos de cómo mql5 compila a un ejecutable bien protegido por .ex5.
Python tiene esto como un problema global, piénsalo. Especialmente desde que python compila a .exe, utiliza C o C++ como compilador.
Y mql5 utiliza LLVM.

 

Desinstalado python. Instalado 3.8.1 x64.

Cuando se ejecuta en Python ahora tiene estos errores:


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 biblioteca se mantiene en pie:


(se suministró inmediatamente junto conmatplotlib)


Añadido: y no se ejecuta en python:


Tienes Python 3.8, mejor 3.7.6 ya que muchas librerías aún no están preparadas para 3.8.

1) Desde la línea de comandos, compruebe el script.

2) Compruebe que la ruta de python está en el PATH.

3) Asegúrese de que sólo hay una copia de Python, y que no hay conflictos con otras versiones.

4) Asegúrese de que el editor tiene la ruta a la copia única de Python en el PATH de Python.


Es muy posible que tengas un zoo de Pythons instalados indirectamente desde diferentes entornos como Visual Studio.

 
Vladimir Karputov:

Luego trato de ejecutar el ejemplo del post #1 (https://www.mql5.com/ru/forum/306688 )- instalado el paquete matplotlib y MetaTrader5.

Intentando ejecutar el ejemplo del primer post

En los errores

En el registro

y no pasa nada (el terminal se está ejecutando al mismo tiempo).

Hay que esperar un poco - el script solicita datos a partir del 28.01.2019 - lleva tiempo.

Segunda razón posible - el valor limitado de "Barras máximas en la ventana" se especifica en el 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))

La ayuda indica explícitamente https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

El terminal MetaTrader 5 sólo ofrece barras dentro del historial disponible para el usuario en los gráficos. El número de barras disponibles para el usuario se establece en los ajustes mediante el parámetro "Barras máximas en la ventana ".


Si realmente se trata del número de barras, puede cambiar el límite o arreglar la secuencia de comandos para que tome los minutos más cercanos, por ejemplo, para 2020 - esto debería funcionar

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