Формат функции OrderSelect():
bool OrderSelect ( int index, int select, int pool=MODE_TRADES )
Как мы видим, функция возвращает значение логического типа: true — когда ордер или позиция были успешно выбраны, false — в случае какой-то ошибки. Код этой ошибки можно получить впоследствии с помощью функции GetLastError().
Ордер/позицию можно выбрать двумя способами:
- по номеру тикера;
- по порядковому номеру ордера/позиции в списке.
Если Вы знаете тикер ордера или позиции, то в качестве параметра select надо передать значение SELECT_BY_TICKET, а в качестве параметра index — номер тикера ордера или позиции. Третий параметр в этом случае не используется и его можно опустить.
Пример выбора по тикеру:
//---- выбираем ордер/позицию с тикером 77777
if ( OrderSelect (77777, SELECT_BY_TICKET) == true)
Print("Ордер #77777 выбран успешно");
else
Print("OrderSelect() вернул ошибку - ",GetLastError());
Если Вы не знаете тикера, то существует другой способ выбрать ордер или позицию. Для этого Вам надо выбрать ордер или позицию из списка открытых позиций или неудаленных отложенных ордеров (значение параметра pool равно MODE_TRADES) или из списка закрытых позиций или удаленных ордеров (параметр pool равен MODE_HISTORY). В обоих случаях параметр select должен быть равен SELECT_BY_POS. В параметре index Вы должны указать порядковый номер этой позиции или ордера в списке открытых позиций или неудаленных отложенных ордеров (pool равен MODE_TRADES) или в списке закрытых позиций и удаленных отложенных ордеров (pool равен MODE_HISTORY).
Этот способ очень полезен, когда Вам нужно «пробежаться», например, по всем открытым позициям:
int pos;
int total = OrdersTotal();
for ( pos = 0; pos