Fehler, Irrtümer, Fragen - Seite 2442

 
fxsaber:

Was wird sich dadurch ändern?

Soweit ich das Problem verstehe, kann der Hash der ausführbaren Datei nicht geändert werden, da er zur Optimierung verwendet wird

Deshalb schlage ich vor

int Array[] = {123};

in eine Link-Bibliothek packen und nach einem erfolgreichen Optimierungslauf neu kompilieren - habe es nicht überprüft, aber es scheint, dass mql-Bibliotheken zur Laufzeit gelinkt werden (nicht Ressourcen)

 
Igor Makanu:

Soweit ich das Problem verstehe, können Sie den Hash der ausführbaren Datei nicht ändern

Sie verstehen das Problem nicht.

Der EA sollte einen anderen Dateinamen erzeugen, wenn sich sein EX5 geändert hat.

 
fxsaber:

Sie verstehen die Aufgabe nicht.

Der EA sollte einen anderen Dateinamen bilden, wenn sich seine EX5 geändert hat.

Ich schlage vor, die Bibliothek zu ändern, wenn Sie 2 Bibliotheken wollen, verbinden Sie sie und verwenden Sie einen anderen Namen

diese Art der Manipulation:

link_library.mq5 :

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

Bibliothek lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
in MQL unterscheidet sich die Bibliothek im Wesentlichen kaum von einer ausführbaren Datei - es gibt keine Einschränkungen, sie kann sich auch in eine Datei schreiben und ... alles kann als MQL - Programm
 
Igor Makanu:

Ich schlage vor, die Bibliothek zu ändern, wenn Sie zwei Bibliotheken wollen, schließen Sie sie an und verwenden Sie einen anderen Namen

So kann man manipulieren:

Experte link_library.mq5 :

lib.mq5 Bibliothek :

In MQL ist die Bibliothek im Grunde nicht viel anders als eine ausführbare Datei - es gibt keine Einschränkungen, sie kann sich auch selbst in die Datei schreiben und ... alles kann als MQL - Programm

Ich verstehe nicht, warum die Aufgabe nicht klar ist: Wenn sich der EA geändert hat, ändern Sie den Namen der Datei.

 
fxsaber:

Ich verstehe nicht, warum die Aufgabe nicht klar ist: Wenn sich der EA geändert hat, ändern Sie den Dateinamen.

Ich verstehe das Problem überhaupt nicht.
Fügen Sie als Ressource die Quelldatei der Expert Advisor selbst .mq5-Datei ein und entnehmen Sie ihr einen Hash.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von Neulingen zu MQL4, Hilfe und Diskussion über Algorithmen und Codes" verschoben.
 
Sergey Dzyublik:

Ich verstehe das Problem überhaupt nicht.
Fügen Sie als Ressource die Quelle der .mq5-Datei des Expert Advisors selbst ein und entnehmen Sie ihr den Hash.

Es gibt also keinen Zugriff (Bytes zur Hash-Berechnung) auf die aktivierte EX5.

 
fxsaber:

Es gibt also keinen Zugriff (Bytes zur Berechnung des Hashwertes) auf die aktivierte EX5.

Alles funktioniert:

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


Was hat ex5 damit zu tun, wenn es um Codeänderungen geht, die besser mit .mq5 verfolgt werden?
Es ist, als ob Sie nicht verstehen, was Sie eigentlich selbst brauchen.
 
Sergey Dzyublik:

Was hat ex5 damit zu tun, wenn es um Codeänderungen geht, die besser mit .mq5 verfolgt werden?

Es scheint, als wüssten Sie nicht, was Sie eigentlich wollen.

Nun, ich habe es geschrieben, wie kann ich mehr ins Detail gehen?

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Wanzen, Wanzen, Fragen

fxsaber, 2019.04.23 06:15

Ich habe diesen EA.

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


Wenn ich einen Durchlauf mache, wird eine Datei mit demselben Namen geschrieben. Das ist richtig.


Dann kompiliere ich neu, indem ich die Zahl 456 anstelle von 123 schreibe.

Danach wird bei jedem Durchlauf die entsprechende und dieselbe Datei geschrieben, allerdings mit einem anderen Namen.


Das ist die Art von Funktionalität, die wir irgendwie implementieren müssen. D.h. wenn EX5 geändert wird, ändern sich auch die Dateinamen, die es erzeugt.


SZY Die Verwendung des Makros __DATETIME__ würde nicht funktionieren.


Ich habe ein mq5, das eine Datei mit Name1 erstellt. Ich ändere einige Zahlen in mq5. Name2 sollte generiert werden. Ich ändere etwas anderes im Code - Name3. Und so weiter.

 
fxsaber:

Nun, ich habe es geschrieben, wie kann ich noch genauer sein?


Ich habe mq5, das eine Datei mit Name1 erstellt. Ich ändere einige Zahlen in mq5. Sollte erzeugt werden Name2. Ich ändere etwas anderes im Code - Name3. Und so weiter.

Verbinden Sie den Quellcode im .mq5-Format als Ressource und lesen Sie den Hash aus dem Inhalt des Quellcodes.
Wenn Sie den Quellcode ändern, wird bei der Kompilierung automatisch der neue Quellcode als Ressource herangezogen und ein neuer Hash berechnet.
Was ist so schwierig?