mirror of
https://github.com/rithsila/MT5-EA-Sniper-Strategy.git
synced 2026-08-21 14:48:28 +00:00
75 lines
2.5 KiB
Plaintext
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;
|
|
}
|
|
}
|
|
}
|
|
//+------------------------------------------------------------------+
|