Exp_Bezier
This EA trades based on the Bezier curve smoothing indicator, generating buy signals when the curve slopes upward and sell signals when it slopes downward. It operates on a multi-timeframe basis, using a higher timeframe indicator to signal trades, and includes both entry and exit logic with configurable stop loss and take profit levels.
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 the Bezier curve smoothing indicator to identify trend direction, comparing three consecutive Bezier curve values to detect trend reversals. Entry conditions: a long position opens when Value[1]<Value[2] and Value[0]>Value[1], indicating the curve transitions from descending to ascending; a short position opens when Value[1]>Value[2] and Value[0]<Value[1], indicating the curve transitions from ascending to descending. Exit conditions rely on fixed stop loss and take profit levels in points, while also allowing opposite signals to close positions. Position sizing is controlled by the MM parameter, where negative values represent fixed lot sizes and positive values represent deposit share-based sizing. Money management is implemented through the included TradeAlgorithms.mqh file, which uses signal timestamps to prevent duplicate entries. The strategy employs multi-timeframe analysis, calculating indicator signals on a higher timeframe while executing trades on the current chart.
Strengths
- Multi-timeframe analysis helps filter noise and improve trade quality
- Bezier curve smoothing reduces lag compared to simple moving averages, providing more timely signals
- Flexible stop loss and take profit configuration supports a 1:2 risk-reward ratio
- Supports both deposit share-based and fixed lot position sizing modes
- New bar detection prevents duplicate trades within the same bar
Weaknesses
- Core logic depends on an external custom Bezier indicator; the EA cannot run if the indicator is missing
- No spread filter, which may result in unfavorable entries in high-spread environments
- Signal logic is overly simplistic, relying only on three consecutive curve value comparisons, prone to frequent false signals
- Default stop loss of 1000 points and take profit of 2000 points are excessively large and may not suit all instruments
- Lacks maximum position limits and consecutive loss protection mechanisms
Possible improvements
- Add a spread filter to avoid entering trades during high-spread conditions
- Add trend strength confirmation such as ADX or volume filtering to reduce false signals
- Embed the Bezier curve calculation directly into the EA to eliminate dependency on the external indicator
Risk assessment
Overall risk: Medium
- Dependency on external custom indicator; missing indicator causes initialization failure but does not prevent loading
- Default stop loss and take profit in points are very large, potentially causing excessive risk exposure on low-volatility instruments
- No maximum drawdown protection or consecutive loss limits
- Simultaneous opening and closing on signal reversal may cause position conflicts
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | -0.1 | Trade deposit fraction, negative for fixed lot |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Max price deviation in points (slippage tolerance) |
BuyPosOpen | true | Allow opening long positions |
SellPosOpen | true | Allow opening short positions |
BuyPosClose | true | Allow closing long positions |
SellPosClose | true | Allow closing short positions |
InpInd_Timeframe | PERIOD_H4 | Indicator calculation timeframe |
BPeriod | 8 | Bessel curve smoothing period |
T | 0.5 | Sensitivity ratio (0 to 1) |
IPC | PRICE_WEIGHTED | Price constant type |
SignalBar | 1 | Bar index for entry signal |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.