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
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 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
Parameters
| Parameter | Default | Description |
|---|---|---|
InpMagicNumber | 123456 | EA magic number for identifying this EA's orders |
InpBotName | LazyBot_V1 | Bot name, used for order comments |
Inpuser_lot | 0.01 | Fixed lot size |
Inpuser_SL | 5.0 | stop losspoints (Pips) |
InpAddPrice_pip | 0 | Pending order offset in pips from previous day high/low |
Inpuser_SLippage | 3 | Maximum allowedslippage(Pips) |
InpMax_spread | 0 | Maximum allowed spread (0=no limit) |
isTradingTime | true | Enable trading session restriction |
InpStartHour | 7 | Trading start hour |
InpEndHour | 22 | Trading end hour (not actually used in code) |
isVolume_Percent | false | Enable risk percentage position sizing |
InpRisk | 1 | Risk as percentage of balance (%) |
Similar Breakout EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.