Exp_FigurelliSeries
This EA trades based on the Figurelli Series indicator, which uses a basket of Moving Averages with varying periods to determine trend direction. It opens positions at a specified start time and closes them either by opposing signals or at a specified stop time. Position sizing supports multiple margin modes including fixed lot, free margin, and balance-based calculations.
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 Figurelli Series indicator, which calculates multiple Moving Averages with varying periods (starting from iStartPeriod, incrementing by iStep, totaling iTotal MAs) to synthesize trend direction. Entry conditions: when the indicator value is greater than 0, a buy signal is generated; when less than 0, a sell signal is generated, but actual trade execution only occurs at the user-specified opening time (StartHour:StartMinute). Exit conditions include two mechanisms: closing on opposing indicator signals, and forced closing of all positions at the specified stop time (StopHour:StopMinute). Position sizing uses the TradeAlgorithms.mqh library functions, supporting both fixed lot sizes and dynamic lot calculation based on margin ratios. Money management is controlled via the MM parameter which sets the deposit share per deal, with multiple margin calculation modes available (FREEMARGIN, BALANCE, LOSSFREEMARGIN, LOSSBALANCE, LOT). The EA also implements stop loss and take profit parameters in points, along with a maximum price deviation setting to control slippage risk.
Strengths
- Uses a basket of multiple Moving Averages for trend determination, producing relatively robust signals that mitigate single MA lag effects
- Provides complete time window control to restrict trading to specified sessions, avoiding low-liquidity periods
- Supports multiple money management modes with stop loss and take profit settings, offering fairly comprehensive risk controls
Weaknesses
- Indicator signals are only executed at the specified opening time, potentially missing optimal entry points and limiting strategy timeliness
- The time-based closing logic has an operator precedence issue (tm.hour==StopHour && tm.min>=StopMinute || tm.hour>StopHour) that could cause unintended behavior
- Depends on a custom iCustom indicator; if the FigurelliSeries indicator is not properly installed, the EA cannot run, increasing deployment complexity
Possible improvements
- Fix the operator precedence issue in the time judgment logic by adding parentheses to ensure correct condition grouping
- Add spread filtering and minimum profit point checks to avoid entering trades when transaction costs are too high
Risk assessment
Overall risk: Medium
- Operator precedence issue in time-based closing logic could cause positions to be closed at unintended times
- Lack of spread filtering may result in unnecessary losing trades in high-spread environments
- Stop loss of 1000 points is relatively large and could cause significant single-trade losses in extreme market conditions
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
MM | 0.1 | Trading share ratio |
MMMode | LOT | Lot calculation method (free margin/balance/loss share/fixed lot) |
StopLoss_ | 1000 | Stop loss in points |
TakeProfit_ | 2000 | Take profit in points |
Deviation_ | 10 | Max allowed slippage in points |
BuyPosOpen | true | Allow opening long positions |
SellPosOpen | true | Allow opening short positions |
BuyPosClose | true | Allow closing long positions by indicator signal |
SellPosClose | true | Allow closing short positions by indicator signal |
StartHour | H08 | Position opening hour |
StartMinute | M00 | Position opening minute |
StopHour | HX23 | Position closing hour |
StopMinute | M59 | Position closing minute |
InpInd_Timeframe | PERIOD_M30 | Indicator timeframe |
iStartPeriod | 6 | Moving average initial period |
iStep | 6 | Moving average period step |
iTotal | 36 | Number of moving averages |
iMAType | MODE_EMA | Moving average smoothing type |
iMAPrice | PRICE_CLOSE | Moving average applied price |
SignalBar | 1 | Bar index for entry signal |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.