home

Очень часто необходимо указать количество лотов открытой позиции или отложенного ордера. Самой простой вариант получить это значение — это выделить позицию или ордер с помощью функции 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 — аск последней котировки по текущему инструменту.