Посмотрите мой код:
for(int i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    OrderClose(...);
Почему при его выполнении закрываются не все ордера, а через один?

Дело в том, что при закрытии ордера Форекс в Metatrader 4 или удалении отложенного ордера Buy Stop или Sell Stop - позиция оставшихся смещается. 

Представим, что у нас есть 3 ордера Forex. Их позиции изначально: 0, 1, 2. При закрытии ордера в позиции 0 следующие ордера будут иметь позиции 0,1. Цикл же этого не учитывает и при следующем проходе будет попытка закрыть ордер в позиции 1. Поэтому более правильным вариантом на MQL будет следующий:
for(int i=OrdersTotal() −1;i>=0;i--)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    OrderClose(...);