ReverseLong
ReverseLong
ReverseLong
Performs reverse operation of a long position.
virtual bool ReverseLong(
double price, // price
double sl, // Stop Loss
double tp // Take Profit
)Parameters
- price
[in] Market entry price.
- sl
[in] Stop Loss price.
- tp
[in] Take Profit price.
Return Value
true - trade operation has been executed, otherwise - false.
Note
It gets the position reverse volume (LotReverse() method) and reverses a long position (Sell() method of Trade object) if trading volume is not equal to 0.
In the “hedging” mode of position accounting, position reversal is performed as the closure of the existing position and opening of a new opposite one with the remaining volume.
Implementation
//+------------------------------------------------------------------+
//| 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);
}Last updated on