ZZFiboTrader
This EA uses a custom ZigZag Fibonacci indicator to identify key Fibo price levels, then enters trades on breakouts confirmed by candlestick patterns. It manages open positions with a parabolic SAR-style trailing stop loss system, dynamically adjusting the stop as the trend progresses.
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 based on identifying support and resistance levels via ZigZag Fibonacci retracement levels, entering trades after breakout confirmation by candlestick patterns. Entry conditions require: price breaking through a Fibonacci level, the current bar direction aligning with the trade direction, the previous bar closing on the opposite side of the broken level, and the latest bar closing on the trade-direction side of the level. Exit conditions rely on a parabolic SAR-style trailing stop system, which uses an acceleration factor (AF) that starts at AFStep and increments each new bar up to AFCap, progressively tightening the stop loss. Position sizing is fixed at 1 lot with no dynamic lot calculation based on account equity or risk percentage. Money management only includes a margin check via the CheckMargin function to ensure sufficient free margin before opening a position, but lacks max drawdown controls, equity protection, or risk-based position sizing.
Strengths
- Combines Fibonacci level breakout with candlestick pattern confirmation for more reliable entries, reducing false breakout risk
- Employs a parabolic SAR-style trailing stop that dynamically protects profits as the trend develops, allowing winners to run
- Every trade has a stop loss set at entry, ensuring no naked positions without risk protection
- Performs a margin check before order placement, avoiding failed orders due to insufficient margin
Weaknesses
- Fixed 1-lot position sizing with no dynamic lot calculation, unable to adjust position based on account size or risk tolerance
- No take profit target; relies entirely on trailing stop for exit, which may cause frequent stop-outs in choppy/ranging markets
- Lacks spread filter and slippage protection, potentially leading to unfavorable fills during low liquidity periods
- OnTrade function only detects stop-loss closures to update CloseBarTime but does not handle other exit scenarios like manual closes
- Indicator buffer copy failures only print warnings but execution continues, potentially using stale or invalid data for trading decisions
Possible improvements
- Add dynamic position sizing based on account equity and risk percentage instead of fixed 1-lot trading
- Add spread filter and maximum slippage limits to avoid unfavorable fills during high-spread periods
- Add strict checks for indicator buffer copy failures, skipping trading logic when data is unavailable rather than continuing
- Add maximum drawdown protection and daily loss limits to enhance capital safety
- Improve OnTrade function to handle all types of position closure events, including manual and partial closes
Risk assessment
Overall risk: Medium
- Fixed 1-lot sizing cannot adjust to account risk dynamically, potentially over-leveraging small accounts
- Indicator data copy failures only print warnings but trading logic continues, potentially using invalid data
- No take profit target means trailing stop may not protect profits quickly enough in sharp reversals
- Stop-loss detection in OnTrade is not robust and may miss non-SL closure events
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
Breakout | 5 | Breakout depth in points; price must exceed Fibonacci level by this amount |
StopLoss | 0 | Extra stop loss buffer in points beyond bar high/low |
Retracement | 10 | Typical retracement size for ZigZag parameter |
MAPeriod | 50 | Moving average period for ZigZag smoothing |
Bound | 70 | Percentage difference for ZigZag determination |
LevelsColor | clrBlack | Fibonacci level line color |
LevelsWidth | 1 | Fibonacci level line width |
Level23 | false | Show 23.6% Fibonacci level |
Level38 | true | Show 38.2% Fibonacci level |
Level50 | true | Show 50.0% Fibonacci level |
Level61 | true | Show 61.8% Fibonacci level |
Level76 | false | Show 76.4% Fibonacci level |
AFStep | 0.01 | Parabolic SAR acceleration factor step |
AFCap | 0.4 | Parabolic SAR acceleration factor cap |
Similar Breakout EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.