Promart
This EA uses dual MACD crossover signals for entry and implements a Martingale position-sizing system that doubles the lot size after each loss. It opens buy or sell positions with fixed stop-loss and take-profit levels, reverting to signal-based entry only after a winning trade and doubling lots after a loss.
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.86% | +0.75% | 6.61% | 33 | 31.20% | 0.17 | 0.13 | 8 | +$1.99 | Reliable |
| GBPUSD | -8.70% | -7.60% | 12.68% | 62 | 26.20% | -1.20 | -0.69 | 13 | −$14.74 | Reliable |
| USDJPY | -5.73% | -5.00% | 8.72% | 68 | 30.90% | -0.87 | -0.66 | 12 | −$8.42 | Reliable |
| XAUUSD | +110.84% | +85.21% | 43.59% | 151 | 53.00% | 1.62 | 2.54 | 7 | +$73.40 | Reliable |
Profitable on 2 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 Martingale EAs with a reliable result on the same market: EURUSD: better than 88% of 16 · GBPUSD: better than 0% of 15 · USDJPY: better than 0% of 16 · XAUUSD: better than 81% of 16
Month by month
| Market | Months with a gain | Best month | Worst month |
|---|---|---|---|
| EURUSD | 62% | +2.67% 2026-09 | -2.64% 2026-02 |
| GBPUSD | 38% | +3.30% 2026-09 | -4.99% 2026-06 |
| USDJPY | 31% | +2.53% 2026-09 | -3.09% 2026-05 |
| XAUUSD | 62% | +74.62% 2026-08 | -26.53% 2026-05 |
From the backtest equity curve, sampled about every two days; only reliable results.
Blow-up risk: Elevated
- Increases the position size after losses (martingale)
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 dual MACD crossover signals to identify trend reversal points for entry, combined with a Martingale money management system. Entry conditions require MACD1 signal line to show a turning point (comparing t[0], t[1], t[2] to detect extrema) and MACD2 direction confirmation (comparing k[1] vs k[0]). Exit conditions rely on fixed stop-loss of 500 points and take-profit of 1500 points. Position sizing follows the Martingale principle, doubling lot size after each loss (controlled by the Ud parameter for doubling count), and reverting to the initial lot size after a win. Money management uses the DML parameter to set the initial lot scale and persists the Martingale state via global variables. When there are no historical orders, entries are purely signal-based; when historical orders exist, the system checks the last trade's profit/loss to decide whether to use signals or immediately reverse with a doubled lot.
Strengths
- Dual MACD confirmation reduces false signal entries
- Take-profit exceeds stop-loss (1500 vs 500), yielding a 3:1 reward-to-risk ratio where one win can cover multiple small losses
- Global variable persistence for Martingale state prevents loss of position management info on EA restart
- Custom OnTester metric provides meaningful backtest optimization criteria
Weaknesses
- Martingale position sizing causes exponential lot growth during consecutive losses, risking account blowup
- After a loss, entries are hardcoded reversals (poz=1 or poz=-1) without signal confirmation, lacking market direction judgment
- OrderSend return value is not checked, so failed orders go unnoticed
- The tick_volume>1 filter is unreliable as tick volume data varies significantly across brokers
- Only a single position is allowed (PositionSelect check), limiting strategy flexibility
Possible improvements
- Add a maximum Martingale doubling count limit and maximum lot cap to prevent unlimited doubling and account blowup
- After a loss, still check MACD signals before deciding direction instead of blindly reversing
- Add OrderSend return value checking and error retry logic
- Replace tick_volume filter with a new bar check (isNewBar) to avoid duplicate signals
Risk assessment
Overall risk: Dangerous
- Martingale position sizing causes exponential lot growth during consecutive losses,easilyleading toaccount blow-up
- Post-loss entries are blind reversals without signal confirmation, essentially gambling
- No safety mechanism such as maximum lot size or maximum drawdown limit exists
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
DML | 1000 | Initial Martingale lot scale parameter |
Ud | 1 | Martingale doubling count |
Stop | 500 | Stop-loss in points |
Tp | 1500 | Take-profit in points |
Slipage | 50 | Allowed slippage |
MACD1Fast | 5 | MACD1 fast line period |
MACD1Slow | 20 | MACD1 slow line period |
MACD2Fast | 10 | MACD2 fast line period |
MACD2Slow | 15 | MACD2 slow line period |
Similar Martingale EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.