ForexBestRobots.comCompare EAs →
EN

Indicator combinations · Guide 3

Parabolic SAR and ADX in Forex: Direction, Strength and Trailing Stops

Combine Parabolic SAR and ADX with explicit flip rules, reproducible calculations, weak-signal rejection and trailing stops that activate only after acceptance.

Parabolic SAR supplies a completed direction change, ADX supplies a strength condition, and a trailing stop needs a separately accepted modification. Fictional examples, without measured trading returns.
Parabolic SAR supplies a completed direction change, ADX supplies a strength condition, and a trailing stop needs a separately accepted modification. Fictional examples, without measured trading returns.

A SAR dot changing sides, an ADX reading above a threshold and an accepted stop modification are three different events. Confusing them can turn an old rejected flip into a late entry or make a chart imply protection that did not yet exist. This guide defines one reproducible teaching reference, follows three fictional H1 histories and separates indicator observations from executable stop management.

1. Give SAR, ADX and the actual stop different jobs

Parabolic SAR is a price-based state and reference level. ADX summarizes directional-movement imbalance after smoothing; it does not label an uptrend or downtrend. +DI and −DI are separate lines. Neither an indicator dot nor a plotted stop candidate proves that a broker accepted a protective order.

Our BUY-side observation combines a fresh upward SAR flip with a same-bar ADX threshold. There is no DI-direction gate and no rising-ADX requirement. Trailing is studied separately after a hypothetical position exists. This guide is a research building block, not a complete entry-and-exit strategy or evidence of a trading advantage.

2. Declare the implementation before comparing numbers

Use fictional EURUSD Bid H1 OHLC, 1 pip=0.00010, SAR step=0.02, maximum=0.20 and a Wilder-style ADX14 reference defined below. Index k names a completed bar. The data timestamp is its close, not its opening time. Our finite-history initialization is explicit; earlier terminal history can change later values.

In MT4, record the symbol, feed, timeframe, history start and actual indicator implementation. iSAR accepts step, maximum and shift; iADX exposes MODE_MAIN, MODE_PLUSDI, MODE_MINUSDI plus an applied-price argument. Do not assume that native iADX, a Wilder-style custom indicator and another platform agree because all display 14. Export and compare actual completed outputs before substituting one for this reference.

MeasureDeclared referenceRole or limit
SARStep 0.02 / max 0.20; explicit down seedState and completed flip, not an accepted stop
ADX14Wilder-style R14; ADX seed at k27Nondirectional strength; not native parity
QFresh up flip AND ADX≥25No DI or rising-ADX gate
TrailingCompleted reference; accepted updates onlyOne-way protection; no automatic reversal

3. Make SAR initialization, clamps and touch rules reproducible

At k1, seed down state d=−1, S=max(H0,H1), EP=min(L0,L1) and AF=0.02; k0 has no SAR. For each k≥2, project T=S_prev+AF_prev(EP_prev−S_prev). In an up state, clamp T to the minimum of T and the two previous lows. In a down state, clamp it to the maximum of T and the two previous highs. All references use completed information only.

In an up state, L(k)≤T flips down: set S=max(EP_prev,H(k)), EP=L(k), AF=0.02. In a down state, H(k)≥T flips up: set S=min(EP_prev,L(k)), EP=H(k), AF=0.02. Touch equality flips. Otherwise S=T; update EP to a new strict high or low and increase AF by 0.02, capped at 0.20, only on that new extreme. Process one transition from the incoming state; an outside bar does not imply a known intrabar order.

The declared SAR reference projects from the previous S, EP and AF, clamps against two completed extremes, then processes at most one touch-inclusive flip. It is not a native-terminal parity claim.
The declared SAR reference projects from the previous S, EP and AF, clamps against two completed extremes, then processes at most one touch-inclusive flip. It is not a native-terminal parity claim. On small screens, scroll the diagram horizontally.

4. Define directional movement and zero cases explicitly

For k≥1, let U=H(k)−H(k−1) and V=L(k−1)−L(k). Set +DM=U only if U>V and U>0; set −DM=V only if V>U and V>0. Otherwise the respective value is zero; a positive U=V tie gives zero to both. Define TR=max(H−L,|H−C_prev|,|L−C_prev|). These operations use highs and lows, not a crossover of closing prices.

