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

 
Сергей Таболин:

Otra pregunta de un recién llegado.

La situación es la siguiente. Tengo un indicador. Cuando lo añado al gráfico en modo "frío", tarda 7-8 segundos en calcularse.

He hecho lo mismo en python. La diferencia es que python escribe los datos en un archivo .csv.

Entiendo las pérdidas de conexión con MT5, otros gastos generales.... Pero, 8 segundos contra 3 horas..... ???????? CÓMO ???????????

¿Qué quieres de un lenguaje que es cien veces más lento que C++?

Todo lo rápido en Python está escrito como módulos C++. Si no hay un módulo rápido adecuado, todo será infinitamente más lento.


copy_ticks_range, así como el resto de los métodos de extracción de datos en la API de Python están escritos por nosotros de forma súper eficiente y rápida a nivel de dar esos datos a MQL5.
 
Renat Fatkhullin:

¿Qué quieres de un lenguaje que es cien veces más lento que C++?

Todo lo rápido en Python está escrito como módulos C++. Si no hay un módulo rápido adecuado, todo será infinitamente más lento.


copy_ticks_range, así como otros métodos de extracción de datos en la API de Python son escritos por nosotros super eficiente y rápido a nivel de dar estos datos en MQL5.

Más lento, no por CIENTOS....

Gracias, Renat, por la respuesta. ¿Supongo que esta velocidad está únicamente a merced de Python? Yo mismo pensaba que ni llamar a los ticks en MT, ni escribir datos en un archivo podía ralentizar tanto...

 

¿Ves ahora por qué nos esforzamos tanto en el rendimiento lingüístico?

De lo contrario, es imposible manejar los volúmenes modernos.

No apoyamos a Python por sí mismo, sino como un puente hacia bibliotecas eficientes escritas para él (en C++).

 
Renat, ¿puedes hacer un breve resumen de lo que has conseguido con el nuevo probador?

Entonces seguramente se incluirá una funcionalidad de la API para utilizar el probador con Python, ¿no?

Saludos
 
Christian:

Entonces seguramente se incluirá una funcionalidad de la API para utilizar el probador con Python, ¿no?

No. Es ingenuo pensar que nos suicidaríamos y elegiríamos un lenguaje cien veces más lento que el nuestro para matar a un probador.

Es mucho más rentable para nosotros desarrollar nuestra idea de recompilar bibliotecas C++ de terceros en módulos MQL5. Para ello, hemos empezado a incluir un compilador LLVM externo en el editor.

 
Renat Fatkhullin:

No. Es ingenuo pensar que nos suicidaríamos y elegiríamos un lenguaje cien veces más lento que el nuestro para matar a un probador.

Es mucho más rentable para nosotros desarrollar nuestra idea de recompilar bibliotecas C++ de terceros en módulos MQL5. Para ello hemos empezado a incluir el compilador externo LLVM en el editor.

¿Hay alguna esperanza de desarrollar la idea de soportarC/C++.lib o .a static library linking into mql program project?

 
Roman:

¿Hay alguna esperanza de desarrollar la idea, en el apoyo aC / C ++.lib o .a bibliotecas estáticas que enlazan en el proyecto de programa mql?

No. Siempre se puede utilizar cualquier DLL con control de derechos de acceso explícito.

 
Entiendo las pérdidas de conexión con MT5, otros gastos generales.... Pero, 8 segundos contra 3 horas..... ???????? CÓMO ???????????

Dame un ejemplo de tu código Python que se ralentiza, no queda claro por las palabras qué hace y cómo obtienes los datos. ¿Y por qué escribe constantemente en el archivo? ¿No se puede hacer al final?

 
Renat Fatkhullin:

No. Es ingenuo pensar que nos suicidaríamos y elegiríamos un lenguaje cien veces más lento que el nuestro para matar a un probador.

Es mucho más rentable para nosotros desarrollar nuestra idea de recompilar bibliotecas C++ de terceros en módulos MQL5. Para ello, hemos empezado a incluir el compilador externo LLVM en el editor.

¿Y si, hipotéticamente, tomas el soporte de ONNX, los modelos importados serán más lentos que el propio MQL?

 

He notado una rareza en la salida:

[89, '2020.01.16', 3, 15, 3, 16, Timedelta('0 days 01:16:53.966000')]
[90, '2020.01.16', 3, 16, 3, 17, Timedelta('0 days 00:25:39.266000')]
[91, '2020.01.16', 3, 17, 4, 12, Timedelta('0 days 19:07:12.757000')]
[92, '2020.01.17', 4, 12, 4, 13, Timedelta('0 days 00:36:14')]
[93, '2020.01.17', 4, 13, 4, 15, Timedelta('0 days 02:21:01.630000')]
[94, '2020.01.17', 4, 15, 4, 17, Timedelta('0 days 02:12:28.692000')]
[95, '2020.01.17', 4, 17, 0, 11, Timedelta('0 days 17:30:16.404000')]

¿Es == 00:36:14.000000 ?