Sollte reichen, wenn man die Richtung festhält, fällt mir grade so ein, also so:
Code:
int LastTradeDir =-1; //0=BUY 1=SELL -1=Error
for(int i=OrdersTotal()-1; i>=0; i--)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ if( OrderSymbol()==_Symbol
&& OrderMagicNumber()==MagicNumber
&& OrderType()<=OP_SELL )
{
if(OrderOpenTime()<NewestTime) NewestTP=OrderTakeProfit();
if(NewestTP>0.0)
{
if(OrderType()==OP_BUY) LastTradeDir=0; //FixDirection
if(OrderType()==OP_SELL) LastTradeDir=1;
break;
}
}
}
}
// === set Newest TP to all of same kind as last order
for(int i=OrdersTotal()-1; i>=0; i--)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{ if( OrderSymbol()==_Symbol
&& OrderMagicNumber()==MagicNumber )
{
// === selected order must be same as Last order
bool CondLong=(OrderType()==OP_BUY && LastTradeDir==0);
bool CondShort=(OrderType()==OP_SELL && LastTradeDir==1);
if(CondLong || CondShort)
if( !OrderModify(OrderTicket(),
OrderOpenPrice(),
OrderStopLoss(),
NormalizeDouble(NewestTP,_Digits),
0,clrNONE ) )
Print(__FUNCTION__," newTP failed" );
}
}
}