For each raw series x, seed R14(x,k14)=mean(x1…x14), then use R14(x,k)=[13R14(x,k−1)+x(k)]/14. Define +DI=100R14(+DM)/R14(TR) and −DI=100R14(−DM)/R14(TR). If smoothed TR is zero, set both DI values to zero. Missing required data remains unavailable and prevents qualification; it is not the zero-range case.

5. Keep ADX strength separate from direction and slope

Define DX=100|+DI−(−DI)|/(+DI+−DI), with DX=0 when the denominator is zero. Seed ADX(k27)=mean(DX14…DX27); later ADX(k)=[13ADX(k−1)+DX(k)]/14. DI and DX first exist at k14, ADX at k27. This declared Wilder-style reference uses smoothed movement divided by smoothed TR; smoothing barwise DI percentages first is a different calculation.

The absolute difference removes direction: mirroring highs and lows swaps the two DI lines while leaving this ADX unchanged. Rising ADX can accompany falling prices. A high but falling ADX can also satisfy a level-only gate. Requiring ADX to rise, requiring +DI>−DI, or changing smoothing creates another model; none should be added silently after viewing an appealing example.

ADX removes the sign of the DI imbalance. Mirrored fictional prices swap +DI and −DI while leaving ADX unchanged; strength is separate from direction.
ADX removes the sign of the DI imbalance. Mirrored fictional prices swap +DI and −DI while leaving ADX unchanged; strength is separate from direction. On small screens, scroll the diagram horizontally.

6. Distinguish a fresh completed flip from an existing state

Define the upward event F(k)=[d(k−1)=−1 AND d(k)=+1]. Our observation is Q(k)=F(k) AND [ADX(k)≥25], available from k27 when all inputs exist. Exactly 25 passes. The threshold is illustrative, not optimized. A SAR state remaining up does not generate fresh flips on later candles.

In the current MT4 series, read the last completed bar at shift=1 and its predecessor at shift=2; shift=0 is forming. Evaluate each completed timestamp once. The internal direction state above defines our flip, including equality, rather than guessing from rounded dots near a close. If data or restart state is uncertain, rebuild the chronology before acting.

7. Reject weak flips without giving them a later entry time

The level gate is evaluated on the flip bar itself. If F=1 but ADX<25, record a rejection and consume that event. A later ADX crossing of 25 with F=0 cannot change the old Q or supply a new flip. A delayed application must not relabel the current bullish state as a fresh transition.

This guide has no waiting window for ADX and no automatic reversal order. A future model could explicitly study confirmation within a finite window, but that would be a separate hypothesis. Keep indicator rejection, order rejection and an unknown request status separate: they occur at different stages and require different evidence.

A fresh upward flip and ADX at least 25 on that same bar give Q=1. A rejected flip is consumed; a later ADX threshold crossing is not another F.
A fresh upward flip and ADX at least 25 on that same bar give Q=1. A rejected flip is consumed; a later ADX threshold crossing is not another F. On small screens, scroll the diagram horizontally.

8. Rebuild three separate fictional H1 histories

All histories begin at 2026-08-03 00:00 UTC with close 1.10000. Subsequent close changes, in pips, are: trend +2×30,−3×14,+4×15; range (+3,+3,−3,−3)×15; weak (+3,+3,−3,−3)×11,−2×3,+3×18. Open equals the previous close, with k0 open equal to close; high is one pip above max(open,close), low one pip below min(open,close).

The histories contain 60,61,66 rows, 187 in total. They are separate fabricated cases, with a shared prefix in range and weak, not independent statistical trade samples. CSV includes OHLC, SAR state, EP, AF, directional movement, smoothed inputs, DI, DX, ADX, F and Q. Exact rational comparisons define the reference; rounded display values do not decide events.

Download all three fictional OHLC histories and calculations

9. Read a qualified flip without inventing DI agreement

In the trend case, an upward flip occurs at k47, 2026-08-04 23:00 UTC. SAR resets to 1.10170 and ADX is 50.4166, so Q=1. ADX has fallen from 53.3582 at k46; the gate requires a level, not a rise. No trade fill or profit is attached to this observation.

At k47, +DI is 24.0052 and −DI 30.6617. The observation still qualifies because DI direction is not part of Q. This disagreement is useful: a completed SAR transition and smoothed directional movement need not turn together. A +DI>−DI filter would reject this case and must be assessed as an explicit additional rule.

