Code:
//call: DeletePendingOrders(Symbol(),Magic);
void DeletePendingOrders(string symbol,int magicnumber) {
bool result;
bool FilterBySymbol=true;
bool FilterByMagicNumber=true;
for (int cnt=OrdersTotal()-1; cnt>=0; cnt--) {
if (!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if (FilterBySymbol && OrderSymbol()!=symbol) continue;
if (FilterByMagicNumber && OrderMagicNumber()!=magicnumber) continue;
if (OrderType()<=OP_SELL) continue;
if (OrderType()>OP_SELLSTOP) continue;
{
while (IsTradeContextBusy()) Sleep(100);
result = OrderDelete(OrderTicket());
}
}
}
Da könnte/sollte man am Ende
prüfen ob alle Orders gelöscht sind und es ggf. nochmals versuchen.