//+------------------------------------------------------------------+ //| DefendModifier.mq5 | //| Copyright 2026, MasterOfPuppets | //| https://forge.mql5.io/masterofpuppets/mql5 | //+------------------------------------------------------------------+ #ifndef MASTER_OF_PUPPETS_LIB_DEFEND_MODIFIER_MQ5 #define MASTER_OF_PUPPETS_LIB_DEFEND_MODIFIER_MQ5 #include #include #property copyright "Copyright 2026, MasterOfPuppets" #property link "https://forge.mql5.io/masterofpuppets/mql5" //+------------------------------------------------------------------+ //| Modify function | //+------------------------------------------------------------------+ void DefendModifier::Modify() const { if(m_withExpert && m_tradeContext.GetPositionInfo().Magic() != m_traderContext.GetMagic()) { return; } double deltaStopLoss = 0.0; switch(m_tradeContext.GetPositionInfo().PositionType()) { case ENUM_POSITION_TYPE::POSITION_TYPE_BUY: deltaStopLoss = m_traderContext.GetStopLoss(); break; case ENUM_POSITION_TYPE::POSITION_TYPE_SELL: deltaStopLoss = -m_traderContext.GetStopLoss(); break; } double stopLoss = IsZero(m_tradeContext.GetPositionInfo().StopLoss()) ? m_tradeContext.GetPositionInfo().PriceOpen() : m_tradeContext.GetPositionInfo().StopLoss(); m_tradeContext.GetTrade().PositionModify(m_tradeContext.GetPositionInfo().Ticket(), m_tradeContext.GetSymbolInfo().NormalizePrice(stopLoss + deltaStopLoss), m_tradeContext.GetPositionInfo().TakeProfit()); } #endif //+------------------------------------------------------------------+