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
Backtest results (H1, about 1 year)
| Symbol | P&L | Annual | Max DD | Trades | Win rate | Sharpe | Recovery | Losing streak | Per trade | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | -0.44% | -0.38% | 5.95% | 136 | 47.10% | -0.07 | -0.07 | 11 | −$0.32 | Reliable |
| GBPUSD | +5.40% | +4.68% | 4.18% | 137 | 51.10% | 0.97 | 1.29 | 7 | +$3.94 | Reliable |
| USDJPY | -1.50% | -1.31% | 6.05% | 138 | 43.50% | -0.28 | -0.25 | 8 | −$1.09 | Reliable |
| XAUUSD | -94.61% | -91.05% | 96.68% | 39 | 48.70% | -1.61 | -0.98 | 5 | −$242.59 | Account 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
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 62% | +1.28% 2026-03 | -2.95% 2026-04 |
| GBPUSD | 54% | +4.70% 2026-03 | -2.68% 2026-04 |
| USDJPY | 46% | +1.76% 2026-02 | -2.87% 2026-05 |
| XAUUSD | 15% | +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
Parameters
| Parameter | Default | Description |
|---|---|---|
StopLoss | 14 | Stop loss in points |
TakeProfit | 15 | Take profit in points |
MA1_Period | 75 | MA1 period (LWMA, based on Low price) |
MA2_Period | 85 | MA2 period (LWMA, based on Low price) |
MA3_Period | 5 | MA3 period (EMA, based on Close price) |
EA_Magic | 12345 | EA magic number |
Lot | 0.1 | Trading lot size |
Similar Trend Following EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.