Schließe alle Orders, wenn der Drawdown einen bestimmten Prozentsatz erreicht – MetaTrader 4

Mike 2016.01.13 19:24 14 0 0
Anhang

In diesem Beitrag zeige ich dir, wie du mit einem einfachen Code alle offenen Orders schließt, sobald der Drawdown einen bestimmten Prozentsatz deines Kontostands erreicht. Das ist eine nützliche Funktion, um dein Risiko zu managen und Verluste zu begrenzen.

Um den Code zu verwenden, musst du lediglich die Magic-Nummer deiner Orders eingeben (setze 0, um alle Orders zu steuern) und den maximalen Drawdown-Prozentsatz, bei dessen Erreichen die Logik des Codes die Orders schließt.

Du rufst einfach die Funktion DD_close auf, um diesen Code zu nutzen.

Im Anhang findest du die Header-Datei mit dem EA, der auf diesem Code basiert.

// Um diese Option zu nutzen, rufe einfach die Funktion : ( DD_close ) auf
//+------------------------------------------------------------------+
//|                          Globale Variablen                           |
//+------------------------------------------------------------------+
bool Close_All_V;
//+------------------------------------------------------------------+
//|                        Hauptfunktion                            |
//+------------------------------------------------------------------+
// DD:               Hier ist der DD-Prozentsatz, 100 bedeutet, dass keine Order geschlossen wird.
// Magic_Number:     Deine EA-Magic-Nummer, setze 0, um alle Orders zu steuern.
void DD_close(int DD,int Magic_Number)
  {
   if(DD(Magic_Number)>=DD)
      Close_All_V=true;
   if(Close_All_V)
      Close_All(Magic_Number);
  }
//+------------------------------------------------------------------+
//|                          Prüfe schließen                             |
//+------------------------------------------------------------------+
void Check_Close(int Check_Number) // prüfe, ob die Order geschlossen werden kann
  {
   if(Check_Number<0) Print("OrderClose fehlgeschlagen mit Fehler: ",ErrorDescription(GetLastError()));
   else Close_All_V=false;
  }
//+------------------------------------------------------------------+
//|                          Alle schließen                               |
//+------------------------------------------------------------------+
void Close_All(int M_N)
  {
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        Loop++;
        if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
              {
              if(OrderType()==OP_BUY)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Bid,100,clrNONE));
               if(OrderType()==OP_SELL)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Ask,100,clrNONE));
              }
        }
  }
//+------------------------------------------------------------------+
//|                          Verlust berechnen                          |
//+------------------------------------------------------------------+
double Loss(int M_N)
  {
   double re=0;
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
        Loop++;
        if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
               re=re+OrderProfit();
        }
   return re * -1;
  }
//+------------------------------------------------------------------+
//|                  Berechne den Drawdown-Prozentsatz                   |
//+------------------------------------------------------------------+
double DD(int M_N)
  {
   return ( 100 / AccountBalance ( ) ) * Loss ( M_N );
  }
//+------------------------------------------------------------------+
Liste
Kommentar 0