home

Мы уже знаем, как можно выставить отложенный ордер. Для этого надо использовать функцию OrderSend(). Также мы умеем изменять параметры отложенных ордеров с помощью функции OrderModify().

В этом выпуске расскажем о том, как можно удалить отложенный ордер. Это можно сделать с помощью функции OrderDelete().

 

 bool OrderDelete(int ticket)

 


Эта функция удаляет отложенный ордер с тикером ticket. Функция возвращает true в случае успешного удаления и false — в случае возникновения ошибки. Код ошибки можно получить, вызвав функцию GetLastError().

Применение функции OrderDelete() рассмотрим на следующем примере:

Предположим, что наш эксперт по какой-то логике (не будем здесь вдаваться в подробности) выставляет по одному инструменту сразу два отложенных ордера — Buy Limit и Sell Limit. Наша задача — если один из ордеров сработал, то удалить оставшийся отложенный ордер.

Предположим, что по данному инструменту работает только наш эксперт.

Пусть в момент выставления каждого отложенного ордера было задано «магическое» число, одинаковое для каждого отложенного ордера. Предположим, что это «магическое» число хранится в переменной MyMagicNumber.

 

 // просмотрим все открытые позиции и выставленные ордера
int pos;
for(pos=0; pos<=OP_SELL))
{
// найти второй отложенный ордер
int i;
for(i=0; iOP_SELL))
{
// ордер найден - удалим его
if (OrderDelete(OrderTicket()))
{
Print("Ордер удален");
}
else
{
Print("Ошибка ", GetLastError(), " при удалении ордера");
}
}
}
}
// выйти из цикла
break;
}
}
}