Files
MT5-EA-Sniper-Strategy/Include/Nkanven/TheChallenger/CloseTransactions.mqh
T

75 lines
2.5 KiB
Plaintext

//+------------------------------------------------------------------+
//| CloseTransactions.mqh |
//| Copyright 2021, Nkondog Anselme Venceslas |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Nkondog Anselme Venceslas"
#property link "https://www.mql5.com"
CTrade trade;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseTransactions()
{
bool result = true;
int cts = PositionsTotal();
ulong theTicket;
double positionProfit = 0.0;
if(cts > 0)
{
for(int i = cts-1; i>=0; i--)
{
ulong ticket = PositionGetTicket(i);
if(PositionSelectByTicket(ticket))
{
if(PositionGetInteger(POSITION_MAGIC)==InpMagicNumber)
{
if(positionProfit > PositionGetDouble(POSITION_PROFIT))
{
positionProfit = PositionGetDouble(POSITION_PROFIT);
theTicket = ticket;
}
}
}
else
{
Print("Error (", GetLastError(), ") while selecting position by ticket");
}
}
if(gEmergencyClose)
{
if(!trade.PositionClose(theTicket))
Print("Error (", GetLastError(), ") while deleting all buy positions");
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void drawdownWatcher()
{
double amountDiff, equity, balance, percentDiff;
balance=AccountInfoDouble(ACCOUNT_BALANCE);
equity=AccountInfoDouble(ACCOUNT_EQUITY);
gEmergencyClose = false;
if(equity < balance)
{
amountDiff = balance - equity;
percentDiff = (amountDiff*100)/balance;
Print("amountDiff ", amountDiff, " percentDiff ", percentDiff, " InpMaxDrawdown ", InpMaxDrawdown);
if(InpMaxDrawdown < percentDiff)
{
gEmergencyClose = true;
}
}
}
//+------------------------------------------------------------------+