ReverseLong

Выполняет операции разворота длинной позиции.

virtual bool  ReverseLong(
   double    price,    // цена
   double    sl,       // Stop Loss
   double    tp        // Take Profit
   )

Параметры

price

[in] Цена входа в рынок.

sl

[in] Цена Stop Loss.

tp

[in] Цена Take Profit.

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

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

Примечание

Размер лота для разворота длинной позиции определяется вызовом метода LotReverse(). Если лот не равен 0.0, производит разворот длинной позиции (вызов метода Sell(...) объекта торговли).

В "хеджинговом" режиме учета позиций разворот осуществляется закрытием существующей позиции и открытием новой позиции противоположного направления с остаточным объемом.

Реализация

//+------------------------------------------------------------------+
//| Long position reverse                                            |
//| INPUT:  price - price,                                           |
//|         sl    - stop loss,                                       |
//|         tp    - take profit.                                     |
//| OUTPUT: true-if trade operation processed, false otherwise.      |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CExpert::ReverseLong(double price,double sl,double tp)
  {
   if(price==EMPTY_VALUE)
      return(false);
//--- get lot for reverse
   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);
  }