EA-41732 · Breakout

LazyBot MT5_V1

LazyBot MT5_V1 is a daily breakout EA that places BuyStop and SellStop pending orders at the previous day's High and Low (with an optional offset). It uses a fixed stop loss in pips, a trailing stop mechanism, and optional risk-based lot sizing. Orders are placed once per day at a configurable start hour and old pending orders are deleted before placing new ones.

Open the interactive view (equity curve, symbol switch)

Key facts

CategoryBreakout
RiskMedium
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesD1
IndicatorsDaily High/Low
AuthorNguyen Quoc Hung

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Not convertible yet
GBPUSD0.00%0.00%0.00%0—————Not convertible yet
USDJPY0.00%0.00%0.00%0—————Not convertible yet
XAUUSD0.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 concept is a classic daily breakout system based on the previous day's D1 High and Low prices. Entry conditions are: a BuyStop pending order is placed at the previous day's High plus an optional pip offset, and a SellStop pending order is placed at the previous day's Low minus an optional pip offset, both triggered once per day. Exit conditions consist solely of a fixed stop loss in pips (Inpuser_SL) with no take profit set (TP=0), relying entirely on a trailing stop mechanism to lock in profits — when unrealized profit exceeds the stop loss pip distance, the stop loss is moved to maintain that distance from the current price. Position sizing supports both fixed lot size and a risk-percentage-based dynamic mode, where the dynamic mode calculates lots from free margin and risk percentage, rounding down to the nearest lot step multiple. Money management includes margin checks, volume range validation, and freeze level checks, but lacks maximum position limits or consecutive loss risk controls.

Strengths

  • Strategy logic is simple and clear, based on a classic daily breakout model that is easy to understand and verify
  • Comprehensive order validation: margin check, freeze level check, stops level check, and volume range validation
  • Orders are placed only once per day with trading hour control, avoiding overtrading
  • Supports both fixed lot and risk-percentage position sizing modes for flexibility
  • Includes a maximum spread filter to avoid unfavorable fills during high volatility

Weaknesses

  • No take profit set (TP=0), relying entirely on trailing stop which may not lock in sufficient profit in fast trending moves
  • InpEndHour parameter exists but is never used in code logic, making the trading time filter incomplete
  • Trailing stop logic is flawed: it only moves SL to breakeven vicinity when profit exceeds SL distance, not a true step-based trail
  • Risk-percentage sizing uses FreeMargin instead of Balance and doesn't account for existing position risk, potentially overleveraging
  • Both BuyStop and SellStop are placed simultaneously each day, risking double stop-outs in violent whipsaw markets

Possible improvements

  • Implement a true multi-step trailing stop mechanism that progressively moves SL at defined profit intervals rather than only moving it when profit exceeds the SL distance
  • Implement the InpEndHour trading end time filter in actual code logic, and add overnight position management
  • Add configurable take profit or ATR-based dynamic take profit to improve risk-reward ratio
  • Add maximum concurrent position limits and lot size reduction after consecutive losses
  • Use more reliable order matching in DeleteOldOrds instead of relying on comment string parsing which can fail

Risk assessment

Overall risk: Medium

  • Simultaneous bidirectional pending orders can cause double stop-outs in choppy markets
  • Risk-percentage sizing based on free margin rather than balance may lead to overleveraging as positions increase
  • Trailing stop only triggers when price moves favorably beyond the SL distance, providing no protection at smaller profits
  • Order identification relies on comment string parsing which can fail if comments are modified, risking incorrect order deletion

Evaluation scores

Code quality3.0
Strategy logic3.0
Risk management2.0
Robustness2.0
Innovation2.0
Documentation1.0
Overall2.2

Parameters

ParameterDefaultDescription
InpMagicNumber123456EA magic number for identifying this EA's orders
InpBotNameLazyBot_V1Bot name, used for order comments
Inpuser_lot0.01Fixed lot size
Inpuser_SL5.0stop losspoints (Pips)
InpAddPrice_pip0Pending order offset in pips from previous day high/low
Inpuser_SLippage3Maximum allowedslippage(Pips)
InpMax_spread0Maximum allowed spread (0=no limit)
isTradingTimetrueEnable trading session restriction
InpStartHour7Trading start hour
InpEndHour22Trading end hour (not actually used in code)
isVolume_PercentfalseEnable risk percentage position sizing
InpRisk1Risk as percentage of balance (%)

Similar Breakout 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.