Strategietester (Build 2361): Rückgang der Equity im Diagramm deutlich höher als in der Ergebnistabelle

Einloggen oder registrieren, um einen Kommentar zu schreiben
signalfollower
390
signalfollower  

Hat jemand eine plausible Erklärung dafür und was ist denn nun richtig? Im Zweifelsfall natürlich immer das schlechtere Ergebnis, was in diesem Fall dann leider das Diagramm wäre. Somit könnte man sich dann aber auf die Ergebnisse in der Tabelle gar nicht mehr verlassen!


Christian
3160
Christian  
signalfollower:

Hat jemand eine plausible Erklärung dafür und was ist denn nun richtig? Im Zweifelsfall natürlich immer das schlechtere Ergebnis, was in diesem Fall dann leider das Diagramm wäre. Somit könnte man sich dann aber auf die Ergebnisse in der Tabelle gar nicht mehr verlassen!


Die Frage hatte ich mir auch schon oft gestellt.

Ein Erklärungsversuch.


Um Rechenzeit und Speicher zu sparen wird die Equity Kurve NICHT für jeden Tick gespeichert.

Sondern nur zum Beispiel 1 x pro Kerze. Auf dem Bild müssten die Kurve ja eigentlich viel genauer sein.

Ist sie aber nicht, ergo weniger Speicherpunkte?

Da aber das absolute Tief gespeichert wird, entsteht dieser "blöde" Fehler.


Christian
3160
Christian  

Tipp:


Du könntest ja ein array für den DD in OnTick() mitfüllen und ALLE Werte aufzeichnen.

Dann sieht man was wirklich richtig ist.

Analysieren mit Excel / Matlab whatever ...

signalfollower
390
signalfollower  
Christian:

Um Rechenzeit und Speicher zu sparen wird die Equity Kurve NICHT für jeden Tick gespeichert.

Sondern nur zum Beispiel 1 x pro Kerze.

Hm, das müsste dann aber bedeuten, dass der Trade zur Zeit der Speicherung des Koordinatenpunktes schon gar nicht mehr offen war.

Und noch etwas: Wenn laut Tabelle ein Rückgang der Equity um 1814,62 prozentual 29,68 % entspricht, müsste der Kontostand zu diesem Zeitpunkt 6113,95 gewesen sein, was selbst bei Annahme großzügiger Rundungsfehler nicht annähernd hinkommt. Da stimmt einfach hinten und vorne gar nichts! Mir ist das alles ein Rätsel.


Christian:

Du könntest ja ein array für den DD in OnTick() mitfüllen und ALLE Werte aufzeichnen.

Das ist ja nicht mein EA und programmieren kann ich leider nicht.

Christian
3160
Christian  
signalfollower:

Hm, das müsste dann aber bedeuten, dass der Trade zur Zeit der Speicherung des Koordinatenpunktes schon gar nicht mehr offen war.

Und noch etwas: Wenn laut Tabelle ein Rückgang der Equity um 1814,62 prozentual 29,68 % entspricht, müsste der Kontostand zu diesem Zeitpunkt 6113,95 gewesen sein, was selbst bei Annahme großzügiger Rundungsfehler nicht annähernd hinkommt. Da stimmt einfach hinten und vorne gar nichts! Mir ist das alles ein Rätsel.


Ich kann dir 20 Beispiele nennen, wo es vorn und hinten nicht passt. Habe mich damit angefreundet :-)


Ja die Zahlen machen keinen Sinn. 

Da wir nicht wissen wie MQ die Equity speichert müsste man es selber mal tun und dann damit forschen.

Auf gehts ...

double tickwerte[][] ; 

Und jedes mal pro Tick füllen.

1. Dimension für Art des Wertes( Alles was CAccount hergibt :-) )


2. Dimension für den aktuellen Tick ( Dein Beispiel = ca 800000 insgesammt.)


Da würde es klar werden was falsch ist.

Carl Schreiber
Moderator
9799
Carl Schreiber  

Um  herauszufinden, wie MQ DD berechnet, bietet es eine ganze Reihe von DD, die man am Ende (oder während) einer OIptimierung oder eines Tests sich ausdrucken oder anzeigen lassen kann.

Sie stehen alle hier: https://www.mql5.com/en/docs/constants/environment_state/statistics

Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Testing Statistics
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Testing Statistics
  • www.mql5.com
