CheckClose

Comprueba las condiciones de cierre de la posición.

virtual bool  CheckClose()

Valor devuelto

true si la operación se ha ejecutado; en caso contrario false.

Nota

  1. Comprueba las condiciones Stop Out del Asesor Experto (el método CheckClose() del objeto de gestión del dinero). Si la condición se satisface, cierra la posición, borra todas las órdenes (CloseAll(...)) y sale.
  2. Comprueba las condiciones de cierre de la posición larga o corta (métodos CheckCloseLong() o CheckCloseShort()) y si la posición se cierra, borra todas las órdenes (método DeleteOrders()).

Implementación

//+------------------------------------------------------------------+
//| Comprueba el cierre de la posición o borrado de la orden limit/stop              |
//| ENTRADA:  no.                                                      |
//| SALIDA: true si la operación se procesa, false en caso contrario.      |
//| OBSERVACIONES: no.                                                      |
//+------------------------------------------------------------------+
bool CExpert::CheckClose()
  {
   double lot;
//--- la posición debe seleccionarse antes de la llamada
   if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
      return(CloseAll(lot));
//--- comprueba el tipo de posición
   if(m_position.PositionType()==POSITION_TYPE_BUY)
     {
      //--- comprueba la posibilidad de cerrar la posición larga / borrar las posiciones pendientes para comprar
      if(CheckCloseLong())
        {
         DeleteOrders();
         return(true);
        }
     }
   else
     {
      //--- comprueba la posibilidad de cerrar la posición corta / borrar las posiciones pendientes para vender
      if(CheckCloseShort())
        {
         DeleteOrders();
         return(true);
        }
     }
//--- devuelve sin operaciones
   return(false);
  }