Regeln für Optimierung

 

Hallo zusammen,


Ich habe den onTester für mich entdeckt und liebe ihn jetzt schon.

In der Optimierung, liebt es mein Computer den Breakeven kleiner als den BreakevenSprung zu optimieren. Dies umgehe ich gerade, dass ich alle Tests mit Breakeven<BreakevenSprung das Ergebnis auf 0 setze.

Gibt es eine Möglichkeit, derartige Regeln festzulegen, bevor der Computer sie mühsam berechnet? Dies würde Rechenleistung sparen, wenn wir derartige Backtests vor der Simulation verbieten könnten.


Liebe Grüße,


Jessie

 

? - es ist doch gerade Sinn, etwas besseres zu finden als das bisher erreichte.

Aber:

Kennst Du OnTester(). Damit kannst Du Deine eigene Optimierungswerte berechnen, die dann zurückgegeben werden: für die Ergebnistabellen und für die genetische Optimierung.

Dokumentation zu MQL5: Ereignisbehandlung / OnTester
Dokumentation zu MQL5: Ereignisbehandlung / OnTester
  • www.mql5.com
OnTester - Ereignisbehandlung - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 

Hi,

Ja, ich nutze doch wie oben geschrieben den onTester und filtere alles aus, was mir nicht gefällt.

Es würde mir nur besser gefallen, wenn ich für die Optimierung Regeln vergeben könnte, damit ich nicht erst mühsam Ergebnisse durchrechne, um diese dann auszufiltern. Da macht es doch mehr Sinn, dass der Optimierer erst garnicht gewisse Kombinationen durchprobiert, weil man sie ihm verbieten kann.

In meinem Beispiel, will ich, das der Breakeven immer kleiner ist als der BreakevenSprung ist. Mit welchen Zahlen er das macht ist mir egal, solange er die Regel einhält.


Liebe Grüße,


Jessie

 
Wallace2.0 #:

Hi,

Ja, ich nutze doch wie oben geschrieben den onTester und filtere alles aus, was mir nicht gefällt.

Es würde mir nur besser gefallen, wenn ich für die Optimierung Regeln vergeben könnte, damit ich nicht erst mühsam Ergebnisse durchrechne, um diese dann auszufiltern. Da macht es doch mehr Sinn, dass der Optimierer erst garnicht gewisse Kombinationen durchprobiert, weil man sie ihm verbieten kann.

In meinem Beispiel, will ich, das der Breakeven immer kleiner ist als der BreakevenSprung ist. Mit welchen Zahlen er das macht ist mir egal, solange er die Regel einhält.


Liebe Grüße,


Jessie

Man kann in OnInti() programmieren, dass bei bestimmten bestimmte Parameterkombinationen (Stichwort #input) OnInit() mit INIT_PARAMETERS_INCORRECT beendet, dann wird das nicht durchgerechnet - allerdings der Zähler trotzdem um Eins erhöht.

Dokumentation zu MQL5: Ereignisbehandlung / OnInit
Dokumentation zu MQL5: Ereignisbehandlung / OnInit
  • www.mql5.com
OnInit - Ereignisbehandlung - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 

Ok, das probiere ich aus. Mit Beenden und trotzdem gezählt, kann ich leben, Hauptsache, man hat sich die Rechenleistung gespart.


Liebe Grüße,


Jessie

 

Hi,


Diese Woche habe ich wieder Zeit zum Programmieren.

Ich habe das gerade mit dem INIT_PARAMETERS_INCORRECT ausprobiert und bekomme den Fehler, 'return' - 'void' function returns a value. Habe das auch mit INIT_SUCCEEDED probiert, aber gleicher Fehler.

Welche Kleinigkeit mach ich hier falsch?


 
Wallace2.0 #:

Hi,


Diese Woche habe ich wieder Zeit zum Programmieren.

Ich habe das gerade mit dem INIT_PARAMETERS_INCORRECT ausprobiert und bekomme den Fehler, 'return' - 'void' function returns a value. Habe das auch mit INIT_SUCCEEDED probiert, aber gleicher Fehler.

Welche Kleinigkeit mach ich hier falsch?


Der Fehler ist kein Fehler - in Deinem Fall!

Sie macht darauf aufmerksam, dass der EA stoppt und das willst Du ja gerade, aber die meisten eben nicht.

 

Hallo Carl,

Der EA startet aber auch nicht.

 
Wallace2.0 #:

Hallo Carl,

Der EA startet aber auch nicht.

Das wolltest Du doch gerade! ER soll nicht starten, wenn die Optimierung eine unpassendes Setup der Eingabeparameter bestimmt hat.
 

Das Problem scheint zu sein, dass der EA mit dem Fehler nicht kompeliert wird.

Wenn man die Zeilen Löscht und neu kompeliert, geht er wieder.


 

Schreib:

int OnInit() {...