Was in aller Welt geht hier vor?

 

Hier geht es wieder einmal um den Tester/Optimierer...

Es wurden Diskrepanzen zwischen den Ergebnissen der Optimierung und des Einzeltests festgestellt. Terminal neu gestartet, Einstellungen geändert (um sicherzugehen). Begonnene Optimierung.

Habe einen einzigen Test durchgeführt...

Wie kann das sein? Woher kommt dieser Unsinn?

 

Haben Sie sichergestellt, dass die Logik Ihres Codes in beiden Fällen dieselbe ist?

Nicht im Sinne von "ich habe den Code nicht geändert", sondern um zu gewährleisten, dass das technische und logische Verhalten des Roboters unverändert bleibt.

Diese Art von Behauptung erfordert so viele technische Details wie möglich, einschließlich Logik und Wiederholungsbedingungen. Und Ihre eigenen Versuche, mehr zu verstehen und mehr Informationen zu sammeln. Das Programm gehört Ihnen.

Der Aufschrei "Ich habe hier etwas geschrieben, ich habe es nicht verstanden, ich habe die Details nicht beschrieben, ich möchte nur meine Empörung zum Ausdruck bringen, weil ich denke, dass mein Programm, von dem ich nicht weiß, wie es funktioniert, von jemand anderem irgendwie falsch gehandhabt wurde" ist sinnlos.

 
Ich habe den Optimierer benutzt, als ich noch jung und unerfahren war. Jetzt ist es schon einige Jahre her, dass ich mit der Optimierung begonnen habe, nur ein Tester ist genug, um zu verstehen, und der Optimierer gibt uns Illusionen.
 
Aleksey Semenov:
Als ich noch jung und unerfahren war, habe ich den Optimierer eingesetzt, und jetzt habe ich ihn seit mehreren Jahren nicht mehr eingesetzt, weil der Tester einfach verstehen muss, und der Optimierer uns nur mit Illusionen füttert.

Der Optimierer hat eine klare Aufgabe: Er soll das Optionsfeld prüfen und eine Reihe von Parametern für die vom Händler definierte Funktion angeben.

Dies ist eine technische Aufgabe, und sie wurde und wird großartig erledigt.

Die Qualität und Robustheit von Robotern muss überwacht werden.

 
Renat Fatkhullin:

Der Optimierer hat eine klare Aufgabe: Er soll das Optionsfeld prüfen und eine Reihe von Parametern für die vom Händler definierte Funktion angeben.

Es handelt sich um eine technische Aufgabe, die er gut gemeistert hat und die er sehr gut macht.

Die Qualität und Robustheit von Robotern muss überwacht werden.

Ich habe alle Caches gelöscht. Wiederholen Sie den Optimierungstest. Das Ergebnis ist das gleiche. Klären Sie Unstimmigkeiten.

Natürlich bin ich kein Expert Advisor, aber ich verstehe einfach nicht, warum der Optimierer einen Wert von 100 hat, wenn er die Parameter 3, 5 und 20 verwendet und der Test mit denselben Parametern -20 anzeigt: ....

Die EA-Logik in Optimierer und Tester ist die gleiche. Die Hardware ist die gleiche. Was und wie sollte ich tun, um einen solchen Unterschied in den Ergebnissen zu erzielen?

Renat Fatkhullin:

Und Sie haben garantiert, dass sich die Logik Ihres Codes in beiden Fällen nicht ändern wird?

Nicht im Sinne von "ich habe den Code nicht geändert", sondern im Sinne der Gewährleistung eines unveränderten Verhaltens auf der technischen und logischen Ebene des Roboters.

Diese Art von Behauptung erfordert so viele technische Details wie möglich, einschließlich Logik und Wiederholungsbedingungen. Und Ihre eigenen Versuche, mehr zu verstehen und mehr Informationen zu sammeln. Das Programm gehört Ihnen.

