Was in aller Welt geht hier vor? - Seite 6

 
Сергей Таболин:

Wenn Sie mehrere Optimierungen mit denselben Parametern des EA durchführen, stimmen die Ergebnisse der verschiedenen Optimierungen überein? Wenn ja, dann liegt das Problem im Unterschied zwischen dem Optimierer und dem einzelnen Durchlauf. Wenn nicht, dann liegt das Problem definitiv im Code des EA.

 

Lassen Sie mich erklären - die trendige Schrift hier im :

if (condition) {

} else if (!condition) {

}

die angeblich die Lesbarkeit und das Verständnis des Codes verbessert, ist in Wirklichkeit ein Übel

und außerdem muss man sehr, sehr sorgfältig mit doppelten

 
Andrey Dik:

Glauben Sie, dass eine globale EA-Variable ihren Wert aus früheren Optimierungsläufen beibehält und auf die nächsten Läufe übertragen wird?

Ja, das stimmt in etwa. Das habe ich versucht zu tun.

Nur war es nicht einfach eine globale Variable, sondern ein statisches Klassenmitglied oder eine Terminalvariable oder etwas anderes.


Außerdem können ein einmaliger Test unmittelbar nach dem Start des Terminals und ein wiederholter Test mit demselben Agenten unterschiedlich ausfallen. Aus demselben Grund.

Alles in allem müssen Sie alles initialisieren und peinlich genau im Auge behalten.


ps: Nein, das erinnert mich an etwas. Ich hatte kein Problem mit der Initialisierung, es war einer der Builds, der die Statik fehlerhaft initialisierte. Das Problem wurde umgehend behoben.

 
Andrey Dik:

Jede Übertragung von EA-Variableninhalten von einem Lauf zum anderen sollte als Fehler des Testers betrachtet werden, auch wenn es sich um globale Variablen des Terminals handelt.

Wenn es mehrere Kopien eines EA gibt, die in Echtzeit auf Charts laufen, der Benutzer einen Magier oder andere Möglichkeiten der Identifizierung verwendet und der Optimierungsprozess mehrere und voneinander unabhängige Läufe eines EA mit demselben Magier impliziert, dann ist dies nicht nur aus ideologischer Sicht der Optimierung falsch, sondern es eröffnet die Möglichkeit, die Optimierung zu beeinflussen und die Marktprodukte durch Irreführung des Käufers zu missbrauchen.

Ich warte auf den Bericht von TC über die nicht beschnittenen Geschäfte, bin gespannt.

Nicht für einen heiligen Dieb eingerichtet.

Der Punkt, wie immer, ist einfach - der EA ist nicht entladen, um schneller zu optimieren. EX-Dateien können sehr groß sein.

 

Erst heute hatte ich Zeit, das Problem in den Griff zu bekommen. Ich beschloss, klein anzufangen. Eine Sache nach der anderen. Einschließlich der Überprüfung geöffneter Dateien. Der Code lautet wie folgt:

      int      h     = FileOpen(filename, FILE_BIN|FILE_READ|FILE_COMMON);
      if(h == INVALID_HANDLE)
      {
         Print("Ошибка открытия файла обученной сети по индикатору >>> ",name);
         writeErrorFile(program_name,program_version,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name);
         writeOptTestFile(file_Opt_Tst,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name+"\n");
         FileClose(h);
         return(TRADESIGNAL_NO);
      }

Ich habe die Optimierung und dann einen einzelnen Test durchgeführt. Als Ergebnis habe ich zwei Dateien erhalten:

1_100_100_300_300_.opt
1_100_100_300_300_.tst

Ich habe diese beiden Dateien mit dem Programm WinMerge geöffnet. Und das habe ich dort gesehen

Es gibt ein Problem beim Öffnen von Dateien im Optimierer. Beachten Sie, dass es keinen solchen Fehler im Tester gibt!

 
Сергей Таболин:

Es gibt ein Problem beim Öffnen von Dateien durch den Optimierer. Beachten Sie, dass dieser Fehler im Prüfprogramm nicht auftaucht!

Mehrere Kerne öffnen die Datei gleichzeitig. Eine wird geöffnet, der Rest wird vermasselt.
Benötigt Code mit Wartefunktion oder zumindest FILE_SHARE_READ Flag

 

Wenn Sie:

  • auf dieselbe Datei von einem EA im gemeinsamen Bereich zugreifen
  • Zugriffsfehler erhalten
  • nicht gegen gemeinsamen Zugriff durch mehrere parallele Prozesse schützen, nicht versuchen, mit einem Timeout zu wiederholen
Dann erhalten Sie natürlich den Unterschied zwischen Optimierer und Single Pass. Dies ist ein logischer Fehler.
 
Andrey Khatimlianskii:

Mehrere Kerne öffnen die Datei gleichzeitig. Einer öffnet, die anderen werden verarscht.
Ich brauche Code mit Wartezeit oder zumindest FILE_SHARE_READ Flag

Nun, ich habe den Code nicht speziell für den Optimierer geschrieben. Es wurde davon ausgegangen, dass der Optimierer solche Nuancen bereits kennt. Ich werde versuchen, eine Flagge hinzuzufügen, das macht es nicht schlimmer. )))

Renat Fatkhullin:

Wenn Sie:

  • von einem Expert Advisor auf dieselbe Datei in der Comon-Zone zugreifen
  • Zugriffsfehler erhalten
  • nicht vor gemeinsamem Zugriff durch mehrere parallele Prozesse schützen, nicht versuchen, mit einem Timeout zu wiederholen.
Dann erhalten Sie natürlich den Unterschied zwischen Optimierer und Single Pass. Dies ist ein logischer Fehler.

  1. Ich füge die Commit-Zone nur ein, um das Auffinden von Dateien zu erleichtern.
  2. ....
  3. Ich habe keinen gemeinsamen Zugang. Auf diese Dateien wird nur von einem EA zugegriffen.
 

Da es immer noch keinen Code gibt, die Testbedingungen in keiner Weise beschrieben sind und Sie eindeutig falsche Aussagen machen, sollten Sie sich selbst darum kümmern.

Wenn Sie nicht einmal Dateien öffnen können, bedeutet dies, dass es viele Probleme im Expert Advisor gibt.

Sie haben sogar die Namen dieser Dateien versteckt.

 
Renat Fatkhullin:

Da es immer noch keinen Code gibt, die Testbedingungen in keiner Weise beschrieben sind und Sie eindeutig falsche Aussagen machen, sollten Sie sich selbst darum kümmern.

Wenn Sie nicht einmal Dateien öffnen können, bedeutet dies, dass es viele Probleme im Expert Advisor gibt.

Sie haben diese Dateinamen sogar versteckt.

Es gibt keinen Code, weil das Hinzufügen des Ballons das Problem wirklich gelöst hat. Jetzt sind die Optimierungsergebnisse und die einzelnen Läufe vollständig konsistent.

Es ist nur so, dass ich vorher kaum Dateien in EAs verwendet habe (zumindest war alles Schreiben/Lesen während der Optimierung/Tests deaktiviert), aber dachte, dass der Optimierer das Problem des Zugriffs von einem einzelnen EA gelöst hat.