///////////////////////////////////////////////////////////////////////////
void SL_TP()
{
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
if(OrderSymbol()==Symbol())
{
/////////////////////////////////////////////////
if(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)
{
//OrderSelect(i,SELECT_BY_POS);
if(StopLoss>0 && OrderStopLoss()==0 && NormalizeDouble(OrderOpenPrice()-StopLoss*Point,Digits)<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-StopLoss*Point,Digits),OrderTakeProfit(),0,CLR_NONE);
}
OrderSelect(i,SELECT_BY_POS);
if(TakeProfit>0 && OrderTakeProfit()==0 && NormalizeDouble(OrderOpenPrice()+TakeProfit*Point,Digits)>Bid+MarketInfo(Symbol(),MODE_STOPLEVEL))
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()+TakeProfit*Point,Digits),0,CLR_NONE);
}
}
/////////////////////////
if(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)
{
//OrderSelect(i,SELECT_BY_POS);
if(StopLoss>0 && OrderStopLoss()==0 && NormalizeDouble(OrderOpenPrice()+StopLoss*Point,Digits)>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL))
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+StopLoss*Point,Digits),OrderTakeProfit(),0,CLR_NONE);
}
OrderSelect(i,SELECT_BY_POS);
if(TakeProfit>0 && OrderTakeProfit()==0 && NormalizeDouble(OrderOpenPrice()-TakeProfit*Point,Digits)<Ask-MarketInfo(Symbol(),MODE_STOPLEVEL))
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizeDouble(OrderOpenPrice()-TakeProfit*Point,Digits),0,CLR_NONE);
}
}
////////////////////////////////////////////////
}
}
}
}
}