EA-1641 · Trend Following

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

RiskMedium
Blow-up riskLow
Rating★★★☆☆
TypeTrading EA
TimeframesM30, H1, H4
IndicatorsFigurelliSeries, EMA
AuthorCopyright © 2013, Nikolay Kositsin

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD0.00%0.00%0.00%0—————Not convertible yet
GBPUSD0.00%0.00%0.00%0—————Not convertible yet
USDJPY0.00%0.00%0.00%0—————Not convertible yet
XAUUSD0.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

Code quality3.0
Strategy logic3.0
Risk management3.0
Robustness2.0
Innovation3.0
Documentation2.0
Overall2.7

Parameters

ParameterDefaultDescription
MM0.1Trading share ratio
MMModeLOTLot calculation method (free margin/balance/loss share/fixed lot)
StopLoss_1000Stop loss in points
TakeProfit_2000Take profit in points
Deviation_10Max allowed slippage in points
BuyPosOpentrueAllow opening long positions
SellPosOpentrueAllow opening short positions
BuyPosClosetrueAllow closing long positions by indicator signal
SellPosClosetrueAllow closing short positions by indicator signal
StartHourH08Position opening hour
StartMinuteM00Position opening minute
StopHourHX23Position closing hour
StopMinuteM59Position closing minute
InpInd_TimeframePERIOD_M30Indicator timeframe
iStartPeriod6Moving average initial period
iStep6Moving average period step
iTotal36Number of moving averages
iMATypeMODE_EMAMoving average smoothing type
iMAPricePRICE_CLOSEMoving average applied price
SignalBar1Bar index for entry signal

Similar Trend Following EAs

Backtests are historical simulations and do not guarantee future results. Not financial advice.

Get the weekly Arena report

One email a week: ranking changes, new signals and new research. No spam; unsubscribe any time.