Trailing Stop after Partial Close

 

Hi there I'm trying to make a function to trail stop after partial close orders but this partial close is executed only one time cause there is an SL condition to run it. How this can be done?

   if(PositionGetDouble(POSITION_PRICE_CURRENT)>PClose&&
      (PositionGetDouble(POSITION_SL)<PositionGetDouble(POSITION_PRICE_OPEN)))  // <-- Condition
     {
      if(!trade.PositionClosePartial(iTicket,NormalizeDouble(PositionGetDouble(POSITION_VOLUME)*0.618,2),ULONG_MAX))
        {
         Print("PositionClosePartial error ",trade.ResultRetcode());
         return;
        }
      else
         if(TrailingStop==true)
           {
            PC_TrailingStop(); // <-- Trailing stop
           }
         else
            if(!trade.PositionModify(iTicket,PositionGetDouble(POSITION_PRICE_OPEN),PositionGetDouble(POSITION_TP)))  // <-- Breakeven
              {
               Print("PositionModify error ",trade.ResultRetcode());
               return;
              }
     }
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...