EA-138 · Trend Following

Puria

Puria is a trend-following EA that uses a triple Moving Average crossover system combined with MACD confirmation to generate buy and sell signals. It enters long when the fast EMA(5) crosses above two slow LWMA(75,85) with MACD above zero, and enters short on the inverse condition. Positions are managed with fixed Stop Loss and Take Profit levels, and only one position at a time is allowed.

Open the interactive view (equity curve, symbol switch)

Key facts

RiskMedium
Blow-up riskHigh
Rating★★☆☆☆
TypeTrading EA
TimeframesM15, H1, H4
IndicatorsEMA, LWMA, MACD
AuthorAM2 Group.

Backtest results (H1, about 1 year)

SymbolP&LAnnualMax DDTradesWin rateSharpeRecoveryLosing streakPer tradeStatus
EURUSD-0.44%-0.38%5.95%13647.10%-0.07-0.0711−$0.32Reliable
GBPUSD+5.40%+4.68%4.18%13751.10%0.971.297+$3.94Reliable
USDJPY-1.50%-1.31%6.05%13843.50%-0.28-0.258−$1.09Reliable
XAUUSD-94.61%-91.05%96.68%3948.70%-1.61-0.985−$242.59Account stopped out

Profitable on 1 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 Trend Following EAs with a reliable result on the same market: EURUSD: better than 54% of 95 · GBPUSD: better than 85% of 95 · USDJPY: better than 37% of 95 · XAUUSD: better than 9% of 96

Month by month

MarketMonths with a gainBest monthWorst month
EURUSD62%+1.28% 2026-03-2.95% 2026-04
GBPUSD54%+4.70% 2026-03-2.68% 2026-04
USDJPY46%+1.76% 2026-02-2.87% 2026-05
XAUUSD15%+11.85% 2025-12-95.30% 2026-02

From the backtest equity curve, sampled about every two days; only reliable results.

Blow-up risk: High

  • Hit a stop-out in our backtest (equity below 10%) on XAUUSD

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 triple moving average crossover strategy as its core concept, combined with MACD confirmation for trend validation. Entry conditions for a buy require EMA(5) to be above both LWMA(75) and LWMA(85), the previous bar's close price above EMA(5), and MACD above zero; sell conditions are the exact inverse. Exit conditions rely entirely on fixed Stop Loss and Take Profit levels, with no trailing stop or other dynamic exit mechanisms. Position sizing uses a fixed lot size approach without any dynamic adjustment based on account balance or risk percentage. Money management is noticeably deficient—there is no maximum drawdown control, no risk-based position sizing, and the relatively small SL/TP values (14/15 pips) combined with the one-position-at-a-time constraint limit both risk and reward potential.

Strengths

  • Uses multiple indicator confirmation combining EMA, LWMA, and MACD filter to reduce false signals
  • Every trade has a fixed Stop Loss and Take Profit, keeping risk bounded
  • Only one position allowed at a time, preventing overtrading and position stacking
  • New bar detection mechanism prevents repeated entries within the same bar

Weaknesses

  • Fixed lot sizing with no dynamic position adjustment based on account risk percentage
  • Small SL/TP values (14/15 pips) make the strategy vulnerable to market noise and spread widening
  • No trailing stop mechanism to lock in floating profits as the trade moves favorably
  • PositionSelect uses Symbol only, causing conflicts when multiple EAs run on the same instrument
  • No spread filter, which is problematic given the tight stop loss that can be easily overcome by spread expansion
  • MA period parameters are hardcoded in OnInit (75, 85, 5) while input parameters (MA1_Period, MA2_Period, MA3_Period) are never used in indicator creation

Possible improvements

  • Fix the unused input parameters by replacing hardcoded values (75, 85, 5) in iMA calls with MA1_Period, MA2_Period, and MA3_Period
  • Add dynamic position sizing based on account balance and risk percentage to automatically adjust lot sizes
  • Implement a trailing stop feature that moves the stop loss to lock in profits after a threshold is reached
  • Add a spread filter to skip trade signals when the spread exceeds a certain percentage of the stop loss

Risk assessment

Overall risk: Medium

  • Input parameters do not match actual indicator creation—user parameter changes have no effect, representing a critical logic error
  • Small stop loss (14 pips) is easily triggered by market noise and spread widening
  • PositionSelect uses Symbol instead of MagicNumber, causing interference when multiple EAs run on the same instrument
  • No slippage or requote handling mechanism, and no retry logic when OrderSend fails

Evaluation scores

Code quality2.0
Strategy logic3.0
Risk management2.0
Robustness2.0
Innovation1.0
Documentation2.0
Overall2.0

Parameters

ParameterDefaultDescription
StopLoss14Stop loss in points
TakeProfit15Take profit in points
MA1_Period75MA1 period (LWMA, based on Low price)
MA2_Period85MA2 period (LWMA, based on Low price)
MA3_Period5MA3 period (EMA, based on Close price)
EA_Magic12345EA magic number
Lot0.1Trading lot size

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.