MT5 Expert Advisor · Non-profitable

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.

EMA pullback ATR Expert Advisor
Concept illustration; the measured backtest graphs are below.

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.

Strategy and EA mapping · Versioned diagnostic status

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.

Non-profitable · selected configuration

Selected configuration: rolling-year net EUR -35.14; full-period net EUR -13.98. Negative confirmation is retained in the archive.

Strategy rules

How this strategy works

  1. Use completed H4 bars. A long trend requires EMA20 > EMA100, close > EMA100 and ADX14 ≥ 15; short conditions are mirrored.
  2. 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.
  3. 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%.
  4. 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.

Historical evidence

Measured backtests

12-month net · EUR-35.14After commission & swap
Profit factor0.9212-month review
Equity drawdown2.83%12-month review
Trades2412-month review
EMA Pullback ATR realized balance, 2025.09.01 to 2026.09.01; net EUR -35.14
2025.09.01 → 2026.09.01 (end exclusive). Starting balance EUR 10,000. 41% real ticks. Available IC Markets real ticks with MT5 fallback. Realized balance includes commissions and swap; floating equity is in the original MT5 report. Open original MT5 report and equity graph.
EMA Pullback ATR realized balance, 2019.01.01 to 2026.09.21; net EUR -13.98
2019.01.01 → 2026.09.21 (end exclusive). Starting balance EUR 10,000. 6% real ticks. Available IC Markets real ticks with MT5 fallback. Realized balance includes commissions and swap; floating equity is in the original MT5 report. Open original MT5 report and equity graph.
Separate native MT5 runs. EUR 10,000 each; 1:30 leverage; 100 ms execution delay. End dates are exclusive.
Period / modelNet EURPFTradesEquity DDNative report
Development
2019.01.01 → 2024.01.01
M1 OHLC screening
+112.031.051362.59%MT5 report
Validation
2024.01.01 → 2025.01.01
M1 OHLC screening
+196.951.46281.81%MT5 report
12-month review
2025.09.01 → 2026.09.01
Real-tick mode + fallback
-35.140.92242.83%MT5 report
Long review
2019.01.01 → 2026.09.21
Real-tick mode + fallback
-13.981.002073.32%MT5 report
Your next test

Adjust the strategy preset

Adjust the actual MT5 inputs below, then download a .set file. Load it through Strategy Tester → Inputs → Load. The EA ZIP includes source code and the compiled file.

Selected tested preset loaded.

Signal · 6 inputs
Risk · 7 inputs
Window · 3 inputs
Research session controls · 6 inputs

Changes apply to your downloaded file. They do not change the published tests.

Preview the .set file

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

  1. Download and extract the ZIP. Copy TF_EMA_Pullback_ATR_Assistant_Sessions.ex5 into MQL5/Experts/TradeForex in the MT5 data folder. Keep MQ5 and all MQH headers together if compiling.
  2. Open Strategy Tester, select the EA, EURUSD and H4. The build rejects normal chart execution.
  3. Load the included selected-test.set or a preset downloaded above. Symbol, chart timeframe, dates, deposit and tick model are tester settings outside the .set file.
  4. 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.
  5. 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.

Pooled results across ten independent resets; USD.
ScenarioFee/lot-sideDelay msPrice P/LDeclared feesNet before unverified swapNative swapNet with native swapPFTester-end closesReviewed rejected entries
base3.500310.1269.58240.54-183.1057.441.064618
stress7.00200310.61139.16171.45-183.10-11.651.045618

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
CaseBroker datesScenarioFee/lot-sideDelay msNet before swapNative swapNet with swapTester-end closesReviewed rejected entries
ema-cost-01-20180702-20181224-base-v12018-07-02–2018-12-24base3.5009.04-5.933.1111
ema-cost-01-20180702-20181224-stress-v12018-07-02–2018-12-24stress7.002005.58-5.93-0.3511
ema-cost-02-20190104-20190524-base-v12019-01-04–2019-05-24base3.500-150.66-5.68-156.3411
ema-cost-02-20190104-20190524-stress-v12019-01-04–2019-05-24stress7.00200-155.47-5.68-161.1511
ema-cost-03-20190529-20191224-base-v12019-05-29–2019-12-24base3.500120.25-14.92105.3301
ema-cost-03-20190529-20191224-stress-v12019-05-29–2019-12-24stress7.00200114.05-14.9299.1301
ema-cost-04-20200104-20201224-base-v12020-01-04–2020-12-24base3.50069.98-29.0440.9402
ema-cost-04-20200104-20201224-stress-v12020-01-04–2020-12-24stress7.0020063.38-29.0434.3402
ema-cost-05-20210105-20220101-base-v12021-01-05–2022-01-01base3.500109.47-14.6594.8202
ema-cost-05-20210105-20220101-stress-v12021-01-05–2022-01-01stress7.0020099.08-14.6584.4302
ema-cost-06-20220101-20230101-base-v12022-01-01–2023-01-01base3.50054.45-15.3339.1210
ema-cost-06-20220101-20230101-stress-v12022-01-01–2023-01-01stress7.0020049.41-15.3334.0810
ema-cost-07-20230101-20231222-base-v12023-01-01–2023-12-22base3.50033.00-22.8610.1416
ema-cost-07-20230101-20231222-stress-v12023-01-01–2023-12-22stress7.0020025.04-22.862.1816
ema-cost-08-20240103-20241224-base-v12024-01-03–2024-12-24base3.500151.55-21.92129.6313
ema-cost-08-20240103-20241224-stress-v12024-01-03–2024-12-24stress7.00200141.79-21.92119.8713
ema-cost-09-20250103-20251224-base-v12025-01-03–2025-12-24base3.500-55.06-33.20-88.2611
ema-cost-09-20250103-20251224-stress-v12025-01-03–2025-12-24stress7.00200-62.38-33.20-95.5811
ema-cost-10-20260106-20260918-base-v12026-01-06–2026-09-18base3.500-101.48-19.57-121.0501
ema-cost-10-20260106-20260918-stress-v12026-01-06–2026-09-18stress7.00200-109.03-19.57-128.6001

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.

Follow on Facebook