EA-19643 · Mean Reversion

Arrows and Curves EA

This EA uses a custom indicator called 'arrows_curves' based on a reversal period (SSP) with channel and shift parameters to generate buy/sell signals. It operates on new bar formation, opening positions when no existing positions are present, and closing opposing positions or applying trailing stops when already in a position. The strategy is a reversal-based system with configurable stop loss, take profit, and trailing stop management.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskMedium
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
Indicatorsarrows_curves (custom)
Author—

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 core strategy of this EA is a mean reversion trading system based on reversal signals, using the custom indicator 'arrows_curves' to detect price reversal points. Entry conditions: open a buy when indicator buffer 0 at index 1 is non-zero, open a sell when indicator buffer 1 at index 1 is non-zero. Exit conditions include fixed stop loss and take profit, a trailing stop mechanism, and closing opposing positions when a reverse signal appears. Position sizing supports either fixed lots or dynamic lot calculation based on a risk percentage using the CMoneyFixedMargin class. Money management uses a risk percentage to calculate position size from free margin, and validates lot size via CheckVolume before order submission. The EA only executes trading logic on new bar formation, avoiding over-trading issues from tick-by-tick execution.

Strengths

  • Uses new bar filter to avoid tick-by-tick over-trading and reduce noise
  • Complete SL/TP and trailing stop functionality with a reasonably sound risk management system
  • Supports both fixed lot and risk-percentage position sizing modes for flexibility
  • Validates lot size and margin before order submission, reducing trade failure risk from insufficient funds
  • Uses magic number to identify own positions, supporting multiple EAs running simultaneously

Weaknesses

  • Depends on external custom indicator 'arrows_curves'; EA completely fails if the indicator file is missing
  • Symmetric SL/TP configuration (both 50 pips), not accounting for market volatility asymmetry
  • Trailing stop is disabled by default (InpTrailingStop=0), lacking dynamic protection in default config
  • When already in a position, only closes on opposite signal; no independent time-based or loss-threshold exit mechanism
  • ClosePositions uses Symbol() instead of m_symbol.Name(), inconsistent with other functions, potentially causing issues in multi-symbol operation

Possible improvements

  • Fix Symbol() to m_symbol.Name() in ClosePositions for consistency in multi-symbol operation
  • Add maximum position duration or max-loss-threshold exit mechanism to prevent prolonged losing positions
  • Add spread filter to avoid opening positions when spread is excessively wide, especially important for reversal strategies

Risk assessment

Overall risk: Medium

  • Dependency on external custom indicator; missing indicator causes OnInit to return INIT_FAILED, preventing EA startup
  • Symmetric SL/TP may not suit all market conditions; stop loss could be too tight in high-volatility environments
  • Symbol() vs m_symbol.Name() inconsistency bug in ClosePositions may cause close failures in multi-symbol setups
  • No maximum position count limit; CalculateAllPositions only distinguishes 0 vs non-zero, potentially allowing multiple same-direction positions

Evaluation scores

Code quality3.0
Strategy logic2.0
Risk management3.0
Robustness2.0
Innovation1.0
Documentation1.0
Overall2.0

Parameters

ParameterDefaultDescription
InpLots0.1Fixed lots (if <=0, uses risk percentage)
InpStopLoss50stop losspoints (0meansdisable)
InpTakeProfit50take profitpoints (0meansdisable)
InpTrailingStop0trailing stoppoints (0meansdisable)
InpTrailingStep5Trailing step in points (0 disables trailing stop)
Risk5Risk percentage per trade of free margin
SSP20Reversal period
Channel0Channel parameter
Ch_Stop30Stop loss channel parameter
relay10Offset value

Similar Mean Reversion 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.