Trend case: k47 flips up and qualifies with ADX 50.4166, despite falling ADX and +DI below −DI. All panels share one completed-bar axis.
Trend case: k47 flips up and qualifies with ADX 50.4166, despite falling ADX and +DI below −DI. All panels share one completed-bar axis. On small screens, scroll the diagram horizontally.
Case / barSARdADX+DI−DIFQ
Trend case · k471.10170150.416624.005230.661711
Range case · k301.09990111.820618.149013.932010
Range case · k341.09990110.636117.778914.053310
Weak flip case · k501.09930111.341319.687517.546510
Weak flip case · k581.10071125.676738.04149.557700

10. Show sideways whipsaws as well as a clean trend

In the range case, the up flips at k30 and k34 have ADX 11.8206 and 10.6361; both are rejected. Down flips at k28, k32 and k36 interrupt the repeated rises. Shared price and ADX axes show the entire sequence, including the less attractive intervening candles.

The threshold removes these particular synthetic observations. That does not establish that ADX always detects a range, prevents whipsaws or improves net results. Smoothing can retain old strength after a regime changes, and filtering can remove later winners. Report the complete candidate calendar rather than selecting examples where the filter looks helpful.

Range case: alternating SAR flips at k28 through k36 accompany low ADX. The up flips at k30 and k34 are rejected; no trade results are implied.
Range case: alternating SAR flips at k28 through k36 accompany low ADX. The up flips at k30 and k34 are rejected; no trade results are implied. On small screens, scroll the diagram horizontally.

11. Do not revive a rejected flip when ADX later rises

In the weak case, the upward flip at k50, 2026-08-05 02:00 UTC, has ADX 11.3413; Q=0. SAR then stays up. At k58, 2026-08-05 10:00 UTC, ADX reaches 25.6767, but F=0 and Q remains zero. Eight later bars cannot transform the earlier rejected event into an entry.

The chart marks the weak flip and later strength separately. The later close is 1.10270, versus 1.10030 at the flip, but neither is an entry price here. A state-based rule could study the later bar; it must carry its own name, decision time, quote and validation instead of borrowing the original flip.

Weak case: the k50 flip is rejected at ADX 11.3413. ADX 25.6767 at k58 cannot revive it because SAR remains up and F=0.
Weak case: the k50 flip is rejected at ADX 11.3413. ADX 25.6767 at k58 cannot revive it because SAR remains up and F=0. On small screens, scroll the diagram horizontally.

12. Activate a trailing candidate only after accepted modification

Consider a separate fictional BUY already protected at S_old=1.10100. At 10:00:00 UTC, a completed-bar reference gives SAR=1.10206. An illustrative two-point buffer on a 0.00001 tick gives candidate S_new=1.10204. The request is sent at 10:00:01. A quote at 10:00:02 has Bid 1.10180; the old stop still governs.

At 10:00:03, Bid has recovered to 1.10310 and the modification is confirmed accepted. Only subsequent eligible quotes use the new stop. Bid 1.10170 at 10:00:04 then crosses it; an assumed fill 1.10160 is worse than the stop by 4.4 pips. In the separate rejected-modification branch, the old 1.10100 remains active and that same 1.10170 quote has not reached it. Never apply the new stop retrospectively to the earlier 1.10180 quote.

Separate fictional quote timeline: the old stop governs before acceptance. Accepted and rejected modifications produce different active stops; no retroactive protection is allowed.
Separate fictional quote timeline: the old stop governs before acceptance. Accepted and rejected modifications produce different active stops; no retroactive protection is allowed. On small screens, scroll the diagram horizontally.

13. Keep stops one-way and reconcile uncertain requests

For a BUY, submit a candidate only if it is above the accepted old stop, below current Bid and valid on the broker’s price grid and stop/freeze constraints. Round a BUY stop down to the permitted tick before checking it. A lower candidate does not loosen protection. If SAR flips above price, do not copy that wrong-side level into a BUY stop; an exit-on-opposite-flip policy needs a separate explicit definition.

A failed modification leaves the previously accepted stop in force. A timeout can be uncertain: inspect actual broker state before declaring success, resending or calculating exits. Record candidate time, send time, accepted time and active level. After reconnection, rebuild indicator state and reconcile the real position. A plotted line is not evidence that the old stop changed, and a protective stop cannot guarantee its fill price through a gap.

14. Size from executable quote sides and full planned costs

