Was in aller Welt geht hier vor? - Seite 4

 
SeriousRacoon:
Und versuchen Sie, die aktuelle Logik zu deaktivieren und durch einen normalen Assistenten zu ersetzen. Sie werden sofort sehen, wo die Katze einen Fehler gemacht hat, in der Logik oder in der Ausführung.

guter Rat.... Wir sollten nicht zu dem Punkt kommen, an dem wir denken, dass die Optimierung nichts anderes ist als separate Instanzen einzelner Läufe, zumindest ist es das, was die Benutzer möchten und was die Entwickler wollten.

Das bedeutet, dass unabhängig davon, wie komplex der Algorithmus des Expert Advisors ist, das Ergebnis eines einzelnen Laufs identisch sein sollte mit dem, das in einer Gruppe von Läufen während der Optimierung erzielt wird.

Ich würde (wie Renat rät) nach Abschluss jedes Optimierungslaufs den Verlauf der Abschlüsse in eine Datei mit Parametern ausdrucken (um die Suche in einem Stapel erstellter Dateien zu erleichtern) und dasselbe für einen einzelnen Lauf tun; auf diese Weise wird es möglich sein, den Unterschied zwischen den Ergebnissen nach der Optimierung und einem einzelnen Lauf festzustellen. Es scheint der einzige Weg zu sein, die Wahrheit zu erfahren.

Ich bin jedoch sehr neugierig darauf, welche Nuance zu unterschiedlichen Ergebnissen in der Optimierung und im Einzellauf führen kann, denn die Logik legt nahe, dass dies im Prinzip unmöglich ist, vorausgesetzt, ein Einzellauf ist identisch mit dem im Optimierungs-Batchlauf.

 
Алексей Тарабанов:

"Fast alle Daten werden in einer Schleife initialisiert".

Leute, ihr könnt nicht in einer Schleife initialisieren. Sie müssen in der Schleife lesen.

Ich habe Ihnen gezeigt, in welchen Fällen dies nicht nur möglich, sondern notwendig ist und dass es keinen anderen Weg gibt.

 

@Andrey Dik, ich frage mich gerade, wie man den Druck mit der/den Datei(en) verbindet. Es scheint, dass die Datei nach und nach geschrieben werden sollte. Und was genau soll dort geschrieben werden? Die Preise sind nicht informativ. Sie müssen einige Informationen aufschreiben, die Ihnen helfen, den Grund für die Diskrepanz zu verstehen. Welche Art von Informationen? Wo können wir sie finden? Ich habe noch keine Ahnung.

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

@Andrey Dik, ich frage mich gerade, wie man den Druck mit der/den Datei(en) verbindet. Es scheint, dass die Datei nach und nach geschrieben werden sollte. Und was genau soll dort geschrieben werden? Die Preise sind nicht informativ. Sie müssen einige Informationen aufschreiben, die Ihnen helfen, den Grund für die Diskrepanz zu verstehen. Welche Art von Informationen? Wo können wir sie finden? Ich habe noch keine Ideen.

Erstellen Sie in der Funktion OnTester() eine Datei namens InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +.... und die Historie aller Trades (nicht Positionen) darin aufzeichnen, werden alle für die Analyse notwendigen Informationen, Zeit, Preis, etc. aufgezeichnet. Sie können in diese Datei auch etwas anderes schreiben, das für einen bestimmten EA sehr interessant ist und das für die Suche nach Inkonsistenzen zwischen dem Optimierer und einem einzelnen Lauf nützlich sein kann.

Vergessen Sie nicht, MQLInfoInteger (MQL_OPTIMIZATION)); zu überprüfen, um Postfix im Dateinamen bei einem einzigen Lauf hinzuzufügen, um nicht die gleiche Datei nach der Optimierung zu überschreiben.


SZY. Wenn Sie zwei Dateien mit unterschiedlichen Inhalten erhalten, wird es nicht genug für die Entwickler sein, sondern wird nur geben Ihnen eine Richtung, wo weiter zu graben, müssen Sie ein reproduzierbares Problem Code zu bringen. hoffentlich ist das Problem in der EA-Code.

 
Andrey Dik:

In der Funktion OnTester() erstellen Sie eine Datei mit dem Namen InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +.... und die Historie aller Trades (nicht Positionen) darin aufzeichnen, werden alle für die Analyse notwendigen Informationen, Zeit, Preis usw. aufgezeichnet. Sie können in diese Datei auch etwas anderes schreiben, das für einen bestimmten EA sehr interessant ist und das für die Suche nach Inkonsistenzen zwischen dem Optimierer und einem einzelnen Lauf nützlich sein kann.

Vergessen Sie nicht, MQLInfoInteger (MQL_OPTIMIZATION)); zu überprüfen, um Postfix im Dateinamen bei einem einzigen Lauf hinzuzufügen, um nicht die gleiche Datei nach der Optimierung zu überschreiben.


SZY. Wenn Sie zwei Dateien mit unterschiedlichen Inhalten erhalten, wird es nicht genug für die Entwickler sein, sondern wird nur geben Ihnen eine Richtung, wo weiter zu graben, müssen Sie die reproduzierbare Problem-Code zu bringen. hoffentlich ist das Problem in der EA-Code.

Ich danke Ihnen. Wird gemacht.

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

Ich danke Ihnen. Das werde ich auch tun.


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

Ich danke Ihnen. Wird gemacht.

Überprüfen Sie die Initialisierung von global deklarierten Variablen.

Wenn die Initialisierung nicht in OnInit(), sondern in der Deklaration erfolgt und wenn ihre Werte im Code geändert werden.

 
Andrey F. Zelinsky:

Überprüfen Sie die Initialisierung von global deklarierten Variablen.

Wenn die Initialisierung nicht in OnInit(), sondern in der Deklaration erfolgt und wenn ihre Werte im Code geändert werden.

ob die Variablen initialisiert sind oder nicht, aber die Ergebnisse sollten in beiden Testmodi (Optimierung und Einzellauf) übereinstimmen

 
Andrey Dik:

guter Rat.... Wir sollten nicht zu dem Punkt kommen, an dem wir denken, dass die Optimierung nichts anderes ist als separate Instanzen einzelner Läufe, zumindest ist es das, was die Benutzer möchten und was die Entwickler wollten.

Das bedeutet, dass unabhängig davon, wie komplex der Algorithmus des Expert Advisors ist, das Ergebnis eines einzelnen Laufs identisch sein sollte mit dem, das in einer Gruppe von Läufen während der Optimierung erzielt wird.

Ich würde (wie Renat rät) nach Beendigung jedes Optimierungslaufs den Verlauf der Abschlüsse in eine Datei mit Parametern ausdrucken (um die Suche im Haufen der erstellten Dateien zu erleichtern) und dasselbe während eines einzelnen Laufs tun, so dass es möglich wäre, den Unterschied zwischen den Ergebnissen nach der Optimierung und einem einzelnen Lauf festzustellen.

Ich bin jedoch sehr neugierig darauf, welche Nuance zu unterschiedlichen Ergebnissen in der Optimierung und im Einzellauf führen kann, denn die Logik legt nahe, dass dies im Prinzip unmöglich ist, vorausgesetzt, ein Einzellauf ist identisch mit dem im Optimierungs-Batchlauf.

Im Allgemeinen bin ich mit Ihnen einverstanden. Wenn owl wirklich keine Verzweigungen abhängig von der Umgebung macht (ob es im Optimierer oder im Tester läuft), dann ist das einzige, was wir annehmen können, dass im Optimierungsmodus einige API-Aufrufe im Tester zu sehr auf Geschwindigkeit optimiert sind, entschuldigen Sie die Tautologie. Vielleicht hängt es von den Flags in den verwendeten Funktionen ab. Ein detailliertes Protokoll der Transaktionen und der Ausführungsergebnisse wäre hilfreich, ja.

Persönlich ist mir das noch nicht begegnet.

 
Andrey Dik:

ob die Variablen initialisiert sind oder nicht, aber die Ergebnisse sollten in beiden Testmodi (Optimierung und Einzellauf) übereinstimmen

eine Variable global deklarieren und bei der Deklaration initialisieren, zum Beispiel int kk=0;

dann in OnTick() unprint und ändern Sie den Wert, zum Beispiel Print("kk=",kk); ++kk;

dann TF oder Parameter ändern -- und das Ergebnis sehen.

Grund der Beschwerde: