Ich habe viel experimentiert und bin zu ähnlichen Schlussfolgerungen gekommen. Ich weiß nicht, warum ich so lange gebraucht habe, um diesen Artikel und die Diskussion zu finden.
Ich begann mit einem Problem, bei dem meine Break-Out- und Trend-Riding-Strategien dazu neigten, sich auf einige wenige superprofitable Trades zu beschränken. So viel Gewinn aus diesen wenigen, dass der Optimierer nur "kümmerte" sich um diese wenigen Trades und verwendet breite Haltestellen und weit weg Take-Profit und dafür sorgen, dass sein Signal gefangen und gemolken diese wenigen Trades auf das Maximum. dies trat auch auf 20 Jahre Proben mit 100's von Trades. Selbst bei der Optimierung mit einem Verhältnis von dd zu Gewinn, ging es immer noch nach den Läufen mit diesen Trades um jeden Preis, weil die Läufe 90% seines Gewinns waren. Ich wollte dieses Verhalten irgendwie einschränken, ohne der Breakout/Trend Ride-Strat den Kopf abzuschlagen. Ich fand heraus, dass die Optimierung für relative dd Prozent (NICHT dd Verhältnis zum Gewinn, nur dd relativen Prozentsatz und nichts anderes) gibt gute Ergebnisse nach vorne, solange minimale Trades und minimale Gewinn-Faktor (etwa 1,3) erfüllt sind.
//............... sinputdouble mint; //Mindestanzahl an Gewerben zu Optimierungszwecken. Wird eine Strafe für Läufe mit weniger Gewerben verhängen. sinputdouble minpf; //minimaler Gewinnfaktor für Optimierungszwecke. Erzwingt eine Strafe für Läufe mit weniger pf.//...............doubleOnTester()
{
double dd=TesterStatistics(STAT_BALANCE_DDREL_PERCENT);//Gleichheit statt Gleichgewicht hat sich auch in Zukunft bewährt double pf=TesterStatistics(STAT_PROFIT_FACTOR);
int tt=TesterStatistics(STAT_TRADES);
double custom=(100-dd);
if (mint>t) custom=custom*(tt/mint); // verhängt eine Strafe, wenn die Mindestumsätze nicht erreicht werden if (minpf>minpf) custom=custom*((pf-1)/(minpf-1)) // Diese Linie führt auch dazu, dass verlorene Läufe negativ sind und eine geringere Strafe für pf auferlegt wird. return(custom);
}
Es scheint falsch zu sein, den Gewinn nicht mit einzubeziehen, aber durch das Mindestkriterium "pf" erscheinen die meisten recht profitablen Läufe an der Spitze. Das Herausschneiden von dd aus profitablen Läufen erhöht normalerweise die Gewinne. In jedem Fall kann ich durch die Auswahl der profitableren Trades und die sorgfältige manuelle Nachbearbeitung (wie z. B. am Ende dieses ausgezeichneten Artikels https://www.mql5.com/de/articles/156) dem Optimierer einen Großteil der anfänglichen Arbeit überlassen und gleichzeitig eine umfangreiche Kurvenanpassung vermeiden. Ich habe experimentiert und hatte gemischte Ergebnisse mit Code wie dem folgenden. (Bei den Experimenten sollte man auch das Risiko und die Startbilanz ändern, sobald man anfängt, zusätzliche Gewichte zu einer prozentualen Bewertung hinzuzufügen)
//.............sinputdouble pfw //Gewicht des Gewinnfaktors //.............double custom=(100-dd)+(pf-1)*pfw;
//...........
This article explains the step by step process of identifying and resolving code errors as well as the steps in testing and optimizing of the Expert Advisor input parameters. You will learn how to use Strategy Tester of MetaTrader 5 client terminal to find the best symbol and set of input parameters for your Expert Advisor.
Kann mir jemand sagen, ob dieser Artikel auch für MT4 gilt? Es scheint, dass es bereits viele Eigenschaften von MT5 übernommen hat.
Im Allgemeinen ist meine Aufgabe, nur die Werte der LR-Korrelation und des LR-Standardfehlers im MT4-Tester zu erhalten, wie sie im MT5-Tester leicht zu sehen sind.
Ich möchte nur diese Werte in der Funktion deinit() am Ende des Testlaufs auslesen und sie zusammen mit dem Wert des optimierten Parameters in eine Datei schreiben.
Vielleicht hat jemand so etwas schon gemacht und kann mir das fertige Ergebnis (die notwendige Funktion zur Berechnung der LR-Korrelation und der LR-Standardfehlerwerte) mitteilen, damit ich das Rad nicht neu erfinden muss?
Kann mir jemand sagen, ob dieser Artikel auch für MT4 gilt? Es scheint, dass es bereits viele Eigenschaften von MT5 übernommen hat.
Im Allgemeinen ist meine Aufgabe, nur die Werte der LR-Korrelation und des LR-Standardfehlers im MT4-Tester zu erhalten, wie sie im MT5-Tester leicht zu sehen sind.
Ich möchte nur diese Werte in der Funktion deinit() am Ende des Testlaufs auslesen und sie zusammen mit dem Wert des optimierten Parameters in eine Datei schreiben.
Vielleicht hat jemand so etwas schon gemacht und kann mir das fertige Ergebnis (die notwendige Funktion zur Berechnung der LR-Korrelation und der LR-Standardfehlerwerte) mitteilen, damit ich das Rad nicht neu erfinden muss?
Ein Beispiel für die Berechnung der LR-Korrelation und des LR-Standardfehlers für Trades in der Historie ist in AlgLib (MQL4\Scripts\Alglib\UseAlglib.mq4) verfügbar.
Automated-Trading: Ein Beispiel für die Berechnung der LR-Korrelation und des LR-Standardfehlers für Trades in der Historie ist in AlgLib (MQL4\Scripts\Alglib\UseAlglib.mq4) verfügbar.
Das heißt, wenn man im MT4-Tester läuft und den Code aus UseAlglib.mq4, der in der heruntergeladenen Zip-Datei enthalten ist, durch einen Aufruf der Funktion deinit() verwendet.
bleibt der Saldo gleich 0. Und dann wird der Fehler"Trading operations with zero balance" ausgegeben.
Ich musste nur den erforderlichen Wert des Anfangssaldos im MT4-Tester in den Code selbst einfügen und dann wurde alles perfekt gezählt.
Vielleicht können die Entwickler diesen Punkt in zukünftigen Versionen der Bibliothek berücksichtigen.
Nun, hier bin ich wieder, der einsame Wolf in diesem Universum :-)
Ich habe versucht, die Geradheit Custom Criteria, um die Steigung der berechneten geraden Linie in die Gleichung zu bekommen. So wie es ist, kann man eine sehr hohe Bewertung für einen sehr schwachen Gewinn erhalten. Einfach den Endgewinn hinzufügen
In einem Versuch, die tatsächliche Steigung in die Gleichung einzufügen, habe ich den Code wie unten gezeigt geändert.
Es ist keine perfekte Lösung, aber es ist näher an dem, was ich sehen möchte. Die Verwendung des Ergebnisses zusammen mit dem Saldo oder dem Gewinn funktioniert für mich mit diesem Code gut
Ich weiß, dass es schon so lange her ist, dass Sie dies gepostet haben, aber für den Fall, dass Sie immer noch damit spielen oder jemand anderes nach der gleichen Implementierung der Geradheitskriterien sucht.
An underrated feature of Metatrader’s Backtester is its ability to define a custom fitness function for the genetic optimization process. Meaning that you no longer are limited to rather simple metrics like final balance or profit factor but can evaluate the quality of each test run with your own individual calculations. To give a quick...
Das zugehörige Tutorial hat zu viele Informationen, wie z. B. speziell über die Programmierung eines EA, die in anderen Tutorial ist, und nicht anwendbar auf durchschnittliche punter, die, wird ihre EA kaufen und hat minimale Programmierung Fähigkeit.
Ich finde, dass standardmäßig die einzige nützliche Kriterien für MT5 in genetischen Algo ist die "Balance max", dann haben zu wiederholen, dass ein paar Mal, und Fisch durch Ergebnisse til finden niedrige Drawdown, wie für den Einsatz auf mehrere Paare.
Welche Kriterien ich brauche: - Max Balance mit <20 Drawdown, MaxBalance mit <10 Drawdown
An alle "einsamen Wölfe" da draußen: Sie sind auf dem richtigen Weg, strenge Testkriterien zu schaffen und diese zu automatisieren. Es gibt natürlich verschiedene Möglichkeiten, dieselbe Herausforderung zu betrachten, und wenn man die Kommentare hier liest, scheint der Konsens darin zu bestehen, einen Kompromiss zwischen Gleichgewicht, Drawdown, RRR und einem gewissen Maß an Gewinn (Gewinnfaktor, Kelly-Kriterium usw.) zu finden. Ich bin auf diesen Artikel gestoßen, weil ich das Gleiche tun wollte und wollte, dass der Strategy Tester das für mich erledigt; ich bin froh, dass ich nicht allein bin :)
Ich habe viel experimentiert und bin zu ähnlichen Schlussfolgerungen gekommen. Ich weiß nicht, warum ich so lange gebraucht habe, um diesen Artikel und die Diskussion zu finden.
Ich begann mit einem Problem, bei dem meine Break-Out- und Trend-Riding-Strategien dazu neigten, sich auf einige wenige superprofitable Trades zu beschränken. So viel Gewinn aus diesen wenigen, dass der Optimierer nur "kümmerte" sich um diese wenigen Trades und verwendet breite Haltestellen und weit weg Take-Profit und dafür sorgen, dass sein Signal gefangen und gemolken diese wenigen Trades auf das Maximum. dies trat auch auf 20 Jahre Proben mit 100's von Trades. Selbst bei der Optimierung mit einem Verhältnis von dd zu Gewinn, ging es immer noch nach den Läufen mit diesen Trades um jeden Preis, weil die Läufe 90% seines Gewinns waren. Ich wollte dieses Verhalten irgendwie einschränken, ohne der Breakout/Trend Ride-Strat den Kopf abzuschlagen. Ich fand heraus, dass die Optimierung für relative dd Prozent (NICHT dd Verhältnis zum Gewinn, nur dd relativen Prozentsatz und nichts anderes) gibt gute Ergebnisse nach vorne, solange minimale Trades und minimale Gewinn-Faktor (etwa 1,3) erfüllt sind.
Es scheint falsch zu sein, den Gewinn nicht mit einzubeziehen, aber durch das Mindestkriterium "pf" erscheinen die meisten recht profitablen Läufe an der Spitze. Das Herausschneiden von dd aus profitablen Läufen erhöht normalerweise die Gewinne. In jedem Fall kann ich durch die Auswahl der profitableren Trades und die sorgfältige manuelle Nachbearbeitung (wie z. B. am Ende dieses ausgezeichneten Artikels https://www.mql5.com/de/articles/156) dem Optimierer einen Großteil der anfänglichen Arbeit überlassen und gleichzeitig eine umfangreiche Kurvenanpassung vermeiden. Ich habe experimentiert und hatte gemischte Ergebnisse mit Code wie dem folgenden. (Bei den Experimenten sollte man auch das Risiko und die Startbilanz ändern, sobald man anfängt, zusätzliche Gewichte zu einer prozentualen Bewertung hinzuzufügen)
Kann mir jemand sagen, ob dieser Artikel auch für MT4 gilt? Es scheint, dass es bereits viele Eigenschaften von MT5 übernommen hat.
Im Allgemeinen ist meine Aufgabe, nur die Werte der LR-Korrelation und des LR-Standardfehlers im MT4-Tester zu erhalten, wie sie im MT5-Tester leicht zu sehen sind.
Ich möchte nur diese Werte in der Funktion deinit() am Ende des Testlaufs auslesen und sie zusammen mit dem Wert des optimierten Parameters in eine Datei schreiben.
Vielleicht hat jemand so etwas schon gemacht und kann mir das fertige Ergebnis (die notwendige Funktion zur Berechnung der LR-Korrelation und der LR-Standardfehlerwerte) mitteilen, damit ich das Rad nicht neu erfinden muss?
Kann mir jemand sagen, ob dieser Artikel auch für MT4 gilt? Es scheint, dass es bereits viele Eigenschaften von MT5 übernommen hat.
Im Allgemeinen ist meine Aufgabe, nur die Werte der LR-Korrelation und des LR-Standardfehlers im MT4-Tester zu erhalten, wie sie im MT5-Tester leicht zu sehen sind.
Ich möchte nur diese Werte in der Funktion deinit() am Ende des Testlaufs auslesen und sie zusammen mit dem Wert des optimierten Parameters in eine Datei schreiben.
Vielleicht hat jemand so etwas schon gemacht und kann mir das fertige Ergebnis (die notwendige Funktion zur Berechnung der LR-Korrelation und der LR-Standardfehlerwerte) mitteilen, damit ich das Rad nicht neu erfinden muss?
Ein Beispiel für die Berechnung der LR-Korrelation und des LR-Standardfehlers für Trades in der Historie ist in AlgLib (MQL4\Scripts\Alglib\UseAlglib.mq4) verfügbar.
Ich danke Ihnen! Ich werde es mir ansehen.
Ich habe es verstanden. Die Korrelation scheint berechnet zu werden.
Das Einzige, worüber ich nachdenken musste, ist die Tatsache, dass dieser Punkt im MT4 Build 670-Tester nicht funktioniert:
Es gibt einfach keine Orders mit Typ 6 im Tester.
Das heißt, wenn man im MT4-Tester läuft und den Code aus UseAlglib.mq4, der in der heruntergeladenen Zip-Datei enthalten ist, durch einen Aufruf der Funktion deinit() verwendet.
bleibt der Saldo gleich 0. Und dann wird der Fehler"Trading operations with zero balance" ausgegeben.
Ich musste nur den erforderlichen Wert des Anfangssaldos im MT4-Tester in den Code selbst einfügen und dann wurde alles perfekt gezählt.
Vielleicht können die Entwickler diesen Punkt in zukünftigen Versionen der Bibliothek berücksichtigen.
Ich habe Kelly Criterion (Strategie) getestet, indem ich den folgenden Code verwendet habe:
Ich bin mir nicht sicher, ob der Metatrader Strategy Tester 0 (Null) Profit Trades als Profit Trades berechnet. Jemand?
Nun, hier bin ich wieder, der einsame Wolf in diesem Universum :-)
Ich habe versucht, die Geradheit Custom Criteria, um die Steigung der berechneten geraden Linie in die Gleichung zu bekommen. So wie es ist, kann man eine sehr hohe Bewertung für einen sehr schwachen Gewinn erhalten. Einfach den Endgewinn hinzufügen
In einem Versuch, die tatsächliche Steigung in die Gleichung einzufügen, habe ich den Code wie unten gezeigt geändert.
Es ist keine perfekte Lösung, aber es ist näher an dem, was ich sehen möchte. Die Verwendung des Ergebnisses zusammen mit dem Saldo oder dem Gewinn funktioniert für mich mit diesem Code gut
Ich weiß, dass es schon so lange her ist, dass Sie dies gepostet haben, aber für den Fall, dass Sie immer noch damit spielen oder jemand anderes nach der gleichen Implementierung der Geradheitskriterien sucht.
Ich habe eine funktionierende öffentliche Lösung hier gefunden https://community.darwinex.com/t/equity-curve-straigthness-optimization-with-metatrader/3976
Das zugehörige Tutorial hat zu viele Informationen, wie z. B. speziell über die Programmierung eines EA, die in anderen Tutorial ist, und nicht anwendbar auf durchschnittliche punter, die, wird ihre EA kaufen und hat minimale Programmierung Fähigkeit.
Ich finde, dass standardmäßig die einzige nützliche Kriterien für MT5 in genetischen Algo ist die "Balance max", dann haben zu wiederholen, dass ein paar Mal, und Fisch durch Ergebnisse til finden niedrige Drawdown, wie für den Einsatz auf mehrere Paare.
Welche Kriterien ich brauche: - Max Balance mit <20 Drawdown, MaxBalance mit <10 Drawdown
An alle "einsamen Wölfe" da draußen: Sie sind auf dem richtigen Weg, strenge Testkriterien zu schaffen und diese zu automatisieren. Es gibt natürlich verschiedene Möglichkeiten, dieselbe Herausforderung zu betrachten, und wenn man die Kommentare hier liest, scheint der Konsens darin zu bestehen, einen Kompromiss zwischen Gleichgewicht, Drawdown, RRR und einem gewissen Maß an Gewinn (Gewinnfaktor, Kelly-Kriterium usw.) zu finden.
Ich bin auf diesen Artikel gestoßen, weil ich das Gleiche tun wollte und wollte, dass der Strategy Tester das für mich erledigt; ich bin froh, dass ich nicht allein bin :)