ReverseLong

Esegue un'operazione di inversione posizione long.

virtual bool  ReverseLong(
   double    price,    // prezzo
   double    sl,       // Stop Loss
   double    tp        // Take Profit
   )

Parametri

price

[in] Prezzo.

sl

[in] Prezzo Stop Loss.

tp

[in] prezzo Take Profit.

Valore di ritorno

true se è stata eseguita un'operazione di trade, altrimenti false.

Nota

Ottiene il volume di inversione posizione (metodo LotReverse()) ed inverte una posizione long (Sell() metodo dell'oggetto Trade) se il volume di trade non è uguale a 0.

In modalità "hedging" di accounting della posizione, viene eseguita l' inversione della posizione così come la chiusura della posizione esistente e l'apertura di una nuova opposta con il volume rimanente.

Implementazione

//+------------------------------------------------------------------+
//| Inversione posizione Long                                            |
//| INPUT:  price - prezzo,                                           |
//|         sl    - stop loss,                                       |
//|         tp    - take profit.                                     |
//| OUTPUT: true-se l'operazione di trade è stata elaborata, altrimenti false.      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CExpert::ReverseLong(double price,double sl,double tp)
  {
   if(price==EMPTY_VALUE)
      return(false);
//--- ottiene il lotto d'inversione
   double lot=LotReverse(sl);
//--- check lot
   if(lot==0.0)
      return(false);
//---
   bool result=true;
   if(m_margin_mode==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)
     {
      //--- first close existing position
      lot-=m_position.Volume();
      result=m_trade.PositionCloseByTicket(m_position.Identifier());
     }
   if(result)
      result=m_trade.Sell(lot,price,sl,tp);
//---
   return(result);
  }