Exp_Fractal_WeightOscillator
This EA trades based on a Fractal Weighted Oscillator that combines fractal dimension analysis with weighted price momentum to identify trend strength and direction. It generates buy/sell signals when the oscillator crosses dynamic threshold levels derived from fractal geometry. The system opens positions systematically when momentum shifts are confirmed by fractal structure changes.
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 | +3.73% | +3.23% | 3.44% | 57 | 42.90% | 0.85 | 1.08 | 5 | +$6.00 | Reliable |
| GBPUSD | -4.57% | -3.98% | 7.25% | 66 | 33.80% | -0.92 | -0.63 | 11 | −$7.39 | Reliable |
| USDJPY | +8.01% | +6.92% | 2.94% | 74 | 52.10% | 1.74 | 2.72 | 4 | +$11.18 | Reliable |
| XAUUSD | -41.39% | -35.69% | 56.03% | 78 | 49.40% | -0.48 | -0.74 | 6 | −$50.54 | Reliable |
Profitable on 2 of 4 markets with reliable results.
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.
Against the other Momentum EAs with a reliable result on the same market: EURUSD: better than 78% of 68 · GBPUSD: better than 24% of 66 · USDJPY: better than 93% of 68 · XAUUSD: better than 40% of 75
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 54% | +3.12% 2026-06 | -1.56% 2026-07 |
| GBPUSD | 46% | +1.50% 2026-01 | -4.66% 2026-02 |
| USDJPY | 54% | +2.70% 2026-07 | -0.91% 2026-05 |
| XAUUSD | 46% | +14.72% 2026-07 | -30.05% 2026-08 |
From the backtest equity curve, sampled about every two days; only reliable results.
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 core strategy of this EA is based on a Fractal Weighted Oscillator, which leverages the fractal structure characteristics of the market to measure self-similarity and complexity of price movements. Entry conditions are triggered when the oscillator value crosses the zero line or a dynamic threshold level — an upward crossover generates a buy signal while a downward crossover generates a sell signal, representing a momentum direction shift confirmed by fractal structure changes. Exit conditions rely on the oscillator's reverse crossover signal or fixed stop-loss and take-profit settings, with some implementations potentially including trailing stop logic. Position sizing employs either fixed lot sizes or dynamic lot calculation based on account equity percentage, though the specific implementation depends on parameter configuration. In terms of money management, the EA provides stop-loss parameters to control per-trade risk, but no volatility-based (e.g., ATR) adaptive stop mechanism was observed. The overall strategy falls into the momentum category, attempting to capture trend initiation phases signaled by fractal structure changes, and is best suited for periods with clear trending behavior.
Strengths
- Fractal dimension analysis provides a non-traditional perspective on market structure identification, complementing conventional technical indicators
- The weighted oscillator design smooths noisy signals and reduces frequent trades caused by false breakouts
- Oscillator crossover signal logic is clear and unambiguous, with well-defined entry rules suitable for backtesting verification
- Supports multi-timeframe analysis, enabling fractal structure change confirmation across different scales
Weaknesses
- Fractal dimension calculation is sensitive to parameters, and different period settings can lead to drastically different trading results
- Default stop-loss and take-profit are zero, exposing the user to unlimited loss risk if not manually configured
- Lacks market regime filtering mechanisms (e.g., volatility filter, trend strength filter), which may cause frequent stop-outs in ranging markets
- No dynamic position sizing linked to volatility was observed; fixed lots carry higher risk during high-volatility periods
- Fractal indicators may produce false signals during low-liquidity conditions or gap events
Possible improvements
- Add ATR-based adaptive stop-loss and take-profit mechanism so risk control dynamically adjusts with market volatility
- Add a market regime identification module (e.g., ADX trend strength filter) to trade only when trends are clear and pause entries in ranging markets
- Introduce a proportional risk position sizing model that automatically calculates lot size based on stop distance and account risk percentage
- Implement adaptive fractal period optimization logic that automatically adjusts calculation parameters based on recent market characteristics
Risk assessment
Overall risk: Medium
- Default stop-loss and take-profit are zero, leaving no risk floor protection if the user does not configure them
- Fixed lot position sizing is not linked to volatility or account risk percentage
- Fractal oscillator may generate consecutive false signals in ranging markets, leading to multiple stop-outs
- Lacks new bar check mechanism, potentially allowing repeated position openings within the same bar
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
Lots | 0.1 | Lot size per trade |
StopLoss | 0 | Stop loss in points, 0 means no stop loss |
TakeProfit | 0 | Take profit in points; close on cumulative profit |
FractalPeriod | 20 | Fractal calculation period |
WeightPeriod | 14 | Weighted momentum period |
OscThreshold | 0 | Oscillator threshold; 0 for zero-line crossover |
TrailingStop | 0 | Trailing stop distance in points |
MagicNumber | 12345 | Magic number; 0 to manage all orders |
TimeFrame | 0 | Trading timeframe, 0 to disable |
Similar Momentum EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.