//+------------------------------------------------------------------+
//| Controlla per la posizione chiusa o eliminazione di ordini limit/stop |
//| INPUT: no. |
//| OUTPUT: true-se l'operazione di trade è stata elaborata, altrimenti false. |
//| REMARK: no. |
//+------------------------------------------------------------------+
bool CExpert::CheckClose()
{
double lot;
//--- la posizione dev'essere selezionata prima della chiamata
if((lot=m_money.CheckClose(GetPointer(m_position)))!=0.0)
return(CloseAll(lot));
//--- controllo del tipo di posizione
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
//--- controllo della possibilità di chiusura della posizione long / eliminazione ordini pendenti per buy
if(CheckCloseLong())
{
DeleteOrders();
return(true);
}
}
else
{
//--- controllo della possibilità di chiusura della posizione short / eliminazione ordini pendenti per sell
if(CheckCloseShort())
{
DeleteOrders();
return(true);
}
}
//--- ritorno senza operazioni
return(false);
}
|