Erreurs, bugs, questions - page 2442

 
Igor Makanu:

D'après ce que je comprends du problème, vous ne pouvez pas changer le hachage de l'exécutable.

Vous ne comprenez pas le problème.

L'EA doit générer un nom de fichier différent si son EX5 a changé.

 
fxsaber:

Vous ne comprenez pas la tâche.

L'EA doit former un nom de fichier différent, si son EX5 a changé.

Je propose de changer la bibliothèque, si vous voulez 2 bibliothèques, connectez-les et utilisez un nom différent

ce genre de manipulation :

lien_bibliothèque.mq5 :

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

library lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
dans MQL, la bibliothèque est essentiellement peu différente d'un fichier exécutable - il n'y a pas de restrictions, elle peut aussi s'écrire dans un fichier et ... tout peut comme un programme MQL
 
Igor Makanu:

Je suggère de changer de bibliothèque. Si vous voulez deux bibliothèques, branchez-les et utilisez un nom différent.

C'est ainsi qu'il faut manipuler :

expert link_library.mq5 :

lib.mq5 bibliothèque :

Dans MQL, la bibliothèque n'est pas très différente d'un fichier exécutable - il n'y a pas de restrictions, elle peut aussi s'écrire dans le fichier et ... tout peut comme un programme MQL

Je ne comprends pas pourquoi la tâche n'est pas claire : si l'EA a changé - changez le nom du fichier.

 
fxsaber:

Je ne comprends pas pourquoi la tâche n'est pas claire : si l'EA a changé - changez le nom du fichier.

Je ne comprends pas du tout le problème.
Incluez comme ressource le fichier source de l'Expert Advisor lui-même, le fichier .mq5, et prenez-en le hachage.

 
Les commentaires non liés à ce sujet ont été déplacés vers "Toutes les questions des débutants sur MQL4, aide et discussion sur les algorithmes et les codes".
 
Sergey Dzyublik:

Je ne comprends pas du tout le problème.
Incluez comme ressource la source du fichier .mq5 de l'Expert Advisor lui-même et prenez le hachage de ce fichier.

Il n'y aura donc aucun accès (octets pour calculer le hachage) à l'EX5 activé.

 
fxsaber:

Il n'y aura donc aucun accès (octets pour calculer le hachage) à l'EX5 activé.

Tout fonctionne :

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


Quel est le rapport avec ex5 si vous parlez de modifications de code qui sont mieux suivies par .mq5 ?
C'est comme si vous ne compreniez pas ce dont vous avez besoin vous-même.
 
Sergey Dzyublik:

Qu'est-ce que ex5 a à voir avec cela si vous parlez de modifications de code qui sont mieux suivies par .mq5 ?

On dirait que vous ne comprenez pas ce que vous voulez en fin de compte.

Je l'ai écrit, comment puis-je le développer ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

fxsaber, 2019.04.23 06:15

J'ai cet EA.

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


Quand je fais une passe, ça écrit un fichier avec le même nom. C'est exact.


Puis je recompile en écrivant le nombre 456 au lieu de 123.

Après cela, chaque passe écrira le fichier correspondant et le même fichier, mais avec un nom différent.


C'est le genre de fonctionnalité que nous devons implémenter d'une manière ou d'une autre. Par exemple, si EX5 est modifié, les noms de fichiers qu'il crée changeront également.


SZY L'utilisation de la macro __DATETIME__ ne fonctionne pas.


J'ai une mq5 qui crée un fichier avec Nom1. Je change un certain nombre de chiffres dans mq5. Name2 devrait être généré. Je change quelque chose d'autre dans le code - Name3. Et ainsi de suite.

 
fxsaber:

Eh bien, je l'ai écrit, comment puis-je être plus précis ?


J'ai mq5, qui crée un fichier avec Nom1. Je change un certain nombre de chiffres dans mq5. Devrait être généré Nom2. Je change quelque chose d'autre dans le code - Name3. Et ainsi de suite.

Connectez le code source au format .mq5 comme ressource et lisez le hachage du contenu du code source.
Si vous modifiez le code source, la compilation prendra automatiquement le nouveau code source comme ressource et calculera un nouveau hachage.
Qu'est-ce qui est si difficile ?

 
Sergey Dzyublik:

Incluez le code source au format .mq5 comme ressource et lisez le hachage du contenu du code source.
Si vous modifiez le code source, la compilation extrait automatiquement le nouveau code source comme ressource et un nouveau hachage est calculé.
Qu'est-ce qui est si difficile ?

Si un commentaire est ajouté à la source, cela ne change pas la logique de l'EA. C'est-à-dire qu'il s'agit d'un seul et même EA.

Vous et Igor proposez les solutions les plus simples. La chose la plus élémentaire est de se donner un hachage. Un chemin vers lui-même est donné. Le hash est bloqué pour une raison quelconque.