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();
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);
}
}
}
}
}