EA-44056 · Utility

check

This EA monitors existing open positions and closes them when profit or loss reaches a user-defined percentage of the account balance. It does not open any new trades itself; it only acts as a risk/reward manager for positions opened manually or by other EAs. The profit and loss thresholds are calculated dynamically based on the current account balance.

Open the interactive view (equity curve, symbol switch)

Key facts

CategoryUtility
RiskMedium
Rating★☆☆☆☆
TypeUtility tool
TimeframesM1, M5, M15, M30, H1, H4, D1
Indicators—
Author—

Backtest results (H1, about 1 year)

Not backtested yet — this EA could not be converted automatically.

Strategy analysis

This EA's strategy concept is to act as a profit/loss monitor for existing positions rather than an independent trading strategy. Regarding entry conditions, the EA does not generate any entry signals itself; it only monitors positions opened manually or by other EAs. Exit conditions are: close a position when its profit reaches ProfitPercentage (default 2%) of account balance, or when its loss reaches RiskPercentage (default 1%) of account balance. For position sizing, the EA has no position calculation or opening logic whatsoever. In terms of money management, the profit/loss thresholds are dynamically calculated based on AccountBalance, but there is a critical bug — the profit/loss amount is in currency units while currentProfit is calculated using Point() which converts the price difference to point value, creating a unit mismatch that renders the logic fundamentally broken. Additionally, the EA lacks magic number filtering, which means it may inadvertently close positions belonging to other EAs.

Strengths

  • Simple and intuitive risk management logic with configurable profit/loss ratios
  • Dynamically calculates thresholds based on account balance, adapting to equity changes
  • Uses reverse iteration when looping through positions, avoiding index shift issues
  • Leverages standard library CTrade and CSymbolInfo for clean code structure

Weaknesses

  • Critical unit mismatch bug: currentProfit is calculated using Point() producing point values, while riskAmount/profitAmount are in currency units, making the comparison fundamentally incorrect
  • Lacks magic number filtering, managing all positions across all EAs instead of only its own
  • No entry logic whatsoever, purely dependent on external position opening, incomplete as a standalone EA
  • Does not account for commissions and swap fees, causing deviation between actual P&L and threshold calculations
  • Recalculates AccountBalance on every tick without caching, inefficient for high-frequency calls

Possible improvements

  • Fix the unit mismatch bug: use PositionGetDouble(POSITION_PROFIT) to directly obtain the monetary profit amount instead of manually calculating with Point()
  • Add a magic number input parameter to filter and manage only positions with the specified magic number, preventing accidental closure of other EAs' positions
  • Factor in commissions and swap fees in the P&L calculation to reflect true net profit/loss

Risk assessment

Overall risk: Medium

  • Unit mismatch causes the profit/loss monitoring to be completely non-functional, potentially failing to close positions when needed or incorrectly closing them when not needed
  • Lack of magic number filtering may accidentally close profitable positions from other EAs
  • Not accounting for commissions may cause actual losses to exceed the configured risk percentage

Evaluation scores

Code quality2.0
Strategy logic1.0
Risk management2.0
Robustness2.0
Innovation1.0
Documentation1.0
Overall1.5

Parameters

ParameterDefaultDescription
RiskPercentage1.0Risk percentage per trade; closes position at this loss ratio
ProfitPercentage2.0Profit percentage per trade; closes position at this profit ratio

Similar Utility EAs

Backtests are historical simulations and do not guarantee future results. Not financial advice.

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.