EA-15947 · Trend Following

Exp_ADXDMI

This EA trades based on the ADXDMI custom indicator, which appears to be an ADX/DMI-based trend following system with signal line crossovers. It opens buy positions when the indicator line crosses above the signal line and sell positions on the opposite crossover, with configurable stop loss and take profit levels.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskMedium
Blow-up riskLow
Rating★★☆☆☆
TypeTrading EA
TimeframesH4, H8, D1
IndicatorsADX, DMI
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

This EA employs a trend following strategy based on the custom ADXDMI indicator, with the core logic centered on crossover signals between the indicator line (Ind) and the signal line (Sign). Entry conditions: when the previous bar's Ind is above Sign (confirming an uptrend) and the bar before that had Ind below or equal to Sign (a fresh golden cross), a buy position is opened; conversely, when Ind crosses below Sign, a sell position is opened. Exit conditions are handled through independent buy/sell close flags that trigger when the trend reverses, closing the opposing position. Position sizing leverages the TradeAlgorithms.mqh library's MarginMode enumeration, supporting lot sizing based on free margin, balance, balance minus floating loss, or fixed lot size. Money management is controlled by the MM parameter (default 0.1) with MMMode defaulting to LOT (fixed lot). Stop loss is set to 1000 points and take profit to 2000 points, yielding a 2:1 reward-to-risk ratio. The EA uses the IsNewBar mechanism to ensure signals are calculated only once per bar, preventing duplicate entries, and the SignalBar parameter allows selecting which bar's signal to use for execution.

Strengths

  • Uses IsNewBar mechanism to prevent duplicate signal calculation and duplicate entries on the same bar, ensuring robust logic
  • Provides flexible money management modes supporting multiple margin calculation methods
  • Buy/sell open and close operations can be independently toggled, offering high flexibility
  • Stop loss and take profit settings are reasonable with a 2:1 reward-to-risk ratio favoring long-term positive expectancy
  • Indicator handle validation and BarsCalculated check ensure data integrity before processing

Weaknesses

  • Depends on a custom ADXDMI indicator whose source code is not included, making independent verification of its logic impossible
  • Stop loss of 1000 points and take profit of 2000 points are large fixed values that may not suit all instruments and lack ATR-based dynamic adjustment
  • No check for existing positions before opening new ones, which could lead to duplicate same-direction entries
  • No spread filter, potentially resulting in unfavorable fills in high-spread environments
  • Source code contains garbled text (Russian comments not displaying correctly), hurting readability and maintainability

Possible improvements

  • Add position checking logic to avoid duplicate same-direction entries when a position already exists
  • Change stop loss and take profit to ATR-based dynamic calculation to adapt to different instruments' volatility characteristics
  • Add a spread filter mechanism to pause opening new positions when the spread is too wide, protecting trade execution quality

Risk assessment

Overall risk: Medium

  • No existing position check may cause duplicate same-direction entries, amplifying risk exposure
  • Fixed stop loss and take profit points do not adapt to all instruments' volatility, potentially being too wide for low-volatility pairs
  • Dependency on an external custom indicator means abnormal indicator calculations could produce erroneous signals

Evaluation scores

Code quality3.0
Strategy logic3.0
Risk management2.0
Robustness3.0
Innovation2.0
Documentation1.0
Overall2.3

Parameters

ParameterDefaultDescription
MM0.1Money management ratio parameter
MMModeLOTPosition sizing mode
StopLoss_1000Stop loss in points
TakeProfit_2000Take profit in points
Deviation_10Maximum price deviation in points (slippage tolerance)
BuyPosOpentrueAllow opening long orders
SellPosOpentrueAllow opening short orders
BuyPosClosetrueAllow closing long orders
SellPosClosetrueAllow closing short orders
InpInd_TimeframePERIOD_H8Timeframe for indicator calculation
DMIPeriod14DMI indicator calculation period
Smooth10Signal line smoothing period
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.