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

 
fxsaber:
Ich danke Ihnen!!!
 

Ich schreibe einen EA, der auf einer Martingal-Basis arbeitet.

Wie kann ich erreichen, dass alle geöffneten Aufträge geschlossen werden, wenn der maximal zulässige Verlust in Pips für ein Währungspaar erreicht ist?

 
RichLux:

Ich schreibe einen EA, der auf einer Martingal-Basis arbeitet.

Wie kann ich erreichen, dass alle geöffneten Aufträge geschlossen werden, wenn der maximal zulässige Verlust in Pips für ein Währungspaar erreicht ist?


double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
  {
   double profit=0;
   int    i,k=OrdersTotal();

   if(order_symbol=="0") order_symbol=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(order_magic<0 || OrderMagicNumber()==order_magic)
                 {
                  profit+=OrderProfit()+OrderCommission()+OrderSwap();
                 }
              }
           }
        }
     }
   return(profit);
  }


die Funktion liefert Gewinne in offenen Positionen, kann nach Symbol, Typ, Magie gefiltert werden

Dann schließen Sie alle Positionen

void CPD(string order_symbol="",int order_type=-1,int order_magic=-1)
  {
   int i,k=OrdersTotal();

   if(order_symbol=="0") order_symbol=Symbol();
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
              }
           }
        }
     }
  }
 
Vladislav Andruschenko:

...

Funktion liefert Gewinne in Oktober-Posen, kann nach Symbol, Typ, Magie gefiltert werden

Schließen Sie dann alle Positionen

Danke, aber ich bin daran interessiert, auf Verlust zu schließen. Wie kann dies umgesetzt werden?
 

Ich meine, ich habe Ihnen das oben Gesagte gegeben,

Gewinn ist also ein allgemeiner Begriff.

-20 ist -20

if(GetProfitinCurrency(Symbol(),-1,-1)<-20)CPD(Symbol(),-1,-1)

 
Vladislav Andruschenko:

double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
  {
   double profit=0;
   int    i,k=OrdersTotal();

   if(order_symbol=="0") order_symbol=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(order_magic<0 || OrderMagicNumber()==order_magic)
                 {
                  profit+=OrderProfit()+OrderCommission()+OrderSwap();
                 }
              }
           }
        }
     }
   return(profit);
  }

Danke, jetzt verstehe ich.

Was im Code noch unklar ist, ist:(order_type<0||OrderType()==order_type) THIS kann als "and order to sell or buy" gelesen werden?

 
RichLux:

jaorder_type= OP_BUY OP_SELL -1

 

Der Compiler beschwert sich auch überClosePosBySelect.

Muss diese Funktion separat geschrieben werden?

 
Kommentare, die für dieses Thema nicht relevant sind, wurden in die Rubrik "Die aktuelle Zeit in der Grafik anzeigen" verschoben.
 

Wladislaw Andruschenko

RichLux:

Der Compiler beschwert sich auch überClosePosBySelect.

Muss diese Funktion separat geschrieben werden?

void CPD(string order_symbol="",int order_type=-1,int order_magic=-1)
  {
   int i,k=OrdersTotal();

   if(order_symbol=="0") order_symbol=Symbol();
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
              }
           }
        }
     }
  }
Grund der Beschwerde: