Liquidity_Predator/Utilities/M_ModifyPositionSL.mqh

53 lines
1.3 KiB
MQL5
Raw Permalink Normal View History

bool M_ModifyPositionSL(ulong ticket, double NewSL)
2026-01-31 07:59:15 +01:00
{
ResetLastError();
int Error;
PositionSelectByTicket(ticket);
Error = GetLastError();
if(Error != 0)
{
M_LogError("PositionSelectByTicket, Error=" + IntegerToString(Error));
2026-03-08 10:51:33 +01:00
return false;
}
string symbol = PositionGetString(POSITION_SYMBOL);
double tp = PositionGetDouble(POSITION_TP);
Error = GetLastError();
if(Error != 0)
{
M_LogError("PositionGetDouble(POSITION_TP), Error=" + IntegerToString(Error) + " ticket=" + IntegerToString(ticket));
return false;
}
2026-01-31 07:59:15 +01:00
MqlTradeRequest req;
MqlTradeResult res;
ZeroMemory(req);
ZeroMemory(res);
req.action = TRADE_ACTION_SLTP;
req.position = ticket;
req.symbol = symbol;
req.sl = NormalizeDouble(NewSL, _Digits);
2026-01-31 07:59:15 +01:00
req.tp = tp;
if(!OrderSend(req, res))
{
2026-02-11 19:29:28 +01:00
string Message = "Modify SL failed: " + IntegerToString(GetLastError());
M_LogError(Message);
2026-01-31 07:59:15 +01:00
return false;
}
if(res.retcode != TRADE_RETCODE_DONE)
{
2026-02-11 19:29:28 +01:00
string Message = "Modify SL retcode: " + IntegerToString(res.retcode);
M_LogError(Message);
2026-01-31 07:59:15 +01:00
return false;
}
M_LogInfo("Stoploss modified to " + DoubleToString(req.sl));
2026-01-31 07:59:15 +01:00
return true;
}