How can i make my EA close Lossing position before the wining one?
With regard to the code attach below, How can i make my EA close Losing positions before the wining one?
Thank you in advance.
One way is to call the CloseAll() function twice - first time to close losers, second time close the rest... (perhaps passing a parameter to differentiate the calls).
Another way is to store ticket number and float somewhere (e.g. arrays/structs) in this current loop (i.e. remove the OrderClose()) as "pre-processing"... afterwhich, you can even sort the ticket numbers based on their float, and close them in that sequence.
With regard to the code attach below, How can i make my EA close Losing positions before the wining one?
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
int MN = OrderMagicNumber();
if(OrderSymbol()==_Symbol && (((MN==MagicNumber)))){
if(OrderType()==OP_BUY)
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID+OrderType()),closeSlippage,clrOrangeRed))
Print(__FUNCTION__+"Error closing buy order: #"+ErrorDescription(GetLastError()));
}
if(OrderType()==OP_SELL)
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID+OrderType()),closeSlippage,clrOrangeRed))
Print(__FUNCTION__+"Error closing sell order: #"+ErrorDescription(GetLastError()));
}
Sleep(200);
}
}else{
Print(__FUNCTION__+"Error selecting order: #"+IntegerToString(GetLastError()));
}
}
return GetLastError();
Thank you in advance.