Hallo,
so hab das mal geschrieben.
Code:
void Check_BreakEvenLevels (int EA_ID, double Faktor_BreakEvenLevel)
{
ResetLastError();
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
bool Order_Select = OrderSelect(i, MODE_TRADES);
if (Order_Select == True)
{
if (OrderMagicNumber() == EA_ID && OrderType() <= 1)
{
double OpenPrice = OrderOpenPrice(), StopLossPrice = OrderStopLoss();
if (OrderType() == OP_BUY && StopLossPrice != 0 && StopLossPrice < OpenPrice)
{
double BreakEvenLevel = OpenPrice + ((OpenPrice - StopLossPrice) * Faktor_BreakEvenLevel);
if (Bid >= BreakEvenLevel)
{
bool Order_Modify = OrderModify(OrderTicket(), OpenPrice, OpenPrice, OrderTakeProfit(), 0);
if (Order_Modify == False) Print("Fehler bei OrderModify. Ticket: ", OrderTicket(), "Error: ", GetLastError());
}
}
else if (OrderType() == OP_SELL && StopLossPrice != 0 && StopLossPrice > OpenPrice)
{
double BreakEvenLevel = OpenPrice - ((StopLossPrice - OpenPrice) * Faktor_BreakEvenLevel);
if (Ask <= BreakEvenLevel)
{
bool Order_Modify = OrderModify(OrderTicket(), OpenPrice, OpenPrice, OrderTakeProfit(), 0);
if (Order_Modify == False) Print("Fehler bei OrderModify. Ticket: ", OrderTicket(), "Error: ", GetLastError());
}
}
} //Ende Kontrolle MagicNumber
} //Ende Kontrolle OrderSelect
} //Ende For-Schleife Orders
} //Ende Funktion Check_BreakEvenLevels
Getestet hab ich es noch nicht, sollte aber funktionieren.
Vielleicht kannst du das mal testen.
mfg Leopold