Strategietester Optimierung 3D Graph Frage

 

Gestern fiel mir auf, dass wenn man mit Rechtsklick in das Diagrammfenster der Optimierung klickt, ein kleines Dropdownmenu erscheint, wo man "3D Graph" auswählen kann und dann verschiedene Kombinationen von variablen Werten auf die X- und Y-Achsen legen kann um zu sehen, wie die Zusammenhänge sind. Das ist eine super Idee, nur die Umsetzung ist etwas dürftig, man kann als z-Achse nämlich gar nichts auswählen und bekommt irgendwelche "Ergebnisse", was überhaupt nicht aussagekräftig ist. Könnte man doch für die Z-Achse Gewinn eintragen, dann bräuchte man nicht mit Excel herummachen...

Aber wie immer kann ich nicht ausschließen, dass ich etwas übersehen habe. Oder vielleicht gibt es das was ich möchte ja schon in anderer Form.

Jetzt habe ich mir mal dreidimensionale Darstellungen angesehen, verstehe jedoch nicht, wie ich die Daten der Optimierung dafür verwenden kann.

Außerdem habe ich mich einmal mit der Möglichkeit beschäftigt, ein Programm zu kaufen, mit dem man aus drei Spalten X, Y, und Z eine Matrix für die dreidimensionale Darstellung in Excel erstellen kann.

Bin schon sehr gespannt und freue mich auf Eure Beiträge.

Grüße

 
es gab bereits merhrere Vorschläge den ersten Ansatz einer 3D-Darstzellung zu erweitern, aber bisher ...
 

Du wählst doch vor dem Start der Optimierung, welche Werte in der Tabelle erscheinen sollen. Genau diese findest Du dann auch auf der z-Achse wieder. Schau Dir mal die custom-Spalte an und schreib Dir eine OnTester() Funktion dafür.


 
lippmaje:

Du wählst doch vor dem Start der Optimierung, welche Werte in der Tabelle erscheinen sollen. Genau diese findest Du dann auch auf der z-Achse wieder. Schau Dir mal die custom-Spalte an und schreib Dir eine OnTester() Funktion dafür.


Danke schonmal für Eure Antworten. Mir ist gerade erst aufgefallen, dass "Balance" der Endkontostand ist, d.h. das Geld was man in dem Zeitraum verdient hätte plus den Initialstand.

Ich dachte bisher, das heißt irgendwas mit ausgewogen. Okay gut...

Wie funktioniert das mit der OnTester() Funktion, wird die Funktion einfach in den EA reingschrieben oder per #include eingebunden und dann ist sie im Tester unter Custom max verfügbar?

Ach warte, hier steht was: https://www.mql5.com/de/articles/286

Gutes Neues Jahr!

Erstellen benutzerdefinierter Optimierungskriterien für Expert Advisors
Erstellen benutzerdefinierter Optimierungskriterien für Expert Advisors
  • www.mql5.com
Das MetaTrader 5 Client Terminal bietet eine Vielzahl von Optimierungsmöglichkeiten für die Parameter von Expert Advisors. Zusätzlich zu den im Strategietester enthaltenen Optimierungskriterien erhalten Entwickler die Möglichkeit, ihre eigenen Kriterien zu erstellen. Dies führt zu einer fast unbegrenzten Menge an Möglichkeiten zum Testen und Optimieren von Expert Advisors. Dieser Beitrag beschreibt praktische Möglichkeiten zum Erstellen solcher Kriterien, sowohl komplexer als auch einfacher.
 
pennyhunter:

Danke schonmal für Eure Antworten. Mir ist gerade erst aufgefallen, dass "Balance" der Endkontostand ist, d.h. das Geld was man in dem Zeitraum verdient hätte plus den Initialstand.

Ich dachte bisher, das heißt irgendwas mit ausgewogen. Okay gut...

Wie funktioniert das mit der OnTester() Funktion, wird die Funktion einfach in den EA reingschrieben oder per #include eingebunden und dann ist sie im Tester unter Custom max verfügbar?

Ach warte, hier steht was: https://www.mql5.com/de/articles/286

Gutes Neues Jahr!

die gehört in den EA, Du kannst natürlich auch was schreiben, in ein Include packen und das dann über den EA aufrufen, dann kannst du es immer verwenden


https://www.mql5.com/de/docs/event_handlers/ontester

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
 

Einfach in den EA irgendwo reinsetzen. Nimm die z.B.:

double OnTester()
  {
   double profit =      TesterStatistics(STAT_PROFIT);          // Gesamtgewinn
//   return profit;
   double payoff =      TesterStatistics(STAT_EXPECTED_PAYOFF); // Gewinn pro Trade
   int trades    = (int)TesterStatistics(STAT_TRADES);          // Anzahl Trades
   double expected_slippage = 10 * _Point;                      // erwartete Slippage im Livebetrieb
   double expected_profit   = trades * (payoff-exp_slippage);   // erw Gewinn einschl Slippage
   return expected_profit;
  }

Hiermit kannst Du nach dem erwarteten Gewinn im Livebetrieb optimieren. Dazu setzt Du bei 'expected_slippage' einen Erfahrungswert aus den bisherigen Live-Trades ein.

Das ergibt ein viel realistischeres Bild, da die vielen Trades mit eher kleinen positiven Gewinnen rausfallen bzw sogar negativ gewertet werden.

Sieht in der 3D-Darstellung auch teilweise recht eindrucksvoll aus. Du könntest auf der x/y-Achse z.B. nach SL und TP optimieren.

Oben das 'return profit' einkommentieren, wenn Du nach dem Reingewinn optimieren willst. Oder Payoff, oder... die Möglichkeiten sind beliebig.