Fehler, Irrtümer, Fragen - Seite 2672

 
fxsaber:

Es gibt nur die Daten in der opt-Datei. Das Format ist verfügbar.

Ich möchte nicht aus einer Datei lesen, ich habe bereits getan, was ich wollte - eindeutiger Dateiname - MD5-Eingabeparameter, wie diese:

string getMD5(const SSaveStruct &inpstr)
{
   const uchar key[1]= {0};
   uchar data[],md5[];
   StructToCharArray(inpstr,data);
   CryptEncode(CRYPT_HASH_MD5, data, key, md5);
   string result = "";
   for(int i = 0; i < ArraySize(md5); i++)
      result += StringFormat("%02x", md5[i]);
   return(result);
}

void SaveInputParam()
{
   SSaveStruct savestruct;
   FillSaveStruct(savestruct);
   string fname = "EA_TST//" + getMD5(savestruct) + ".bin";
   int handle = FileOpen(fname,FILE_WRITE|FILE_COMMON|FILE_BIN);
   FileWriteStruct(handle,savestruct);
}

double OnTester()
{

   if(!IS_OPTIMIZATION)
   {
      SSaveStruct savestruct;
      FillSaveStruct(savestruct);
      Print("fname = " + getMD5(savestruct));
      return(AccountInfoDouble(ACCOUNT_BALANCE));
   }

#define  BADTEST() { srand((int)TimeCurrent()); return (-(rand() % 1000)); }
   if(EA_STOP || TesterStatistics(STAT_TRADES) < EA_MIN_TRADEES)  BADTEST();
   SaveInputParam();
   return(AccountInfoDouble(ACCOUNT_BALANCE));
#undef  BADTEST
}

Dateien werden geschrieben und in einem einzigen Durchgang sehe ich den Dateinamen: fname = 04a19580d36f0a749143211b57efbebc

Der Code ist ein wenig repetitiv, aber um die Optimierungsstruktur nicht mit Eingabeparametern zu füllen, wenn der Test nicht erfolgreich ist, .... aber ich werde es wahrscheinlich neu schreiben, es ist kein schöner Code, ich werde nicht verstehen, warum ich es so gemacht habe )))
 
Igor Makanu:

Ist es möglich, die Passierscheinnummer vom Prüfer-Agenten zu erhalten?


HH: oder einen eindeutigen Bezeichner von jedem Durchgang während der Prüfung für den Dateinamen benötigen - ich möchte die Einstellungen von Interesse EA während der Prüfung in der Datei zu speichern, sondern brauchen etwas Eindeutiges, um einen Dateinamen mit den Einstellungen zu bilden

Die Passnummer kann 1024 Bit betragen.

Wozu brauchen Sie eine Durchgangsnummer, wenn Sie bereits eine Reihe von Parametern in dieser Zeile haben?

 
Igor Makanu:

Ich möchte nicht aus dem Tester aus der Datei zu lesen, ich denke, ich habe bereits getan, was ich wollte - eindeutige Dateinamen - MD5 der Eingabeparameter, über diese:

Dateien werden geschrieben und in einem einzigen Durchgang sehe ich den Dateinamen: fname = 04a19580d36f0a749143211b57efbebc

Der Code ist ein wenig repetitiv, aber um die Optimierungsstruktur nicht mit Eingabeparametern zu füllen, wenn der Test nicht erfolgreich ist, .... aber ich werde es wahrscheinlich neu schreiben, es ist kein schöner Code, ich werde nicht verstehen, warum ich es so gemacht habe )))

Der MD5-Wert der Eingabeparameter wurde bereits berechnet und befindet sich im Pass-Record in der opt-Datei

 
Slava:

Wozu brauchen Sie eine Passnummer, wenn Sie in dieser Zeile bereits einen Satz von Parametern haben?

Ich möchte erfolgreiche Optimiererdurchläufe sofort auf die EA-Einstellungsdatei zurücksetzen und beim Start von EA automatisch eine .bin-Datei statt .set laden - dies ist für den gleichzeitigen Betrieb mehrerer TCs notwendig