Maximum balance drawdown as a percentage. In the process of trading, a balance may have numerous drawdowns, for each of which the relative drawdown value in percents is calculated. The greatest value is returned Maximum equity...
Christian
3160
Christian  
Carl Schreiber:

Um  herauszufinden, wie MQ DD berechnet, bietet es eine ganze Reihe von DD, die man am Ende (oder während) einer OIptimierung oder eines Tests sich ausdrucken oder anzeigen lassen kann.

Sie stehen alle hier: https://www.mql5.com/en/docs/constants/environment_state/statistics

Jooah ..das wären dann die richtigen Werte .

Danke Carl  war mir nicht bewusst.

signalfollower
390
signalfollower  
Carl Schreiber:

Um  herauszufinden, wie MQ DD berechnet, bietet es eine ganze Reihe von DD, die man am Ende (oder während) einer OIptimierung oder eines Tests sich ausdrucken oder anzeigen lassen kann.

Sie stehen alle hier: https://www.mql5.com/en/docs/constants/environment_state/statistics

Das erklärt die Differenzen dennoch nicht. Denn in der Ergebnistabelle (Backtest Tab) wird "STAT_EQUITY_DD" als "Rückgang Equity maximal" ausgewiesen, also der höchste Verlust in Geld (1814,62 €). In Prozent waren das 29,68 %.

"STAT_EQUITY_DDREL_PERCENT" wird als "Rückgang Equity relativ" ausgewiesen, also der höchste prozentuale Equity-Verlust, was in diesem Beispiel zufällig  ebenfalls 29,68 % und 1814,62 € sind.

Weshalb keiner der Kontostände und der Equity-Graph nicht passen, ist also trotzdem nicht erklärbar!
Christian
3160
Christian  
signalfollower:

Das erklärt die Differenzen dennoch nicht. Denn in der Ergebnistabelle (Backtest Tab) wird "STAT_EQUITY_DD" als "Rückgang Equity maximal" ausgewiesen, also der höchste Verlust in Geld (1814,62 €). In Prozent waren das 29,68 %.

"STAT_EQUITY_DDREL_PERCENT" wird als "Rückgang Equity relativ" ausgewiesen, also der höchste prozentuale Equity-Verlust, was in diesem Beispiel zufällig  ebenfalls 29,68 % und 1814,62 € sind.

Weshalb keiner der Kontostände und der Equity-Graph nicht passen, ist also trotzdem nicht erklärbar!

Ich bastel grad was ....dauert aber etwas .

Nehme einen Beispiel EA und werte die Werte mit Matlab aus.

Ich nutze aber erstmal nur diese Werte.

void OnTick()
  {
  
  
   TesterValues[TickCounter][0] = m_account.Balance();
   TesterValues[TickCounter][1] = m_account.Credit();
   TesterValues[TickCounter][2] = m_account.Profit();
   TesterValues[TickCounter][3] = m_account.Equity();
   TesterValues[TickCounter][4] = m_account.Margin();
   TesterValues[TickCounter][5] = m_account.FreeMargin();
   TesterValues[TickCounter][6] = m_account.MarginLevel();
   TesterValues[TickCounter][7] = m_account.MarginCall();
   TesterValues[TickCounter][8] = m_account.MarginStopOut();
   
   TickCounter++;
  
  
  
  
  

Aus CAccount

Carl Schreiber
Moderator
9799
Carl Schreiber  
signalfollower:

Das erklärt die Differenzen dennoch nicht. Denn in der Ergebnistabelle (Backtest Tab) wird "STAT_EQUITY_DD" als "Rückgang Equity maximal" ausgewiesen, also der höchste Verlust in Geld (1814,62 €). In Prozent waren das 29,68 %.

"STAT_EQUITY_DDREL_PERCENT" wird als "Rückgang Equity relativ" ausgewiesen, also der höchste prozentuale Equity-Verlust, was in diesem Beispiel zufällig  ebenfalls 29,68 % und 1814,62 € sind.

Weshalb keiner der Kontostände und der Equity-Graph nicht passen, ist also trotzdem nicht erklärbar!

Ein Prozentsatz hat immer einen Basiswert.Hier gäbe es Einlage aktueller Saldo größter Saldo, aktuelles Equity, größtes Equity

Du hast es wohl nicht getestet und scheinst zu erwarten, dass andere für Dich Dein Problem lösen :(

Christian
3160
Christian  

Erstes Ergebnis:

Blau Balance

Rot Equity


Mann sieht schon was da an Daten fehlt.

12
Einloggen oder registrieren, um einen Kommentar zu schreiben