mql5/Include/MasterOfPuppetsLib/Modifiers/DefendModifier.mq5
2026-03-06 19:04:08 +03:00

42 lines
1.9 KiB
MQL5

//+------------------------------------------------------------------+
//| 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 <MasterOfPuppetsLib\Modifiers\DefendModifier.mqh>
#include <MasterOfPuppetsLib\Utils.mqh>
#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
//+------------------------------------------------------------------+