Hallo,
das ist kein Problem.
Code:
void UpdateBE()
{
if(UpdateToBE <= 0) return;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() == OP_BUY && OrderOpenPrice() > OrderStopLoss() && Bid - OrderOpenPrice() >= UpdateToBE * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0);
}
if(OrderType() == OP_SELL && OrderOpenPrice() < OrderStopLoss() && OrderOpenPrice() - Ask >= UpdateToBE * Point)
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0);
}
}
}
}
Definiere UpdateToBE als externe Variable und setzte sie z.B. auf 20 Pips (bei 0 wird kein Update to BE ausgeführt).
Das void UpdateBE() rufst du aus der void Start() auf (also bei jedem Tick).
Fertig!
Spread wird berücksichtigt.
Läuft die Order nach dem Break Even Update ins SL wird sie exakt mit 0 geschlossen.
Gruß
naranjoe