Der Aufschrei "Ich habe hier etwas geschrieben, ich habe es nicht nachgeprüft, ich habe die Details nicht beschrieben, ich möchte nur meine Empörung zum Ausdruck bringen, weil ich glaube, dass mein Programm, von dem ich nicht weiß, wie es funktioniert, von jemand anderem irgendwie falsch gehandhabt wurde" ist sinnlos.

Ratschläge, wie man diese "Variabilität" zwischen Optimierung und Test erkennen kann?

Ich werde die Protokolle morgen veröffentlichen. Ich werde alles reinigen und optimieren und testen. Ich erinnere mich an Ihre Lektion )))) Ich werde sehr aufmerksam sein.


In der Zwischenzeit wünsche ich allen einen großen Sieg!!!

Ich werde feiern gehen ))))

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

Alle Caches wurden vollständig entfernt. Wiederholung des Optimierungstests. Gleiches Ergebnis. Klären Sie Unstimmigkeiten.

Natürlich bin ich kein Experte, aber ich verstehe einfach nicht, warum der Optimierer ein Ergebnis von 100 liefert, während der Test mit denselben Parametern -20.... anzeigt.

Die EA-Logik in Optimierer und Tester ist die gleiche. Die Hardware ist die gleiche. Was muss ich tun, um einen solchen Unterschied in den Ergebnissen zu erzielen?

Bitte beraten Sie mich, wie man diese "Variabilität" zwischen dem Optimierer und dem Tester erkennen kann?

Ich werde die Protokolle morgen veröffentlichen. Ich werde alles aufräumen und die Optimierung und den Test durchführen. Ich erinnere mich an Ihre Lektion )))) Ich werde sehr aufmerksam sein.


In der Zwischenzeit wünsche ich allen einen großen Sieg!!!

Ich werde feiern gehen ))))

In der englischen Sektion gibt es einen kleinen Thread, in dem ein Benutzer die gleiche Frage stellt.
Seine Optimierung und sein Backtest sind für alle seine EAs gleich (alles ist in Ordnung), aber ein EA ist derselbe wie Ihrer.
Er gab das Ergebnis des Backtests - Sie können es sich ansehen (ich gab ihm eine Idee auf einen Blick - warum ist der Unterschied).

Er hat den Code nicht angegeben, aber es ist klar, dass der Grund in der Logik (im Code) seines EAs liegt (weil er sagte, dass er solche Probleme mit all seinen anderen EAs nicht hatte - siehe seinen letzten Beitrag in diesem Thread): https://www.mql5.com/en/forum/338047
 
Es reicht, wenn man vergisst, etwas im Code zu initialisieren, und schon gibt es einen Unterschied. Prüfen Sie den Code.
 
Andrey Barinov:
Es kann sein, dass Sie einfach vergessen haben, etwas in Ihrem Code zu initialisieren, und schon gibt es einen Unterschied. Prüfen Sie den Code.

Ich habe vor langer Zeit Testvarianten durchgeführt, da war wirklich Müll in den Variablen, hat der Entwickler das am Anfang mit eigenen Kräften geschafft? Wenn mitten im Code Müll ist, sollte es doch immer derselbe sein, oder?

Ich bin kein professioneller Programmierer, es ist eine Frage, ich kenne das Prinzip der Low-Level-Programmierung nicht

 
Sergey Golubev:
In der englischen Sektion gibt es einen kleinen Thread, in dem ein Benutzer die gleiche Frage stellt.
Seine Optimierung und Backtest auf alle seine EAs übereinstimmt (alles ist OK) und ein EA ist wie Ihre.
Er gab das Ergebnis des Backtests - Sie können es sich ansehen (ich gab ihm eine Idee auf einen Blick - warum ist der Unterschied).

Er hat den Code nicht angegeben, aber es ist klar, dass der Grund in der Logik (im Code) seines EAs liegt (weil er sagte, dass er solche Probleme mit allen anderen EAs nicht hatte - siehe seinen letzten Beitrag): https://www.mql5.com/en/forum/338047

Alles ist gleich wie bei mir ))))

Andrej Barinow:
Sie brauchen nur zu vergessen, etwas im Code zu initialisieren, und schon gibt es einen Unterschied. Prüfen Sie den Code.

Wie war das? Es ist dort und dort das Gleiche. Wie kann es da einen Unterschied geben? Zumal praktisch alle Daten in einer Schleife initialisiert werden. Und wenn dort etwas nicht initialisiert ist, wird es mit einem Fehler beendet.

Fast235:

Vor langer Zeit habe ich Testvarianten durchgeführt, es gab Müll in den Variablen, hat der Entwickler dies nicht von Anfang an durch seine eigenen Bemühungen verhindert? Schließlich sollte in der Mitte des Codes, wenn es Müll geben kann, immer derselbe sein, oder?

Ich bin kein professioneller Programmierer, es ist nur eine Frage.

Das ist genau mein Punkt. Es muss in beiden Fällen dasselbe sein. Selbst wenn ich irgendwo einen Fehler habe, muss er überall sein. Aber wie sich herausstellt, wird dieser Fehler (meiner) irgendwie auf magische Weise korrigiert. Aber es ist völlig unklar, wo? Entweder im Optimierer oder im Tester....


Für einen Moment weg von der Festtafel )))))))))))

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

Alles ist gleich wie bei mir ))))

Wie war das? Es ist dort und dort das Gleiche. Wie kann es da einen Unterschied geben? Zumal fast alle Daten in einer Schleife initialisiert werden. Wenn dort etwas nicht initialisiert ist, erhalten Sie eine Fehlermeldung.

Das ist es, was ich meine. Es muss in beiden Fällen dasselbe sein. Selbst wenn es an einer Stelle einen Fehler gibt, muss er überall sein. Aber wie sich herausstellt, wird dieser Fehler (meiner) irgendwie auf magische Weise korrigiert. Aber es ist völlig unklar, wo? Entweder im Optimierer oder im Tester....


Für einen Moment weg vom Urlaubstisch )))))))))))

Ich meinte die Variablen, wenn man das Skript ausführt und sie statt 0 die Daten des letzten Laufs oder so etwas enthalten, ich erinnere mich nicht mehr, es ist etwa 5 Jahre her oder so etwas

und in der Tester höchstwahrscheinlich wieder haben Sie irgendwo Nuance, die durch die Art und Weise sagt, dass MQ es verbessert werden muss, ich persönlich nicht wie alles in der Tester, die Schnittstelle zu laufen es nicht mag

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

Alles ist gleich wie bei mir ))))

Wie war das? Es ist dort und dort das Gleiche. Wie kann es da einen Unterschied geben? Zumal praktisch alle Daten in einer Schleife initialisiert werden. Und wenn dort etwas nicht initialisiert ist - Ausgabe mit einem Fehler.

...

Ich habe dem Kameraden dort in der Filiale eine Idee gegeben, warum er in dieser EA einen Unterschied hat.
Schließlich werden bei Beendigung des Backtests (zum Zeitpunkt der Beendigung des Backtests) alle offenen Positionen zwangsweise geschlossen (nur im Tester).
Hätte er nur gehandelt, wären sie in diesem Moment nicht geschlossen worden.

Deshalb, hier für ihn -

  • Oder Vertrauensoptimierung (was in seinem Fall vorzuziehen ist),
  • oder die erzwungene Schließung offener Positionen im besten Fall ignorieren, bevor sie endet, aber dann wird er keine Ziffern erhalten,
  • oder wählen Sie ein Zeitintervall für den Backtest mit denselben Optimierungsparametern, in dem der EA alle Positionen vor dem Ende des Backtests schließt (indem Sie ...), und dann denke ich, dass es dasselbe sein wird.
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...