EMA Pullback ATR
EMA pullback in ADX-confirmed trend with ATR stop/R target.
EURUSD · H4 · Original trading hours
Source + EX5 + selected preset + checksums. Strategy Tester research build.

Current EA identity and test status
Reviewed 23 September 2026. Separate legacy variant; profitability not established.
Prior full report contains 207 trades with 6% real-tick coverage. Approved-data performance remains unverified.
Which rules and EA belong together?
Selected H 4 preset: EMA 20/100, ADX 14 at least 15, ATR 14 stop at 2 ATR, fixed 3 R target and 0.25% balance risk. Source defaults are EMA 50/200, ADX 20, 2 R and 0.50%. A long requires prior-bar low and close at/below the fast EMA, then a completed close above it in the confirmed trend; short conditions mirror this.
The library uses EMA 20/EMA 200, a different pullback specification and staged exits. Loading the legacy selected set does not reproduce the library EA.
Library strategy 4: EMA20 Pullback in EMA200 Trend has its own EA download and evidence. Use the download on this legacy page only with the legacy rules and preset described here.
The older reports below use incomplete broker ticks and fallback data. Their old classifications and returns are historical observations, not validation on the ten-year approved bid/ask release. A profitable sample, zero-trade report or functional diagnostic is not an after-cost profitability qualification.
February 2024 native functionality observation
Exact selected public binary; functionality only, not profitability. The unchanged EURUSD.TFQ1 H4 preset ran from 1 February 2024 inclusive to 1 March exclusive at broker UTC+2 with USD 10,000, 1:100 leverage, real-tick Model 4, and zero added commission and delay. It processed 1,706,310 ticks and 126 chart bars.
Native ledger: 2 entry deals, 2 exit deals, 0 partial exit deals and 0 tester-end exit deals. First entry: 2024.02.02 16:00:00 broker; sell in; 0.03 lots at 1.08071 (TF EMA Pullback). First exit: 2024.02.22 10:15:01 broker; buy out; 0.03 lots at 1.08799 (sl 1.08794). Native exit-comment categories: other_out_deals=0; sl=2; tester_forced=0; tp=0.
Native cash before any extra-cost scenario: price P/L -44.16, commission 0.00, recorded swap -0.54; balance 10000.00 to 9955.30. Historical swap validity is unverified. These observed SL/TP/comment paths do not prove every source branch, stop path, sizing path, restart behavior, or durable profitability.
Execution limitation retained. One initial entry request was rejected; it created no market deal and is not counted as a fill. At the initial broker midnight tick the tester rejected a sell request as market closed. No fill/deal followed this request; later February entries do execute. The source uses one evaluation per new H4 bar and has no explicit symbol-trading-session precheck. This observation alone does not prove which symbol session/quote condition caused the server rejection. It is retained in the result, not erased, retried or counted as a fill.
Tester boundary: The native tester omitted 3 approved source ticks in the final broker second of 29 February 2024; All native cases exactly match source count with the final broker second excluded. This is a bounded tester boundary discrepancy, not a missing source file; no claim of complete inclusion of that second.
Indicator history was available to the tester, but warmup quality and every seed path were not independently audited.
Older broker reports below remain historical and use their own data assumptions. This approved-data month is a separate, hash-bound functional diagnostic.
Selected configuration: rolling-year net EUR -35.14; full-period net EUR -13.98. Negative confirmation is retained in the archive.
How this strategy works
- Use completed H4 bars. A long trend requires EMA20 > EMA100, close > EMA100 and ADX14 ≥ 15; short conditions are mirrored.
- For a buy, the earlier closed bar touches EMA20 and closes at or below it, then the latest closed bar reclaims above EMA20. Reverse those conditions for a sell.
- Use a stop at 2 × ATR14, subject to the broker minimum, and a target at 3 times that initial risk distance. Selected RiskPercent is 0.25%.
- Spread, daily equity loss and one-position-per-symbol gates must pass. The selected preset keeps the original hour filter disabled.
The selected configuration uses EURUSD / H4, variant s0. All indicator and session values used by this build are listed in the preset editor.
Measured backtests


| Period / model | Net EUR | PF | Trades | Equity DD | Native report |
|---|---|---|---|---|---|
| Development 2019.01.01 → 2024.01.01 M1 OHLC screening | +112.03 | 1.05 | 136 | 2.59% | MT5 report |
| Validation 2024.01.01 → 2025.01.01 M1 OHLC screening | +196.95 | 1.46 | 28 | 1.81% | MT5 report |
| 12-month review 2025.09.01 → 2026.09.01 Real-tick mode + fallback | -35.14 | 0.92 | 24 | 2.83% | MT5 report |
| Long review 2019.01.01 → 2026.09.21 Real-tick mode + fallback | -13.98 | 1.00 | 207 | 3.32% | MT5 report |
Adjust the strategy preset
MT5 also validates parameter combinations and may reject incompatible inputs. Session modes use local London, New York and Tokyo hours. Broker-time conversion uses the configured winter UTC offset and DST rule. A session filter limits eligible entries; it does not change the underlying strategy signal or create trades where none qualify. Policy 2 also closes before the chosen session ends.
Install and reproduce the test
- Download and extract the ZIP. Copy
TF_EMA_Pullback_ATR_Assistant_Sessions.ex5intoMQL5/Experts/TradeForexin the MT5 data folder. Keep MQ5 and all MQH headers together if compiling. - Open Strategy Tester, select the EA, EURUSD and H4. The build rejects normal chart execution.
- Load the included
selected-test.setor a preset downloaded above. Symbol, chart timeframe, dates, deposit and tick model are tester settings outside the .set file. - For confirmation choose “Every tick based on real ticks”, EUR 10,000, 1:30 leverage and 100 ms delay. Use 2025.09.01–2026.09.01 or 2019.01.01–2026.09.21; retain the generated report and Journal.
- Allow MT5 to obtain the available broker history. Compare actual date coverage, costs, trade count and history quality; a later download or different broker server can change the result.
Read the general MT5 installation guide; this package’s tester-only restriction takes precedence over normal chart-activation steps.
What these results can establish
- Tested values are research settings, not a profitability claim.
- Broker history, spread, swaps and fills can change outcomes.
- These are retrospectively selected historical tests. Development, validation and review periods overlap previously inspected history; this is not a fresh independent holdout.
- The balance plots show realized outcomes. Equity drawdown includes floating positions and must not be inferred from the balance line alone.
- Available native ticks and fallback are accepted. Missing ticks, historical spread paths and cost assumptions limit confidence; profitable history does not guarantee future profitability.
- RiskPercent is an entry-sizing estimate, not a hard loss cap. Costs, gaps and slippage can exceed that estimate; some legacy sizing excludes transaction costs.
Additional cost stress adds 25% of the absolute commission and swap amounts: 12-month stressed net EUR -48.40; long-period stressed net EUR -99.92. This is not a full spread or slippage stress.
Files and reproducibility
Each ZIP includes MQ5 source, required headers, EX5, README, selected-test.set, selection.json and SHA256SUMS.txt. Compiled builds and measured results are unchanged by this documentation update.
ZIP SHA-256ab177f08515ab7a4cdbdacc1b1c6c5c210ee324cda5cf5a2d712263486f5753a
Tested EX5 SHA-25618b47b2e7a1fa31880cd6788a351392ba925d100c2bb54ccc8c6191b26bffabb
Selection criteria and all strategy categories · Frozen selection record
Frozen EURUSD H4 cost-research campaign
Research evidence only; no profitability badge. Twenty frozen runs comprise ten independent USD 10,000 resets from 2 July 2018 to 18 September 2026 (end exclusive), each repeated with base USD 3.50 per lot-side / 0 ms and stress USD 7.00 per lot-side / 200 ms. The campaign uses a tester-only cost wrapper distinct from the downloadable public EX5. February 2024 zero-fee functionality evidence is a limited public-EX5 parity observation only; it does not establish multi-year public-EX5 equivalence, full risk behavior, or restart behavior. The campaign used the already selected preset unchanged; windows were chosen for documented data coverage. These are retrospective tests, not a fresh holdout.
Price P/L, declared fee withdrawals, and the native tester swap field are shown separately. Historical swap validity is unverified, so the pre-swap result is retained alongside the native-swap presentation.
Reviewed rejected entries are unfilled server attempts, not fills or fee events. They retain non-clean execution and skipped-signal uncertainty; later valid signals remain separate observations.
| Scenario | Fee/lot-side | Delay ms | Price P/L | Declared fees | Net before unverified swap | Native swap | Net with native swap | PF | Tester-end closes | Reviewed rejected entries |
|---|---|---|---|---|---|---|---|---|---|---|
| base | 3.50 | 0 | 310.12 | 69.58 | 240.54 | -183.10 | 57.44 | 1.064 | 6 | 18 |
| stress | 7.00 | 200 | 310.61 | 139.16 | 171.45 | -183.10 | -11.65 | 1.045 | 6 | 18 |
What the result means: Base has 229 closed positions (64 winners and 165 losers before swap); stress has 229 (64 winners and 165 losers). Base totals USD 240.54 after declared fees, while stress totals USD 171.45. With the unverified native swap field included, the totals become USD 57.44 and USD -11.65. These historical observations do not establish profitability.
PF is the pooled closed-position profit factor after declared fees, before unverified swap. The two scenarios are alternative cost assumptions over the same fixed windows, not independent portfolios. Segment rows below retain all planned windows and tester-end closes; they do not form a continuous equity curve.
All 20 frozen segment results
| Case | Broker dates | Scenario | Fee/lot-side | Delay ms | Net before swap | Native swap | Net with swap | Tester-end closes | Reviewed rejected entries |
|---|---|---|---|---|---|---|---|---|---|
| ema-cost-01-20180702-20181224-base-v1 | 2018-07-02–2018-12-24 | base | 3.50 | 0 | 9.04 | -5.93 | 3.11 | 1 | 1 |
| ema-cost-01-20180702-20181224-stress-v1 | 2018-07-02–2018-12-24 | stress | 7.00 | 200 | 5.58 | -5.93 | -0.35 | 1 | 1 |
| ema-cost-02-20190104-20190524-base-v1 | 2019-01-04–2019-05-24 | base | 3.50 | 0 | -150.66 | -5.68 | -156.34 | 1 | 1 |
| ema-cost-02-20190104-20190524-stress-v1 | 2019-01-04–2019-05-24 | stress | 7.00 | 200 | -155.47 | -5.68 | -161.15 | 1 | 1 |
| ema-cost-03-20190529-20191224-base-v1 | 2019-05-29–2019-12-24 | base | 3.50 | 0 | 120.25 | -14.92 | 105.33 | 0 | 1 |
| ema-cost-03-20190529-20191224-stress-v1 | 2019-05-29–2019-12-24 | stress | 7.00 | 200 | 114.05 | -14.92 | 99.13 | 0 | 1 |
| ema-cost-04-20200104-20201224-base-v1 | 2020-01-04–2020-12-24 | base | 3.50 | 0 | 69.98 | -29.04 | 40.94 | 0 | 2 |
| ema-cost-04-20200104-20201224-stress-v1 | 2020-01-04–2020-12-24 | stress | 7.00 | 200 | 63.38 | -29.04 | 34.34 | 0 | 2 |
| ema-cost-05-20210105-20220101-base-v1 | 2021-01-05–2022-01-01 | base | 3.50 | 0 | 109.47 | -14.65 | 94.82 | 0 | 2 |
| ema-cost-05-20210105-20220101-stress-v1 | 2021-01-05–2022-01-01 | stress | 7.00 | 200 | 99.08 | -14.65 | 84.43 | 0 | 2 |
| ema-cost-06-20220101-20230101-base-v1 | 2022-01-01–2023-01-01 | base | 3.50 | 0 | 54.45 | -15.33 | 39.12 | 1 | 0 |
| ema-cost-06-20220101-20230101-stress-v1 | 2022-01-01–2023-01-01 | stress | 7.00 | 200 | 49.41 | -15.33 | 34.08 | 1 | 0 |
| ema-cost-07-20230101-20231222-base-v1 | 2023-01-01–2023-12-22 | base | 3.50 | 0 | 33.00 | -22.86 | 10.14 | 1 | 6 |
| ema-cost-07-20230101-20231222-stress-v1 | 2023-01-01–2023-12-22 | stress | 7.00 | 200 | 25.04 | -22.86 | 2.18 | 1 | 6 |
| ema-cost-08-20240103-20241224-base-v1 | 2024-01-03–2024-12-24 | base | 3.50 | 0 | 151.55 | -21.92 | 129.63 | 1 | 3 |
| ema-cost-08-20240103-20241224-stress-v1 | 2024-01-03–2024-12-24 | stress | 7.00 | 200 | 141.79 | -21.92 | 119.87 | 1 | 3 |
| ema-cost-09-20250103-20251224-base-v1 | 2025-01-03–2025-12-24 | base | 3.50 | 0 | -55.06 | -33.20 | -88.26 | 1 | 1 |
| ema-cost-09-20250103-20251224-stress-v1 | 2025-01-03–2025-12-24 | stress | 7.00 | 200 | -62.38 | -33.20 | -95.58 | 1 | 1 |
| ema-cost-10-20260106-20260918-base-v1 | 2026-01-06–2026-09-18 | base | 3.50 | 0 | -101.48 | -19.57 | -121.05 | 0 | 1 |
| ema-cost-10-20260106-20260918-stress-v1 | 2026-01-06–2026-09-18 | stress | 7.00 | 200 | -109.03 | -19.57 | -128.60 | 0 | 1 |
Download the 20 segment results and scenario totals (JSON).
These observations do not establish future performance, historical financing accuracy, full indicator warmup/seed behavior, or real-account fills.
