Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 486

 

Frage: Berücksichtigt der Prüfer die Vertauschung?

Berechnet in Excel (Cent-Konto) und bekam ein seltsames Ergebnis

P.P. Data Type Lot Price MaxHigh MaxEqDrd
1 2014.06.12 09:52 sell 0.1 1.6824 0.16824 1.7179 -3.55
2 2014.06.12 15:18 sell 0.2 1.6831 0.33662 1.7179 -6.96
3 2014.06.12 17:52 sell 0.3 1.6836 0.50508 1.7179 -10.29
4 2014.06.12 19:10 sell 0.5 1.6839 0.84195 1.7179 -17.00
5 2014.06.12 23:00 sell 0.8 1.6845 1.3476 1.7179 -26.72
6 2014.06.16 09:59 sell 1.3 1.6985 2.20805 1.7179 -25.22
7 2014.06.19 09:58 sell 2.1 1.7017 3.57357 1.7179 -34.02
8 2014.06.19 11:21 sell 3.4 1.7018 5.78612 1.7179 -54.74
9 2014.06.19 20:40 sell 5.5 1.7033 9.36815 1.7179 -80.30
10 2014.06.19 22:12 sell 8.9 1.7036 15.16204 1.7179 -127.27
11 2014.06.20 05:10 sell 14.4 1.7047 24.54768 1.7179 -190.08
12 2014.06.20 05:22 sell 23.3 1.7049 39.72417 1.7179 -302.90
13 2014.06.26 12:38 sell 37.7 1.7030 64.2031 1.7179 -561.73
14 2014.06.26 15:18 sell 61.0 1.7033 103.9013 1.7179 -890.60
15 2014.06.27 06:51 sell 98.7 1.7050 168.2835 1.7179 -1273.23
16 2014.06.30 17:37 Verkauf 100.0 1.7079 170.79 1.7179 -1000.00
17 2014.06.06.30 17:37 sell 59.7 1.7079 101.96163 1.7179 -597.00
18 2014.07.01 09:03 sell 100.0 1.7100 171 1.7179 -790.00
19 2014.07.01 09:03 sell 100.0 1,7100 171 1,7179 -790.00
20 2014.07.01 09:03 sell 58.4 1,7100 99,864 1,7179 -461.36
21 2014.07.01 11:30 Verkauf 100.0 1,7110 171.1 1,7179 -690.00
22 2014.07.01 11:30 Verkauf 100.0 1,7110 171.1 1,7179 -690.00
23 2014.07.01 11:30 verkaufen 100,0 1,7110 171,1 1,7179 -690,00
24 2014.07.01 11:30 verkaufen 100,0 1,7110 171,1 1,7179 -690,00
25 2014.07.01 11:30 sell 18.1 1 1.7110 30.9691 1.7179 -124.89
26 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
27 2014.07.02 02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
28 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
29 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
30 2014.07.02.02:33 Verkauf 100.0 1.7145 171.45 1.7179 -340.00
31 2014.07.02 02:33 sell 100.0 1.7145 171.45 1.7179 -340.00
32 2014.07.02 02:33 sell 76.5 1.7145 131.15925 1.7179 -260.10
33 2014.07.02.02 11:32 sell 100.0 1.7176 171.76 1.7179 -30.00
34 2014.07.02 11:32 sell 100.0 1.7176 171.76 1.7179 -30.00
35 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
36 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
37 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
38 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
39 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
40 2014.07.0202 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
41 2014.07.02 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
42 2014.07.0202 11:32 sell 100.0 1,7176 171.76 1,7179 -30.00
43 2014.07.02 11:32 sell 94.6 1.7176 162.48496 1.7179 -28.38
Insgesamt:2865,5 4909,88611 -12756,34
Durchschnittlicher Eröffnungskurs -> 1,7134

Hoch 04.07.2014 1.7179

Drawdown in Pips -> 0.0045
Drawdown in Währung ->12756,34

Inanspruchnahme laut Code -> 13823,00
Inanspruchnahme laut Prüferbericht ->23669,03

TP - > 1.7084
Gewinn in Pips -> 0.0050
Gewinn laut Berechnung - > 14465.91

Gewinn laut Bericht - > 13915.05


Wie kann die Inanspruchnahme nicht stimmen - insbesondere nicht mit dem Bericht des Prüfers? Vorher gab es keine geschlossenen Stellen!

 

So sieht die Situation in der Tabelle aus



 
Ich habe die Berechnung in Excel angehängt - vielleicht war ich da zu dumm!?
Dateien:
Calculation.zip  104 kb
 

-Aleks-:

Die globale Variable ist relevant, wenn man wirklich auf dem Markt arbeitet - ich brauche Testinformationen -, deshalb habe ich mich nicht damit beschäftigt.

Ich habe nicht von GlobalVariable gesprochen, sondern von der Ebene der globalen Variablen.

-Aleks-:

Was Eigenkapital und Saldo sind, weiß ich natürlich, aber ich weiß immer noch nicht, wie der Drawdown berechnet wird. Meine Code-Beispiele zeigen, dass ich versucht habe, sowohl den Saldo als auch den Fonds als Maximum zu nehmen, und ebenso habe ich den Saldo und den Fonds als Minima genommen.

Ich habe die Formel zur Berechnung des Drawdowns im Tester noch nicht gemeistert, aber Sie können versuchen, die Differenz zwischen Ihrem Saldo vor der Ordereröffnung und dem Mindestkapital vor der Orderschließung zu berechnen. Oder Sie berechnen den Mindest- und den Höchstbetrag, und die maximale Differenz ergibt die maximale Inanspruchnahme.

-Aleks-:

Warum glauben Sie, dass die Ungleichungif (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; niemals gilt? Es ist nur nicht auf der Bar erfüllt, wenn die neue Balance Maximum erreicht ist (oder Eigenkapital - immer noch nicht wahr), aber zu diesem Zeitpunkt fixiere ich den Gewinn DrawdownProfitMin=ProfitNew.

Dies ist von größerer Bedeutung, da der maximale Drawdown in der Regel nicht zum Zeitpunkt des Orderschlusses erreicht wird und das Ziel darin besteht, den durchschnittlichen Geldbetrag zu berechnen, der für die Arbeit des EA erforderlich ist.

Ich stimme zu, ich war nicht aufmerksam genug.

Der Abzug erfolgt jedoch nicht pro Tag, sondern pro Auftrag (bzw. Aufträge), und danach wird das Eigenkapital zu einem Guthaben. Dies sind genau die Stellen auf dem Tester-Diagramm, an denen die Eigenkapital- und die Gleichgewichtslinie in einem Punkt liegen.

 
Alexey Viktorov:

Ich habe nicht von GlobalVariable gesprochen, sondern von der Ebene der globalen Variablen.

Anscheinend habe ich Sie missverstanden - meine Variablen werden vor dem Codeausführungsblock int start() initialisiert, also sollte es keine Probleme mit Mashing oder ähnlichem geben... Oder gibt es einen anderen Grund?


Alexey Viktorov:

Ich habe die Formel für die Berechnung des Drawdowns im Tester nicht gefunden, aber wir können versuchen, die Differenz zwischen dem Saldo vor der Ordereröffnung und dem Mindestkapital vor der Orderschließung zu berechnen. Sie können auch versuchen, die Differenz zwischen dem maximalen und dem minimalen Fonds zu zählen, wobei die maximale Differenz den maximalen Drawdown darstellt.

Und wenn es viele Bestellungen gibt, sollten wir für jede Bestellung zählen und die größte auswählen? In meinem Beispiel können wir sehen, dass der berechnete Drawdown doppelt so hoch war wie das Ergebnis des Testers, und nach Ihrem Algorithmus wird er sogar noch niedriger sein.

Alexey Viktorov:

Die Häufigkeit des Schreibens in die Datei ist eine rein persönliche Angelegenheit, aber die Inanspruchnahme wird nicht für den Tag gezählt, sondern für die Laufzeit des Auftrags bzw. der Aufträge, und dann werden die Mittel zu einem Saldo. Dies sind genau die Stellen im Diagramm des Testers, an denen die Linien des Eigenkapitals und des Gleichgewichts an einem Punkt liegen.

Es spielt keine Rolle, wann der Prüfer den Drawdown berücksichtigt - Tatsache ist, dass er an einem bestimmten Tag maximal ist und das Ergebnis übereinstimmen sollte, was aber nicht der Fall ist - und das ist überraschend.

Ich benötige den Drawdown pro Tag, um das Handelsportfolio zu testen - um zu verstehen, wie viel Mittel auf einmal und wie oft benötigt werden können.

 

Mathematisch gesehen (der Drawdown betrug 23497,1 gegenüber 23669,03) liegt der Drawdown in der Nähe der Größe des Segments, das die Veränderung der Einlage symbolisiert, d.h. die Differenz zwischen dem maximalen und dem minimalen Wert des Eigenkapitals.

 
-Aleks-:

Ich muss Sie missverstanden haben - meine Variablen werden vor dem Code-Ausführungsblock int start() initialisiert, also sollte es keine Probleme mit Mashing oder so geben... Oder gibt es einen anderen Grund?


Und wenn es viele Aufträge gibt, sollen wir dann für jeden Auftrag rechnen und den größten Auftrag auswählen? In meinem Beispiel können Sie sehen, dass der berechnete Drawdown fast die Hälfte des Drawdowns des Testers beträgt, und nach Ihrem Algorithmus wird er sogar noch geringer sein.

Es spielt keine Rolle, wann der Tester den Drawdown berücksichtigt - Tatsache ist, dass er an einem bestimmten Tag maximal ist und das Ergebnis übereinstimmen sollte, und das tut es nicht - und das ist überraschend.

Ich benötige den Drawdown pro Tag, um das Handelsportfolio zu testen - um zu verstehen, wie viel Mittel auf einmal und wie oft benötigt werden könnten.

Nicht ganz. Nicht für jeden einzelnen Auftrag, sondern von der Eröffnung des ersten bis zum Abschluss des letzten Auftrags. D.h. von OrdersTotal() == 0 bis OrdersTotal() == 0.

Dies ist der Zeitpunkt von der Eröffnung der ersten bis zur Schließung der letzten Order; wir sollten den Drawdown bestimmen, da der tatsächliche Start jederzeit erfolgen kann, und dementsprechend kann der Drawdown während der 24-Stunden-Perioden auftreten.

Der ganze Rest... Ich mag es nicht, in die Forschung anderer Leute hineinzuschauen, und auch bei langem Code kann ich über Lösungsansätze diskutieren, aber nicht über Codebeispiele. Aber es ist seltsam, dass niemand meine Annahmen darüber, wie der Drawdown berechnet wird, korrigiert hat...

Jedenfalls gefällt mir Ihre Methode zur Berechnung des Drawdowns nicht. Ich habe den Eindruck, dass es so oft gedruckt wird, dass man viel Geduld braucht, um es herauszufinden.

 

Karputov Vladimir:
Не кусок, а программу, которую можно скомпилировать и прогнать в режиме отладки.

Entschuldigen Sie, dass ich Sie störe, aber als ich das Programm säuberte, um das Problem des Anhaltens des Testers zu finden, fand ich im Text des Programms eine Verletzung seines Algorithmus. Die Kompilierung verlief reibungslos, aber das Testgerät brach ab, ohne den Fehlerpunkt anzuzeigen
 
Alexey Viktorov:

Nicht ganz. Nicht für jeden Auftrag, sondern vom Beginn des ersten bis zum Abschluss des letzten Auftrags. D.h. von OrdersTotal() == 0 bis OrdersTotal() == 0.

Dies ist der Zeitpunkt von der Eröffnung der ersten Order bis zur Schließung der letzten; wir sollten den Drawdown bestimmen, da der tatsächliche Start zu jedem beliebigen Zeitpunkt erfolgt, nicht um 0:00 Uhr, so dass der Drawdown während eines Zeitraums von 24 Stunden auftreten kann.

In diesem Beispiel werden diese Bedingungen also genau eingehalten - die Aufträge werden geöffnet und bei jedem Tick bis zum Schließen verfolgt.

Wenn die Berechnung tatsächlich vom Maximum zum Minimum des Eigenkapitals geht, dann wird mir dieser Showdown helfen, die Messwerte des Testers zu überdenken...

Alexey Viktorov:

Jedenfalls hat mir Ihre Methode zur Berechnung des Drawdowns nicht gefallen. Ich habe den Eindruck, dass es so oft gedruckt wird, dass man viel Geduld braucht, um es herauszufinden.

Was mich interessiert, ist, wie viel Geld der EA tatsächlich benötigt - d.h. der tatsächliche Drawdown (aktueller Verlust) von der Auftragseröffnung bis zur Schließung abzüglich des verlorenen Gewinns.

Er druckt einmal am Tag - das ist überhaupt nicht oft, und er wird für bestimmte Zwecke benötigt.

 
Hallo!

Auf den ersten Blick scheint die Aufgabe so einfach zu sein wie drei Cents. ABER! ....
Im Indikatorfenster befindet sich eine Linie eines beliebigen Oszillators, die relativ zu "0" mit unterschiedlicher Amplitude wackelt.
Das eigentliche Problem ist:
- Zeichnen Sie bei "0" einen Pfeil am unteren Rand des Indikatorfensters, der von unten nach oben verläuft,
- Bei "0" kreuzen Sie von oben nach unten, um einen Pfeil am oberen Rand des Anzeigefensters zu zeichnen,
- bei der Selbstskalierung des Oszillatorcharts im Indikatorfenster sollten die Pfeile automatisch an den Grenzen des Indikatorfensters bleiben.
Wenn Sie z.B. das Diagramm in der Historie vor- und zurückblättern oder die horizontale Skala ändern, sollten die Pfeile immer automatisch an den Grenzen des Indikatorfensters bleiben.

Bitte geben Sie keine Ratschläge, "helfen Sie mir mit Geld")). Ich brauche ein Beispiel für einen funktionierenden Code, der diese Funktion implementiert, oder einen Link zu einem solchen.

Vielen Dank im Voraus!