Slawa:

Der MD5-Wert der Eingabeparameter wurde bereits berechnet und befindet sich im Pass-Record in der opt-Datei

Ich habe fast 3 Monate lang für die Geschwindigkeit der Optimierung gekämpft, ich denke, ich habe es erreicht, also eine Gegenfrage:

was schneller ist:

1. von Optimierer zu lesen opt-Datei mit MD5 ?

2. oder mit meinem MD5-Code berechnen


Ich vermute, dass es schneller zu berechnen ist, zumal alle Eingabeparameter innerhalb des Codes als Array von Strukturen verwendet werden (ich optimiere etwa 40 Parameter)

 
Igor Makanu:

Ich möchte erfolgreiche Optimiererdurchläufe sofort auf die EA-Einstellungsdatei zurücksetzen und beim Start von EA automatisch eine .bin-Datei statt .set laden - dies ist für den gleichzeitigen Betrieb mehrerer TCs notwendig

Ich habe fast 3 Monate lang für die Geschwindigkeit der Optimierung gekämpft, ich denke, ich habe es erreicht, also eine Gegenfrage:

was schneller ist:

1. von Optimierer zu lesen opt-Datei mit MD5 ?

2. oder mit meinem MD5-Code berechnen


Ich vermute, dass es schneller zu berechnen ist, zumal alle Eingabeparameter im Code als Array von Strukturen verwendet werden (ich optimiere etwa 40 Parameter).

MD5 ist schneller zu berechnen.

Wenn Sie die opt-Datei in Zukunft nicht mehr verwenden wollen, berechnen Sie MD5

Wenn Sie ihn verwenden wollen, ist es besser, einen bereits berechneten MD5 zu verwenden, da Ihre Berechnung nicht mit unserer übereinstimmen kann (und wahrscheinlich auch nicht wird).

 
Slava:

MD5 ist schneller zu lesen.

Wenn Sie nicht beabsichtigen, die opt-Datei in Zukunft zu verwenden, lesen Sie MD5

Wenn Sie dies tun, ist es besser, einen bereits berechneten MD5-Wert zu verwenden, da Ihre Berechnung möglicherweise (und höchstwahrscheinlich) nicht mit unserer übereinstimmt.

Ich danke Ihnen!

keine opt-Datei zu verwenden

SZS: vor ein paar Wochen habe ich versucht, MathSrand() von einem Tester aus zu initialisierenhttps://www.mql5.com/ru/forum/1111/page2657#comment_15165819

es wäre schön, uchar[] mit MD5 (oder String) in Tester-Agent zu erhalten - es ist eindeutigen Wert, können Sie MathSrand() initialisieren und hier möchte ich eindeutigen Dateinamen, geben Sie mir Ihre MD5 in TesterStatistics()

 
Sergey Dzyublik:
Fehler MT5(build 2323), das gleiche Template-Objekt B<int> kann nach einem Objekt der Klasse B<void*> erstellt werden, aber wenn dies vorher geschieht, tritt ein Kompilierungsfehler auf.
Wahrscheinlich liegt die Ursache im Cache des Vorlagenklassengenerators.

Danke für den Beitrag, korrigiert

 

Wie verwenden Sie Makros?

Horror. Ein Fehler bei der Kompilierung.

Kleine Schrift:

void OnStart()
  {
   #define  m 1000;
   ulong n_yes=3*m;  //Тут всё хорошо
   ulong n_no=(3*m); //Тут ошибка: ';' - unexpected token	test2.mq5	27	18
  }
Build 2361, die derzeit aktuellste Version.
 
Aliaksandr Hryshyn:

Wie verwenden Sie Makros?

so verwenden wir
#define  m 1000;
 
Igor Makanu:
So verwenden wir

Der Unterschied besteht darin, dass die Klammern vorhanden sind.