//+------------------------------------------------------------------+
//| 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);
}
|