Errores, fallos, preguntas - página 2442

 
fxsaber:

¿Qué cambiará esto?

Por lo que entiendo el problema, el hash del ejecutable no se puede cambiar porque se utiliza para la optimización

Por eso sugiero

int Array[] = {123};

ponerlo en una biblioteca de enlace y recompilarlo después de una ejecución de optimización exitosa - no lo comprobé, pero parece que las bibliotecas mql se enlazan en tiempo de ejecución (no en recursos)

 
Igor Makanu:

Por lo que entiendo el problema, no se puede cambiar el hash del ejecutable

No entiendes el problema.

El EA debe generar un nombre de archivo diferente si su EX5 ha cambiado.

 
fxsaber:

No entiendes la tarea.

El EA debe formar un nombre de archivo diferente, si su EX5 ha cambiado.

Propongo cambiar la biblioteca, si quieres 2 bibliotecas, conéctalas y utiliza un nombre diferente

este tipo de manipulación:

link_library.mq5 :

#import "lib.ex5"
int value_array();
#import
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Array = ",value_array());
   return(INIT_SUCCEEDED);
  }

biblioteca lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
en MQL la biblioteca es esencialmente poco diferente de un archivo ejecutable - no hay restricciones, también puede escribirse en un archivo y ... todo puede como un MQL - programa
 
Igor Makanu:

Sugiero cambiar la biblioteca, si quieres dos bibliotecas, conéctalas y utiliza un nombre diferente

Así es como se manipula:

experto link_library.mq5 :

Biblioteca lib.mq5 :

En MQL, la biblioteca no es esencialmente muy diferente de un archivo ejecutable - no hay restricciones, también puede escribirse en el archivo y ... todo puede como un MQL - programa

No entiendo por qué la tarea no es clara: Si el EA ha cambiado - cambiar el nombre del archivo.

 
fxsaber:

No entiendo por qué la tarea no es clara: Si el EA ha cambiado - cambiar el nombre del archivo.

No entiendo el problema en absoluto.
Incluya como recurso el archivo fuente del propio archivo .mq5 del Asesor Experto y tome el hash del mismo.

 
Los comentarios no relacionados con este tema han sido trasladados a "Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos".
 
Sergey Dzyublik:

No entiendo el problema en absoluto.
Incluya como recurso la fuente del propio archivo .mq5 del Asesor Experto y tome el hash del mismo.

Así que no habrá acceso (bytes para calcular el hash) al EX5 habilitado.

 
fxsaber:

Así que no habrá acceso (bytes para calcular el hash) al EX5 habilitado.

Todo funciona:

#resource "\\Experts\\Advisors\\ExpertMACD.ex5" as uchar ex5_data[];


¿Qué tiene que ver el ex5 si se trata de cambios en el código que se rastrean mejor con el .mq5?
Es como si no entendieras lo que en última instancia necesitas tú mismo.
 
Sergey Dzyublik:

¿Qué tiene que ver el ex5 si se trata de cambios en el código que se rastrean mejor con el .mq5?

Parece que no entiendes lo que quieres al final.

Bueno, yo lo escribí, ¿cómo puedo entrar en más detalles?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

fxsaber, 2019.04.23 06:15

Tengo este EA.

void OnDeinit( const int )
{
  int Array[] = {123};
  
  FileSave((string)MQLInfoInteger(MQL_PROGRAM_HASH), Array);
}


Cuando hago un pase, escribe un archivo con el mismo nombre. Esto es correcto.


Entonces recompilo escribiendo el número 456 en lugar de 123.

Después, cada pase escribirá el correspondiente y el mismo archivo, pero con un nombre diferente.


Ese es el tipo de funcionalidad que tenemos que implementar de alguna manera. Es decir, si EX5 se modifica, los nombres de los archivos que crea también cambiarán.


SZY El uso de la macro __DATETIME__ no funciona.


Tengo un mq5 que crea un archivo con Nombre1. Cambio algún número en mq5. Se debe generar el nombre2. Cambio algo más en el código - Nombre3. Y así sucesivamente.

 
fxsaber:

Bueno, lo he escrito, ¿cómo puedo ser más específico?


Tengo mq5, que crea un archivo con Nombre1. Cambio algún número en mq5. Debería generarse Nombre2. Cambio algo más en el código - Nombre3. Y así sucesivamente.

Conecta el código fuente en formato .mq5 como recurso y lee el hash del contenido del código fuente.
Si cambias el código fuente, la compilación sacará automáticamente el nuevo código fuente como recurso y calculará un nuevo hash.
¿Qué es tan difícil?