Inhalte aufrufen

  • Über Facebook anmelden Über Twitter anmelden Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

MT4: Funktion zur Ermittlung des Gewinns

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
4 Antworten zu diesem Thema

  #1
OFFLINE   Joachim108

Moin,

 

irgendwie habe ich mich bei der Programmierung "festgefressen".

Ich möchte den Gesamtgewinn einer Reihe von offenen und geschlossenen Order ermitteln. Zum Testen war ich über den Kontostand und die offene Equity gegangen - das war leicht, aber dann darf man immer nur ein Pair pro Konto handeln, da sonst das Ergebnis nicht mehr stimmt.
Daher habe ich mir eine Funktion gebaut, die Gesamtgewinn eines "Clusters" ermitteln soll. Die MagicNumber ist dynamisch, d.h. für jedes Cluster unterschiedlich.
Die folgende Funktion gibt leider nicht das gewünschte Ergebnis. Wenn ich nämlich sage, dass der Gesamtgewinn größer als ein bestimmter Betrag sein soll schliesst er zwar tatsächlich alle Cluster im Gewinn, aber nicht bei diesem betrag sondern irgendwie nach einem mir nicht ersichtlichen System. Wo ist der Fehler?

 

double Win()
{
 double win = 0;
 
 for(int i=OrdersTotal()-1; i >= 0; i--)
 {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    {
       if(OrderMagicNumber()== MagicNumber)
                     
          win = win + (OrderProfit() - OrderCommission() - OrderSwap() );
    }
 }
 for(int i=OrdersHistoryTotal()-1; i >= 0; i--){          
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
       if(OrderMagicNumber()== MagicNumber)
          
          win = win + (OrderProfit() - OrderCommission() - OrderSwap());
          }
         }

return(win);
}


Bearbeitet von Joachim108, 08 Juni 2017 - 06:35 Uhr,

Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!

 

mini.jpg


  #2
OFFLINE   traderdoc

... Evtl. in der Close-Funktion?

Gefunden in Deiner Signatur:
"Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!"

Leider sagt der über die Vergangenheit nichts Verlässliches aus, weder in der einen noch in der anderen Richtung.

traderdoc

Bearbeitet von traderdoc, 08 Juni 2017 - 09:48 Uhr,

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #3
OFFLINE   Joachim108

... Evtl. in der Close-Funktion?

Gefunden in Deiner Signatur:
"Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!"

Leider sagt der über die Vergangenheit nichts Verlässliches aus, weder in der einen noch in der anderen Richtung.

traderdoc

Moin Traderdoc,

in der Close-Funktion ist alles o.k., da dies ja auch vorher geklappt hat als ich den Gewinn über den Kontostand + Openequity errechnet hatte.
Wenn ich da angegeben hatte, dass der EA alle Positionen schliessen soll, wenn der Gesamtgewinn (aus offenen und geschlossenen Gewinnen eines Clusters) einen bestimmten Betrag überschreitet, hat er dies exakt so getan.

Ich hatte gehofft in der Funktion oben wäre ein Denkfehler, der mir nicht aufgefallen ist - aber dem ist wohl leider nicht so und ich muss woanders suchen...

 


Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!

 

mini.jpg


  #4
OFFLINE   traderdoc

Dann würde ich mal diese Gleichung

win = win + (OrderProfit() - OrderCommission() - OrderSwap() );

in diese wandeln:

win = win + OrderProfit() + OrderCommission() + OrderSwap();

Denn in Deiner Gleichung wird im Endeffekt die Commission zum Profit addiert, weil die Commission definitiv immer negativ ist.

traderdoc
  • Joachim108 gefällt das

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #5
OFFLINE   Joachim108

Dann würde ich mal diese Gleichung

win = win + (OrderProfit() - OrderCommission() - OrderSwap() );

in diese wandeln:

win = win + OrderProfit() + OrderCommission() + OrderSwap();

Denn in Deiner Gleichung wird im Endeffekt die Commission zum Profit addiert, weil die Commission definitiv immer negativ ist.

traderdoc

Super, das war die Lösung!
Kaum macht man es richtig, geht es!!!!


Ich weiß, das ein Backtest nichts über die Zukunft sagt.
Aber warum soll ich etwas traden, das in der Vergangenheit schon nicht funktioniert hat?!

 

mini.jpg




Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer