Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 672
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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?
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
{
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);
}
}
}
}
}
...
Funktion liefert Gewinne in Oktober-Posen, kann nach Symbol, Typ, Magie gefiltert werden
Schließen Sie dann alle Positionen
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)
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?
jaorder_type= OP_BUY OP_SELL -1
Der Compiler beschwert sich auch überClosePosBySelect.
Muss diese Funktion separat geschrieben werden?
Wladislaw Andruschenko
RichLux:
Der Compiler beschwert sich auch überClosePosBySelect.
Muss diese Funktion separat geschrieben werden?
{
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);
}
}
}
}
}