Добрый день,идея такая если из 2х ордеров (buystop, sellstop),открывается один из них,удаляется противоположный(например открывается buystop,удаляется sellstop.Я привела код ниже,но что-то он не очень эффективен(Не удаляет ордер).Помогите,пожалуйста советом.Спасибо
1.for (int i=OrdersTotal()-1; i>=0; i--)
2. {
3. if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
4.if (OrderType()==OP_BUY) OrderDelete(OrderType()==OP_SELLSTOP);
5.if (OrderType()==OP_SELL) OrderDelete(OrderType()==OP_BUYSTOP);
6.}
Перед тем как что-то писать надо хоть одним глазком заглянуть в документацию.

- docs.mql4.com
Чтобы удалить, нужно его забрать с помощью OrderSelect(........)
Вовсе нет. Достаточно знать тикет ордера. Ведь OrderDelete() использует именно тикет. Поэтому ответ будет таков: нужно в качестве аргумента функции OrderDelete() передать тикет ордера Sell Stop или Buy Stop. Для получения тикета есть два пути:
- Сразу после установки ордера запоминать его тикет.
- Воспользоваться перебором всех ордеров, чтобы найти нужный тикет.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день,идея такая если из 2х ордеров (buystop, sellstop),открывается один из них,удаляется противоположный(например открывается buystop,удаляется sellstop.Я привела код ниже,но что-то он не очень эффективен(Не удаляет ордер).Помогите,пожалуйста советом.Спасибо
1.for (int i=OrdersTotal()-1; i>=0; i--)
2. {
3. if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
4.if (OrderType()==OP_BUY) OrderDelete(OrderType()==OP_SELLSTOP);
5.if (OrderType()==OP_SELL) OrderDelete(OrderType()==OP_BUYSTOP);
6.}