Очень часто необходимо указать количество лотов открытой позиции или отложенного ордера. Самой простой вариант получить это значение — это выделить позицию или ордер с помощью функции OrderSelect(), а потом вызвать функцию OrderLots().
double OrderLots()
Функция возвращает количество лотов в выделенном ордере или позиции.
Как уже сказано, основное применение функции — передать количество лотов в качестве параметра в функции OrderClose() и OrderModify().
Забегая вперед, расскажем о формате функции OrderClose():
bool OrderClose(int ticket, double
lots, double price, int slippage, color Color=CLR_NONE)
Где:
- ticket — тикер ордера или позиции;
- lots — количество лотов для закрытия позиции;
- price — цена закрытия;
- slippage — значение максимального проскальзывания в пунктах;
- color — цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.
Как Вы видите, в качестве второго параметра нам нужно передать в функцию количество лотов. Самый простой способ сделать это — получить количество лотов с помощью функции OrderLots():
// закрыть позицию с тикером 77777 по текущей цене
// предположим, что позиция уже выделена с помощью
OrderSelect
// и мы точно знаем, что это открытая позиция
if (OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, 3);
else
OrderClose(OrderTicket(), OrderLots(), Bid, 3);
В этом примере нам встретились две предопределенные переменные типа double:
- Bid — бид последней котировки по текущему инструменту (к которому прикреплен советник);
- Ask — аск последней котировки по текущему инструменту.