Code:
if( NormalizeDouble( OrderOpenPrice() - Ask - Offset*Point, Digits ) > 0.0 )
if(!OrderModify(OrderTicket(), NormalizeDouble( Ask+Offset*Point, Digits ), SL, TP, 0))
Alert(" MODIFY BUYSTOP ERROR", GetLastError());
so ähnlich
Code:
//+----------------------------------------------------------------------------+
void TrailingOrders()
{
double di, pa, pb, pp, sl, tp;
pp=MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_SELLLIMIT)
{
pa=MarketInfo(OrderSymbol(), MODE_BID);
if (OrderOpenPrice()-pa>(TrailingStop+TrailingStep-1)*pp)
{
di=OrderOpenPrice()-pa-TrailingStop*pp;
if (OrderStopLoss() >0) sl=OrderStopLoss() -di; else sl=0;
if (OrderTakeProfit()>0) tp=OrderTakeProfit()-di; else tp=0;
ModifyOrder(pa+TrailingStop*pp, sl, tp);
}
}
if (OrderType()==OP_BUYLIMIT)
{
pb=MarketInfo(OrderSymbol(), MODE_ASK);
if (pb-OrderOpenPrice()>(TrailingStop+TrailingStep-1)*pp)
{
di=pb-OrderOpenPrice()-TrailingStop*pp;
if (OrderStopLoss() >0) sl=OrderStopLoss() +di; else sl=0;
if (OrderTakeProfit()>0) tp=OrderTakeProfit()+di; else tp=0;
ModifyOrder(pb-TrailingStop*pp, sl, tp);
}
}
}
//+------------------------------------------------------------------+