.png)






Full Review – TrendPullback ATR Pro
Bot name: UltimateActivationAwareBot – TrendPullback ATR Pro
Primary market: US500 (S&P 500 index CFD)
Reference leverage: 1:500
Style: Trend-following with deep pullbacks and advanced risk/position management.
Need help tuning this cBot or want custom optimisation ideas for your broker, symbol or timeframe?
1. Core idea
TrendPullback ATR Pro is a multi-filter trend–pullback system designed to:
- trade with the structural trend (not against it),
- wait for meaningful pullbacks rather than chasing impulsive candles,
- adapt to changing volatility using ATR,
- avoid extended extremes using RSI.
The logic:
- Trend structure via EMAs (20/50/200)
- Long: price above EMA200 and EMA20 > EMA50 > EMA200
- Short: price below EMA200 and EMA20 < EMA50 < EMA200
- Momentum confirmation via ADX + DI+/DI−
- ADX above a minimum threshold (no flat ranges),
- DI+/DI− aligned with the trade direction.
- Pullback depth measured in ATR
- Price must pull back towards EMA20 by at least
PullbackAtrK × ATR. - That filters out tiny, noisy dips.
- Price must pull back towards EMA20 by at least
- RSI as a “health” filter
- Avoids entering at extreme overbought/oversold without any normalization.
- Entry trigger
- either a cross back above/below EMA20,
- or a breakout/breakdown of the previous bar.
🔎 Important note:
Optimisation and validation have been done primarily on US500 with 1:500 leverage.
Achieving robust results on an equity index like US500 is much harder than on gold (XAUUSD), which is commonly easier to optimise and easier to overfit.
This bot has therefore been tuned with indices as the main testbed, not just a “gold-only” environment.
2. Practical usage & workflow
Step 1 – Always start on demo
- Start with US500 M30 or H1.
- Use RiskPerc ≈ 0.25–0.50% per trade.
- Aim for at least 3–6 months of historical data in backtest, then demo forward test.
Step 2 – Optimise in blocks
Don’t tweak everything at once. Work in layers:
- Regime & trend filters (EMA, ADX, ATR percentile)
Ensure the bot avoids obvious sideways chop. - Entry logic (pullback + trigger)
Validate that entries come after genuine pullbacks, not at random. - Trade management (SL/TP, partials, BE, trailing, Aggressive)
Focus on R-multiples and drawdown profile, not only net profit.
Step 3 – US500 vs Gold vs other assets
- For US500, typical starting ranges (to be tested):
- AtrSLmult: 1.8–2.5
- AtrTPmult: 2.5–3.5
- PullbackAtrK: 0.20–0.35
- RiskPerc: 0.25–0.5
- For gold (XAUUSD):
- the same logic works in principle,
- but ATR and pip scales are very different.
→ always do separate optimisation per instrument.
Step 4 – Aggressive Mode
- AggressiveMode = true:
- disables partial TP,
- activates trailing only after
TrailStartR × R.
- Good for:
- maximizing runners,
- traders comfortable with equity swings.
- Not recommended if:
- you dislike drawdowns,
- you already run high leverage/high risk per trade.
3. Parameter breakdown with usage tips
3.1. Base, days & session
- Label
Group label for all positions from this bot; useful if you run multiple systems on the same symbol. - SignalTF
Timeframe driving signals & indicators.
Recommended: M30 or H1 on US500. - AllowLong / AllowShort
You can disable one side if backtests show strong asymmetry (for example, long-only on indices). - OneTradePerBar
True = cleaner behaviour, avoids multiple stacked entries on a single bar. - Days & Session filters
- Enable only the days you want (Mon–Fri).
- Session start/end = intraday time window (server time).
- Useful to avoid low-liquidity or overnight periods.
- MaxSpreadPips
More relevant for FX; still safe to keep a max spread cap for indices.
3.2. Volume / Risk management
- UseRiskPositionSizing = true
Recommended: the bot uses SL in pips and account balance to compute position size. - RiskPerc
- Conservative: 0.25%
- Standard: 0.50%
Going above 1% on 1:500 leverage can be very aggressive.
- FixedVolumeUnits
Only used ifUseRiskPositionSizing = false.
Good for quick tests, but less robust long term than risk-based sizing.
3.3. SL/TP: ATR-based vs fixed pips
- UseAtrStops = true
ATR SL/TP adapt to volatility; the same settings work across different volatility regimes. - AtrSLmult / AtrTPmult
- 2×ATR SL is a classic “give some room, not absurd” level.
- 3×ATR TP gives ~1.5R if you use pure SL/TP.
Combine with partials & trailing for more nuance.
- UsePipsStops
If enabled, pips-based SL/TP override ATR.
Use only if you know the pip value and want fixed numeric stops. - SlLongPips / TpLongPips – long-specific
- SlShortPips / TpShortPips – short-specific
This separation is great if your tests show asymmetry (e.g. indices often behave differently on panic shorts vs grindy longs).
3.4. ATR trailing stop (long vs short)
- UseAtrTrailLong / AtrTrailLongMult
- UseAtrTrailShort / AtrTrailShortMult
You can:
- enable ATR trailing only for long or only for short,
- use different multipliers: e.g. tighter trailing on shorts if they tend to snap back.
Multiplier logic:
- 1.0–1.5 → tight trailing; protects quickly, but cuts winners early.
- 2.0–3.0 → loose trailing; lets trades breathe, but tolerates deeper retracements.
In Aggressive Mode, trailing only starts once profit exceeds TrailStartR × R.
3.5. Partial TP & time-based exit
- PartialAtR
How many R of profit before a partial close.
1.0 is a common choice: lock some gain at 1R, let the rest run. - PartialPercent
30–60% is usually a good range. 50% is a simple default. - MaxBarsInTrade
Maximum number of signal bars to keep a trade open. - 0 = off.
- For M30, 50 bars ≈ several days; can be used as a “timeout” so trades don’t drift indefinitely.
3.6. Break-even per side (long / short)
- UseBreakEven, UseBreakEvenLong, UseBreakEvenShort
Master and per-side toggles for BE logic. - BeLongTriggerPips / BeShortTriggerPips
Profit (in pips) required before moving SL to BE. - Too low → you get stopped at BE constantly.
- Too high → BE has little psychological value.
- BeLongOffsetPips / BeShortOffsetPips
Small positive offset helps to cover spread + commissions (e.g. 1–2 pips).
3.7. Aggressive Mode
- AggressiveMode
- disables partial TP,
- activates trailing only after
TrailStartR × R.
- TrailStartR
Example: 1.5 or 2.0
Only once the trade is up 1.5R/2R will the trailing SL start to follow price.
Use this mode for more directional, high-conviction environments or lower base risk per trade.
3.8. Regime filters
- UseEmaTrend, EmaFastPeriod, EmaMidPeriod, EmaSlowPeriod
EMA stack defines the trend regime. Turning this off makes the system more “always-on” and generally noisier. - UseAdx, AdxPeriod, AdxMin
ADX filters out low-trend phases.
Typical ADXMin: 18–20+. - UseRsi, RsiPeriod, RsiOB, RsiOS
RSI prevents entries when the move is already at extreme levels.
The bot also checks RSI slope (improvement vs previous bar). - PullbackAtrK
Minimum pullback depth vs EMA20 in ATR units.
Higher values → fewer but deeper pullbacks.
3.9. Volatility & post-squeeze filters
- UseAtrPct, AtrPctLookback, AtrPctMin
Use this to trade only when current ATR is above a certain percentile of recent history.
Example: AtrPctMin = 0.6 → ignore the bottom 40% of quiet volatility. - UsePostSqueeze, BbPeriod, SqueezePct, ExpansionPct
Classic “Bollinger Band squeeze then expansion” logic: - first a volatility compression (squeeze),
- then an expansion, after which the bot is allowed to trade.
3.10. Telemetry
- WriteCsv, CsvPath
If true, the bot logs status to CSV (equity, daily PnL, consecutive losses, etc.).
Perfect for external analysis in Excel/Python, especially combined with the Rolling Start Analysis to test robustness from multiple starting dates.
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.png)
.png)
.png)
 (1).png)
.png)
.jpg)
.png)
.png)
.png)
.png)
.png)
.png)






.jpeg)