In a separate BUY geometry example, fix Bid stop 1.10170 and Bid target 1.10600. Normal Bid/Ask is 1.10300 / 1.10312, wider 1.10300 / 1.10330. Gross stop distances from Ask are 14.2 and 16.0 pips. Add commission 0.8 pip and total adverse-execution reserve 1.0 pip: planned loss distances become 16.0 and 17.8 pips; net target room is 27.0 and 25.2 pips.

Assume USD equity 10000, risk budget 0.6%=60 USD, standard contract 100000 EUR, pip value 10 USD/lot and lot step 0.01. Rounding down yields 0.37 lots and planned risk 59.20 USD, versus 0.33 lots and 58.74 USD. Ask entry and Bid exits already represent the spread; do not add it twice. Check actual tick value, account-currency conversion, margin, swaps and broker constraints; the reserve is not a maximum possible loss.

Separate BUY quote geometry: wider Ask against the same Bid exits increases planned loss distance. Costs are included once and lot size is rounded down.
Separate BUY quote geometry: wider Ask against the same Bid exits increases planned loss distance. Costs are included once and lot size is rounded down. On small screens, scroll the diagram horizontally.
QuoteBid / AskStop (pip)Loss + costsNet targetLotsRisk USD
Normal1.10300 / 1.1031214.216.027.00.3759.20
Wider1.10300 / 1.1033016.017.825.20.3358.74

15. Compare entry filtering and trailing as separate experiments

First compare every fresh F observation with Q on the same calendar, using identical complete execution, exit, cost and risk rules. Then, on an identical accepted-entry set, compare fixed-stop and one-way SAR-trailing policies. Changing both the entry filter and the exit policy together obscures which change explains a result.

Preserve actual quote chronology, spreads, modification failures, uncertain requests and gaps. BUY exits use Bid; SELL stop and exit rules require an explicit Ask-side convention rather than blindly reusing a Bid-chart line. Reserve later data, retain all tried periods and thresholds, and assess net expectancy, drawdown and sample uncertainty. Three fabricated paths cannot establish profitability.

16. Complete the specification before turning it into a strategy

Record the data and close clock, finite SAR seed, EP/AF updates, two-bar clamp, equality rules, ADX smoothing and zero cases. Define a fresh event, its same-bar gate and what rejection consumes. For actual trades add order expiry, initial protection, costs, sizing, position limits, accepted trailing updates and complete exits. Another reader should reproduce decisions without selecting convenient candles.

This is the third guide in the three-pair cluster; the next materials specify the three separate strategies. The existing SAR continuation strategy uses EMA100, an ATR buffer, a bounded counter-phase and fixed exits; it is a different model. Here the focus is the interaction of SAR, ADX and stop activation. Clear rules improve reproducibility; their agreement alone does not establish a market edge.

Frequently asked questions

Does rising ADX mean prices are rising?

No. ADX measures smoothed directional-movement imbalance without a direction sign. Its rise can accompany a falling market. +DI and −DI are separate lines.

Does the same ADX14 label guarantee matching MT4 values?

No. Smoothing, seeds, data history and implementation can differ. This guide declares a finite Wilder-style reference; compare exported native outputs before substituting them.

Does a later ADX reading above 25 revive a weak SAR flip?

No. This observation evaluates ADX on the completed flip bar. Without another fresh flip, later strength leaves the rejected event unchanged.

Must ADX be rising and +DI be above −DI here?

No. The illustrative Q gate requires a fresh upward SAR flip and ADX at least 25. A slope or DI-direction filter would be a different model.

Is a newly calculated SAR trailing stop already active?

No. The previously accepted stop governs until a modification is confirmed accepted. Do not apply a later accepted level to earlier quotes.

Can a SAR stop or an ADX filter guarantee a bounded loss?

No. Qualification does not establish profitability, and stops can fill worse through gaps or slippage. Planned costs and reserves are assumptions, not loss guarantees.

Sources and educational notes

Official MetaQuotes references document iSAR, iADX and OrderModify; the ADX Wilder reference explains smoothed directional movement. The precise finite seeds, tie handling, SAR recurrence, three fictional histories, qualification gate and quote timelines below are our declared teaching specifications. They do not assert equality with native MT4 output or describe any commercial EA. Reconstruct unrounded values from the downloadable OHLC; CSV decimals are display approximations.

Educational content. All histories, quotes and fills are fictional. Forex trading involves risk. Indicator qualification and protective stops cannot guarantee profit or cap actual loss.