Close all open positions by profit

hi i made this function to close trades when the amount of profit in the open positions crosses a certain threshold the bot closes all open positions cause i noticed in the back test that EA was had alot of equity it was holding onto but was not closing the trades.

```bool CloseAll () {

bool result = true;

int count  = PositionsTotal();
for (int i=count-1; i>=0; i--){
ulong ticket = (int) PositionGetTicket(i);
if (ticket>0) {
if ( (InpThisSymbol==false || PositionGetString(POSITION_SYMBOL)==Symbol()) && ( PositionGetInteger(POSITION_MAGIC)==MagicNum) ) {
}
} else {
result = false;
}
}
return(result);

}

void CloseByEquity () {

if (ACCOUNT_PROFIT >= ACCOUNT_BALANCE* 10/100){
return;
}

int retries = 10;
for (int i=0; i<retries ; i++){
if (CloseAll()){
return;
}

}
return;
}```

but it does not seem to be working properly cause its still not closing the trades in the backtest when the threshold is passed.

 Mihlali Dlulane: but it does not seem to be working properly ` if (ACCOUNT_PROFIT >= ACCOUNT_BALANCE* 10/100){` Why do you expect this to work correctly? ` if ( 2 >= 0 * 10/100){`

Use the constants to get the actual values.

William Roeder #:
 Mihlali Dlulane: but it does not seem to be working properly Why do you expect this to work correctly?

Use the constants to get the actual values.

I thought that using accountbalance and accountprofit would give me the amounts
```void CloseByEquity () {
const double Balance = ACCOUNT_BALANCE;
const double Profit  = ACCOUNT_PROFIT;
if ( Profit >= Balance * 10/100){
return;
}

int retries = 10;
for (int i=0; i<retries ; i++){
if (CloseAll()){
return;
}

}
return;
}```

so i need to set them like this instead ?

 Mihlali Dlulane #: so i need to set them like this instead ? ``` const double Balance = ACCOUNT_BALANCE; const double Profit  = ACCOUNT_PROFIT;``` Same as the previous post. ``` const double Balance = 0; const double Profit  = 2;```

What part of “Use the constants to get the actual values.” was unclear?

For the function AccountInfoDouble()

ENUM_ACCOUNT_INFO_DOUBLE

Identifier

Description

Type

ACCOUNT_BALANCE

Account balance in the deposit currency

double

ACCOUNT_PROFIT

Current profit of an account in the deposit currency

double

William Roeder #:
 Mihlali Dlulane #: so i need to set them like this instead ? Same as the previous post.

What part of “Use the constants to get the actual values.” was unclear?

sorry i didnt read the documentation,
Thanks for the help
```void CloseByEquity () {
const double Balance = AccountInfoDouble(ACCOUNT_BALANCE);
const double Profit  = AccountInfoDouble(ACCOUNT_PROFIT);
if ( Profit >= Balance * 10/100){
return;
}

int retries = 10;
for (int i=0; i<retries ; i++){
if (CloseAll()){
return;
}

}
return;
}```

This is how is should be used now ?

Reason: