w ten sposób wyglądająca funkcja działa bo sprawdzałem
Kod: Zaznacz cały
void moveSl()
{
if(ticket<=0)return(0);
OrderSelect(ticket,SELECT_BY_TICKET);
if(OrderCloseTime()!=0)return(0);
if(MathAbs(OrderClosePrice()-OrderStopLoss()) > (stopLoss+przeskok)*Point)
{
if(OrderType()==OP_BUY)
{
if(OrderModify(OrderTicket(),0,Bid-(stopLoss*Point),OrderTakeProfit(),0)==false)
{
Print("SL modify error: "+ GetLastError()+ " old SL: "+OrderStopLoss()+" new SL: "+ DoubleToStr(Bid-(stopLoss*Point),Digits)+ " price:"+OrderClosePrice());
}
}
if(OrderType()==OP_SELL)
{
if(OrderModify(OrderTicket(),0,Ask+(stopLoss*Point),OrderTakeProfit(),0)==false)
{
Print("SL modify error: "+ GetLastError()+ " old SL: "+OrderStopLoss()+" new SL: "+ DoubleToStr(Ask+(stopLoss*Point),Digits)+ " price:"+OrderClosePrice());
}
}
}
}