CheckClose

Проверяет необходимость выхода из рынка.

virtual bool  CheckClose()

Возвращаемое значение

true - выполнена торговая операция, иначе - false.

Примечание

  1. Проверяет необходимость выхода из рынка по программному Stop Out (вызов метода CheckClose() объекта управления капиталом). Если условие выполняется, закрываем позицию, удаляем все ордера (вызов метода CloseAll() и уходим.
  2. Проверяет необходимость закрытия длинной или короткой позиции (вызов метода CheckCloseLong() или CheckCloseShort() соответственно) и, если позиция закрыта, удаляет все ордера (вызов метода DeleteOrders()).

Реализация

//+------------------------------------------------------------------+
//| Check for position close or limit/stop order delete              |
//| INPUT:  no.                                                      |
//| OUTPUT: true-if trade operation processed, false otherwise.      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CExpert::CheckClose()
  {
   double lot;
//--- position must be selected before call
   if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
      return(CloseAll(lot));
//--- check for position type
   if(m_position.PositionType()==POSITION_TYPE_BUY)
     {
      //--- check the possibility of closing the long position / delete pending orders to buy
      if(CheckCloseLong())
        {
         DeleteOrders();
         return(true);
        }
     }
   else
     {
      //--- check the possibility of closing the short position / delete pending orders to sell
      if(CheckCloseShort())
        {
         DeleteOrders();
         return(true);
        }
     }
//--- return without operations
   return(false);
  }