Breakout Strategy with Prop Firm Challenge Helper
A channel breakout EA that enters BuyStop/SellStop orders when price breaks above the highest high or below the lowest low of a configurable lookback period, with a trailing stop based on the opposite channel boundary. It includes a prop firm challenge helper that monitors daily loss limits and profit targets, automatically closing all positions and orders when either threshold is breached.
Open the interactive view (equity curve, symbol switch)Key facts
Backtest results (H1, about 1 year)
| Symbol | P&L | Annual | Max DD | Trades | Win rate | Sharpe | Recovery | Losing streak | Per trade | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | Not convertible yet |
Why this EA never traded: no entry rule survived the conversion.
Converted from MQL5 to Python and run with the same rules for every EA. Positions use MT5 lot sizes (100,000 units per FX lot, 100 oz per gold lot) with 1:100 leverage, one order at a time, and a stop-out below 10% of the starting balance. Sharpe is computed from the equity curve. Results marked as unreliable are shown for completeness only.
Blow-up risk: No blow-up pattern found
None of the usual blow-up patterns were found in the code, and the account was not stopped out in our backtests. That is not a guarantee: any EA can lose money.
High: stopped out in our backtest, or martingale/grid sizing without a stop loss. Elevated: martingale or grid sizing with a stop loss, or several positions at once without a stop loss. What the label means and what we found →
Strategy analysis
The strategy core is a Donchian-style channel breakout: it uses the highest high and lowest low over the past N bars to form a trading channel, going long when price breaks above the upper channel and short when it breaks below the lower channel. Entry conditions require no existing position in the same direction and that the pending order price is at least the broker's minimum stop level away from the current price, placing BuyStop or SellStop orders at the channel boundary plus/minus one tick. Exit conditions use a dual mechanism: a trailing stop that dynamically adjusts to the lowest low (for longs) or highest high (for shorts) over the exit period, and an immediate market close when price crosses against the trailing level. Position sizing is based on a risk-percentage model: it calculates lot size from RISK_PER_TRADE percent of equity divided by the per-lot stop-loss value estimated via OrderCalcProfit, then floors to the volume step and clamps to broker min/max limits while checking available margin. Money management includes a prop firm challenge helper that monitors equity against a profit target (isPassed) and daily accumulated losses against a loss limit (isDailyLimit), both triggering ClearAll to close all positions and cancel all pending orders when breached.
Strengths
- Risk-percentage position sizing model is sound and keeps per-trade risk controlled
- Built-in prop firm challenge helper automatically monitors profit targets and daily loss limits
- Flexible trailing stop mechanism using the opposite channel boundary as a dynamic stop level
- Accounts for broker trading constraints including stop levels, volume limits, and margin checks
- New bar detection prevents redundant trading within the same bar
Weaknesses
- ATR indicator handle is created fresh on every PositionManaging call instead of being cached in OnInit, risking resource leaks
- OrderManaging function always returns 0 due to the orders variable never being incremented, a logical flaw
- Daily loss calculation assumes history deals are reverse-chronological and uses break to exit, potentially missing earlier same-day trades
- ClearAll does not filter by magic number or symbol, potentially closing positions and orders from other EAs
- No spread filter, so breakout signals may be falsely triggered in high-spread environments
- Trailing stop adjustment threshold of 0.1*ATR is hardcoded and not configurable via input parameters
Possible improvements
- Create and cache the ATR indicator handle in OnInit and release it in OnDeinit to avoid resource leaks from repeated creation on every call
- Add magic number and symbol filtering to ClearAll to prevent accidentally closing other EAs' orders and positions
- Daily loss calculation should iterate through all history deals instead of relying on reverse-chronological break logic to ensure accurate same-day P&L accounting
Risk assessment
Overall risk: Medium
- ClearAll lacks magic number filtering, potentially closing all EAs' positions when prop firm challenge triggers, causing unintended losses
- ATR handle resource leak from repeated creation may exhaust memory during long-running sessions
- Daily loss limit calculation may be inaccurate, causing prop firm challenge protection to fail silently
- No spread filter or slippage protection, making the breakout strategy vulnerable to false signals in high-spread or low-liquidity conditions
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
BOT_NAME | Breakout Strategy with Prop Firm Challenge Helper | EA name identifier |
EXPERT_MAGIC | 1 | EA magic number identifying its orders and positions |
ENTRY_PERIOD | 20 | Entry channel lookback period in bars for high/low |
ENTRY_SHIFT | 1 | Entry channel start shift; 1 = previous bar |
EXIT_PERIOD | 20 | Exit channel lookback period for trailing stop calculation |
EXIT_SHIFT | 1 | Exit channel start offset |
isChallenge | false | Whether to enable prop firm challenge mode |
PASS_CRITERIA | 110100.0 | Target equity for passing the challenge |
DAILY_LOSS_LIMIT | 4500.0 | Maximum daily loss limit |
RISK_PER_TRADE | 1.0 | Risk per trade as percentage of equity |
TRADING_TIMEFRAME | PERIOD_H1 | Trading timeframe |
Similar Breakout EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.