Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
A diferencia de MT4, MT5 no registra los parámetros de entrada de los Asesores Expertos cuando se lanzan o cambian. Por lo tanto, es imposible determinar a partir del registro lo que se lanzó en la Terminal.
Una función similar puede corregir esta situación.
Aplicación
Resultado
Desafortunadamente, no funciona para los scripts. MT4 emite los parámetros de entrada de los scripts por sí mismo, MT5 no lo hace.
No puedo ejecutar un EA que utilice DLLs con esta librería. En los registros no se permite la carga de DLL. Hay algo que se pueda hacer al respecto?
Funciona.
Algo que me causa aprensión es el principio de utilizar una constante como nombre de una plantilla temporal en una cadena:
contiene un bug potencial relacionado con el multithreading. Si un mismo programa que se ejecuta en diferentes gráficos intenta utilizar la biblioteca, puede producirse una colisión con el archivo de plantilla: se producirá un error de acceso o se lanzarán silenciosamente dos copias idénticas de la plantilla, aunque se hayan utilizado otras diferentes.
Usted debe generar un nombre temporal, preferiblemente de la forma (fue __FILE__, "huelga" no funciona en html aquí) MQL-nombre del programa + marca de tiempo + al azar.
También es deseable eliminar los archivos anteriores de forma automática por tiempo de espera en cualquier próxima llamada, por ejemplo, en 1 día (mediante el análisis de parte de timestamp), para que no ensucian las carpetas.
PS. El caso es aún peor, porque __FILE__ es un archivo fuente y siempre es igual a Expert.mqh - ¡en todos los programas que lo utilizan! Corregida la frase por el nombre.Esto se hizo conscientemente, sopesando todos los pros y los contras.
Tiene sentido borrar inmediatamente después de crear una plantilla, no una vez al día. Sin embargo, es conveniente disponer siempre de la última plantilla guardada para analizar mejor lo que ocurre.
Esto se hizo conscientemente, sopesando los pros y los contras.
Tiene sentido borrar inmediatamente después de crear una plantilla, no una vez al día. Sin embargo, es conveniente disponer siempre de la última plantilla guardada para analizar mejor lo que ocurre.
No puedo citar ningún pros para el método actual. En mi opinión, he sugerido uno más correcto.
Tiene sentido eliminar de una vez si Sync = true (que es el valor por defecto), pero no se implementa de esa manera ahora - el archivo permanece.
No puedo pensar en un solo "pro" para el método actual. IMHO, sugirió una más correcta.
Los pros son la aplicación práctica. Puse en marcha Terminal con Asesores Expertos previamente lanzados, que al principio inmediatamente entraron en sus plantillas. Ellos trabajaron perfectamente. Estoy seguro de que es posible reproducir la colisión teórica. Pero en mi caso está lejos de la práctica. Si usted decide crear una solución universal, compartirlo aquí. Actualizaré la biblia. No estoy listo para hacerlo yo mismo.
Tiene sentido para eliminar a la vez si Sync = true (que es el valor predeterminado), pero no se implementa de esa manera ahora - el archivo permanece.
Sí, no lo borro a propósito.
Para - esta es una aplicación práctica. Puse en marcha Terminal con Asesores Expertos previamente lanzados, que al principio entraron inmediatamente en sus plantillas. Funcionaron perfectamente. Estoy seguro de que es posible reproducir la colisión teórica. Pero en mi caso está lejos de la práctica. Si usted decide crear una solución universal, compartirlo aquí. Actualizaré la biblia. No estoy listo para hacerlo yo mismo.
Sí, no lo borro a propósito.
Sigo sin entender por qué el nombre constante Experto.mqh.tpl es más "práctico" (¿práctico?) que las plantillas con el nombre del programa que las genera? Digamos que hay un programa A.mq5 y B.mq5 que utilizan bibla. Si generaran plantillas con sus propios nombres sería más práctico, en primer lugar, tener la última "huella" de acciones de _cada_ programa, en lugar de sobrescribir una por la otra. En segundo lugar, se podría saber inmediatamente quién es el generador por su nombre (especialmente útil si los programas son extranjeros). Ahora no puedes saberlo por el archivo Expert.mqh.tpl hasta que entras dentro. La solución universal que he dado es tomar el nombre del programa MQL+timestamp+random. Y no veo la necesidad de dejar el archivo en sync=true. Creo que ya está todo probado y depurado hace tiempo. En caso de errores y necesidad de depuración, existe la opción sync=false. Entonces el archivo debe ser dejado. Creo que todo es lógico. Y las ediciones son simples.
Estoy de acuerdo en que en la práctica la colisión puede ocurrir raramente, a menos que alguien vaya a utilizar la biblio en paralelo en varios programas. No lo tengo, pero acabo de echar un vistazo rápido en el código, y me llamó la atención Expert.mqh.tpl en la carpeta Files. Todo es puramente imho.