ForexBestRobots.comCompare EAs →
EN

Indicator combinations · Strategy 3

Parabolic SAR and ADX Forex Strategy: Confirmed Flip and Controlled Trailing

A complete EURUSD H1 research model: a fresh closed-bar SAR flip needs ADX strength, then full quote costs and broker-confirmed one-way trailing govern the trade.

A completed bullish SAR flip needs ADX strength immediately. Later SAR values propose a tighter stop; broker acceptance determines when that protection becomes active.
A completed bullish SAR flip needs ADX strength immediately. Later SAR values propose a tighter stop; broker acceptance determines when that protection becomes active.

This BUY-only research strategy gives SAR and ADX different jobs. A new bullish SAR reversal on a completed H1 candle defines direction; ADX must already meet the strength threshold on that same candle. After an acceptable first quote, SAR may propose a tighter stop, but only an actually accepted broker modification changes protection. Three fictional price histories and separate execution branches expose weak flips, late ADX recovery, rejected updates and gaps. They report no measured trading returns.

1. Define the direction, strength and trailing hypothesis

SAR supplies the reversal event and a later proposed stop; ADX supplies a nondirectional strength filter. Study whether this complete policy changes net outcomes relative to keeping the initial stop. Both indicators use the same price history, so agreement is not independent evidence of an edge. A high ADX can accompany a decline.

Study EURUSD BUY only. This differs from the EMA-filtered SAR continuation strategy and the preceding ordered MACD/Stochastic strategy. There is no EMA gate, DI-direction gate, rising-ADX requirement, SELL, averaging, pyramiding, partial close or automatic reversal. The values and hours are declared research choices; no historical optimization or profitable outcome is asserted.

2. Fix completed-bar settings, UTC and exposure state

Use completed EURUSD Bid H1 OHLC, SAR step0.02 / maximum0.20 and Wilder-style ADX14. Require at least 28 valid, consecutive completed candles. An eligible bullish flip q may close 07:00–15:00 UTC, Monday through Thursday. Seek a same-day time exit at 19:00 UTC on q’s date if still open.

Map actual broker candle intervals to UTC, including historical offset changes. Arm and send only while EURUSD has no open or pending exposure and no unresolved request. A missed evaluation, broken H1 sequence or uncertain state prevents a new entry; do not replay a past flip after reconnection. While holding, retain accepted protection if data become unavailable, suspend updates and new entries, reconcile data and still enforce the time-exit policy. Other portfolio exposure needs separate controls.

ComponentDeclared settingRole or limit
Parabolic SARStep0.02; maximum0.20; explicit bearish seedFresh completed bullish flip; later stop candidates
ADX14Declared Wilder-style finite seed; threshold≥25Strength at the flip; no rising-ADX or DI gate
ProtectionS0=SAR(q)−1pip rounded down; target2×distanceOnly accepted higher stops activate; target fixed
ExecutionFirst quote; one update attempt per closed barFull costs; bearish-flip or19:00 UTC exit

3. State the finite SAR and ADX reference exactly

Number candles from k0. SAR is unavailable there. At k1 seed bearish direction with SAR1=max(H0,H1), EP1=min(L0,L1) and AF1=0.02; this seed is not a reversal event. From k2 compute z=SARprev+AFprev(EPprev−SARprev). In a bullish state clamp z to the smaller of z and the prior two lows. If current L≤z, reverse bearish: SAR=max(previous EP,current H), EP=current L, AF=0.02. Otherwise SAR=z, EP=max(previous EP,current H), increasing AF by 0.02 up to 0.20 only on a strictly higher EP. In a bearish state clamp z to the larger of z and the prior two highs. If current H≥z, reverse bullish: SAR=min(previous EP,current L), EP=current H, AF=0.02. Otherwise SAR=z, EP=min(previous EP,current L), increasing AF only on a strictly lower EP. Equality triggers reversal, but an equal EP does not increase AF.

For k≥1 define u=H(k)−H(k−1), v=L(k−1)−L(k), +DM=u if u>v and u>0, otherwise0, −DM=v if v>u and v>0, otherwise0 and TR=max(H−L,|H−Cprev|,|L−Cprev|). Tied positive moves give both DM values zero. At k14 seed each smoothed DM/TR with its mean over k1…k14; then use W(k)=[13W(k−1)+raw(k)]/14. Define ±DI=100W(±DM)/W(TR) and DX=100|+DI−−DI|/(+DI+−DI), using zero for a zero denominator. First ADX at k27 is mean(DX14…DX27); later ADX(k)=[13ADX(k−1)+DX(k)]/14. Use unrounded decisions. In MT4 MODE_MAIN is ADX, MODE_PLUSDI/MODE_MINUSDI are the directional lines; declare applied price and compare actual timestamped buffers before claiming parity. Read completed shift=1 and prior shift=2, never forming shift=0.

The finite SAR seed, reversal rules and Wilder-style ADX smoothing are explicit. Use completed buffers and unrounded comparisons; native-terminal parity needs separate verification.
The finite SAR seed, reversal rules and Wilder-style ADX smoothing are explicit. Use completed buffers and unrounded comparisons; native-terminal parity needs separate verification. On small screens, scroll the chart horizontally to keep labels readable.

4. Qualify only a fresh bullish flip with strength already present

A new event is direction(q−1)=−1 AND direction(q)=+1. On that completed candle require C(q)>SAR(q) and ADX(q)≥25, together with the time, data and flat-state requirements. ADX need not be rising; neither +DI>−DI nor a prior low-ADX phase is required. Q=1 means qualification, not a filled order.

If the fresh flip fails strength, price or eligibility, consume it. A later ADX rise while SAR stays bullish gives no new opportunity. A persistent bullish SAR state is not a fresh flip. A failed first quote or rejected entry also consumes that flip. Only a later independently fresh bullish reversal, with exposure and request state resolved, may qualify again. There is no automatic SELL when SAR turns bearish.

A fresh bullish SAR flip needs ADX≥25 on the same completed H1 candle. A consumed weak flip stays rejected when ADX later rises.
A fresh bullish SAR flip needs ADX≥25 on the same completed H1 candle. A consumed weak flip stays rejected when ADX later rises. On small screens, scroll the chart horizontally to keep labels readable.

5. Make each trailing review a one-way, prospective decision

Start reviewing only on the next completed candle k≥q+1 while the position remains open. If SAR is bullish and C(k)>SAR(k), calculate U(k)=floor_tick(SAR(k)−0.00010) and propose S*=max(Saccepted,U(k)). Submit only when the proposal is at least 1 tick higher. ADX is an entry gate: a later ADX decline alone neither closes the trade nor prevents tightening. A lower or equal candidate cannot loosen the accepted stop.

For each review use only its first observed two-sided quote, with 0≤age≤2 s and send time 0≤elapsed<10 s after that close. Verify Bid>S*, actual grid, stop distance and freeze constraints. If the quote, timing or broker checks fail, or the broker explicitly rejects the modification, retain the accepted stop and wait for the next completed bar. Do not retry within the bar, queue an old candidate or lower it to satisfy broker constraints. Process existing protection and exit events first. A candidate becomes active only when the broker actually accepts it; an unknown result requires reconciliation before another update. The deadline constrains an unsent request, not an update already sent.

6. Freeze the initial Bid protection and fixed target at q

At qualification freeze S0=floor_tick(SAR(q)−0.00010) and T=floor_tick(C(q)+2[C(q)−S0]). The one-pip buffer and two-distance target are declared choices. No candle after q enters S0 or T. Later accepted SAR updates may raise the stop; T stays fixed. There is no separate break-even trigger or discretionary target extension.

The examples assume 1 pip=0.00010 and tick=point=0.00001: one pip equals ten points. floor_tick rounds downward on the actual tradeable grid. Digits alone do not establish tick size, tick value or broker permissions. A target two signal-close distances away does not guarantee a net two-to-one trade, and a tightened stop does not guarantee the requested fill price.

Freeze S0 and T at qualification. Later completed SAR values can only propose a higher stop; the target stays fixed and acceptance controls activation.
Freeze S0 and T at qualification. Later completed SAR values can only propose a higher stop; the target stays fixed and acceptance controls activation. On small screens, scroll the chart horizontally to keep labels readable.

7. Inspect one first entry quote and account for every cost

After qualified close t inspect exactly its first observed two-sided quote. Require 0≤age≤2 s, send time 0≤elapsed<10 s, spread≤1.5 pips, Ask−C(q)≤4.0 pips, gross Ask-to-S0 distance 5–40 pips and planned net reward/loss at least 1.5. Require valid ordered prices, Bid>max(S0,SAR(q)) and Ask<T. Distance and ratio limits include equality; the price inequalities are strict.

Before sending verify attached protection, actual grid, broker stop constraints, lot limits, free margin and flat EURUSD state. The same first quote must remain fresh and usable; checks that outlast either limit consume the chance. Do not substitute a cheaper second quote or chase a requote. Explicit rejection or no timely quote also consumes the flip. Actual fill prices can differ. Seconds are a local sending deadline, not a market-order cancellation time or pending-order expiration parameter.

8. Rebuild three histories and keep execution branches separate

Each history starts with close 1.10000 at k0. Changes in pips are trend +2×30,−3×14,+4×15; weak (+3,+3,−3,−3)×11,−2×3,+3×18; range (+3,+3,−3,−3)×15. Open equals previous close, except k0 where they coincide; high is one pip above max(open,close), low one pip below min(open,close). There are 60,66,61 rows, 187 altogether.

First completed timestamps are 2026-08-03 10:00 UTC for trend/range and 2026-08-03 05:00 UTC for weak. These reuse the SAR/ADX guide’s declared fictional price shapes with strategy-specific clocks. The OHLC CSV evaluates signals assuming flat eligibility; it contains no orders or trade returns. A separate 10 events CSV gives alternative execution branches. A branches after k48, B after k49, and C describes an uncertain update after k48; their later quotes replace any unused continuation of that OHLC fixture. They must not be appended to one full tick path or treated as independent trade samples.

Download three fictional OHLC histories and signal calculations

Download the separate alternative execution-event ledger

9. Read the qualifying flip on aligned price and ADX axes

In the trend history the fresh bullish flip at q=k47 closes 2026-08-05 09:00 UTC. Bid close 1.10300 exceeds SAR 1.10170; ADX 50.4166 passes. Freeze S0=1.10160 and T=1.10580. Q=1 still needs a passing first quote and broker acceptance.

At k48, 10:00 UTC, SAR is 1.101728, giving candidate U=1.10162. At k49, 11:00 UTC, SAR 1.10179888 gives U=1.10169. ADX declines to 46.8620 and then 44.1844; that decline does not block a valid update. These are proposals computed after each close, never protection retroactively applied to the candle that just ended.

Trend case: k47 qualifies with ADX50.4166. Price/SAR and ADX share bar positions; later declining ADX does not prevent a valid trailing proposal.
Trend case: k47 qualifies with ADX50.4166. Price/SAR and ADX share bar positions; later declining ADX does not prevent a valid trailing proposal. On small screens, scroll the chart horizontally to keep labels readable.
Case / barBid closeSARADXNew flipQSignal action
Trend case · k471.103001.10170000050.416611Qualified close
Trend case · k481.103401.10172800046.862000Later strength cannot revive the flip
Weak-flip case · k501.100301.09930000011.341310Weak-flip case
Weak-flip case · k581.102701.10070803325.676700Later strength cannot revive the flip
Range case · k461.100601.0999000008.666310Weak-flip case

10. Reject the weak flip without reviving it later

In the weak history k50 closes 2026-08-05 07:00 UTC with a fresh bullish flip. Close 1.10030 exceeds SAR 1.09930, but ADX 11.3413 is below 25. Reject this flip immediately. No waiting episode is created for ADX to recover.

At k58, 15:00 UTC, ADX reaches 25.6767, while SAR remains bullish and close is higher. The flip flag is zero, so Q stays zero. In the range history, repeated reversals also fail the strength gate once the indicators are available. Reducing position size or pointing to later trend growth cannot repair an invalid signal event.

Weak case: k50 is rejected with ADX11.3413. ADX reaches25.6767 at k58, but the bullish state has no new flip and Q remains zero.
Weak case: k50 is rejected with ADX11.3413. ADX reaches25.6767 at k58, but the bullish state has no new flip and Q remains zero. On small screens, scroll the chart horizontally to keep labels readable.

11. Read accepted-stop timing in three alternative branches

Assume the qualifying entry was accepted with S0=1.10160. Branch A’s first quote after k48 at 10:00:00.200 UTC is 1.10161 / 1.10173. Bid is above the old stop but below proposed 1.10162: skip the update. A later assumed Bid fill at 1.10155 belongs to the old stop, not a fictitious fill at the unaccepted candidate. Branch A uses no OHLC candles after k48.

In branch B the normal k48 quote permits an attempt, but the broker explicitly rejects it; S stays at 1.10160. At k49 the new proposal 1.10169 is accepted at 11:00:00.400 UTC; only then is it active. A later assumed gap fill at 1.10165 is worse than that level. Branch B uses no OHLC candles after k49. Branch C’s k48 request times out: the active stop is uncertain to the client until reconciliation confirms 1.10162 at 10:00:00.900 UTC. No blind resend is allowed, and the reconciliation time does not invent the earlier activation time.

Alternative execution branches separate a skipped candidate, explicit broker rejection, actual acceptance and an unknown response. They are not one continuous tick history.
Alternative execution branches separate a skipped candidate, explicit broker rejection, actual acceptance and an unknown response. They are not one continuous tick history. On small screens, scroll the chart horizontally to keep labels readable.
Branch / UTC timeClosed barProposed stopBid quoteConfirmed stopState
A · 10:00:00.200000k481.101621.101611.10160Gap below the proposed stop
A · 10:00:00.600000k48—1.101551.10160Old accepted stop fills
B · 10:00:00.400000k481.10162—1.10160Broker rejects the update
B · 11:00:00.200000k491.101691.103801.10160Valid quote; acceptance still pending
B · 11:00:00.400000k491.10169—1.10169Broker accepts the update
B · 11:00:00.600000k49—1.101651.10169New accepted stop fills
C · 10:00:00.600000k481.10162—?Unknown modification result
C · 10:00:00.900000k481.10162—1.10162Reconcile before the next action

12. Compare alternative first quotes before choosing volume

For fixed S0/T, a first quote at 09:00:02 UTC of 1.10300 / 1.10312 has spread 1.2 pips and gross stop distance 15.2 pips. Add round-trip commission 0.6 pip and total adverse-execution reserve 1.0 pip: planned loss 16.8 pips, net target room 25.2 pips, ratio exactly 1.5. Equality passes the declared minimum, subject to broker checks; it offers no cushion for costs beyond the reserve.

An alternative first quote 1.10328 / 1.10340 passes the inclusive 4.0-pip chase cap but gives loss 19.6 pips, net target 22.4 pips and ratio 1.1429: reject at any size. With equity 10000 USD, risk 0.5%=50 USD, contract 100000 EUR, pip value 10 USD/lot and lot step 0.01, the acceptable quote allows 0.29 lots, planned risk 48.72 USD. Round down, skip below minimum and recheck margin. Count spread once through Ask entry/Bid exits; use actual tick value, account conversion and swaps, and allow that real loss may exceed the reserve.

Alternative first quotes share S0/T. The acceptable quote meets net ratio1.5 exactly; the dearer quote passes chase but fails net reward/loss at any size.
Alternative first quotes share S0/T. The acceptable quote meets net ratio1.5 exactly; the dearer quote passes chase but fails net reward/loss at any size. On small screens, scroll the chart horizontally to keep labels readable.
First quoteBid / AskStop (pip)Loss + costsNet targetRatioDecision
Acceptable1.10300 / 1.1031215.216.825.21.5000Numeric gates pass at equality
Expensive1.10328 / 1.1034018.019.622.41.1429Reject: insufficient net ratio

13. Prioritize active protection, bearish reversal and the time exit

BUY protection uses Bid and the currently accepted stop; the fixed target remains T=1.10580. Ask touching T alone is insufficient. If still open when a completed bearish SAR flip appears, request closure at the first executable Bid; do not reverse to SELL. If still open at or after 19:00 UTC on q’s date, also seek closure at the first executable Bid. Exit requests do not wait for the entry spread gate or a trailing-update window.

Existing stop/target execution takes priority over a later client action. If both a bearish-flip and time-exit condition apply, reconcile and submit only one close request for remaining exposure. For example Ask1.10580 / Bid1.10568 has not reached T on Bid. A separate hypothetical candle H=1.10600 / L=1.10140 spans T and the initial stop but does not reveal which came first. Tick chronology and accepted-stop activation records are required; otherwise mark ambiguity. This candle is outside both CSV fixtures.

BUY exits use accepted protection and Bid. A completed bearish SAR flip or19:00 UTC requests closure; OHLC alone cannot order competing exit levels.
BUY exits use accepted protection and Bid. A completed bearish SAR flip or19:00 UTC requests closure; OHLC alone cannot order competing exit levels. On small screens, scroll the chart horizontally to keep labels readable.

14. Reconcile unknown orders, protection and recovery state

Log unrounded indicators, q, frozen S0/T, every first quote, proposed stop, request identity, send time, explicit rejection, broker acceptance/effective time when known, confirmed protection and actual fills. A timeout does not prove rejection of an entry, modification or close. After an unknown modification, old protection is only the last confirmed state, not proof of the currently active stop. Reconcile broker order and position records before sending another update or declaring flat.

If a fill lacks required protection, seek controlled immediate closure and block entries until exposure is resolved. Manage residual volume after failed or partial closes. Never loosen the stop silently. If data are missing while holding, retain the last confirmed protection, suspend trailing, restore trustworthy state and keep seeking the scheduled exit; accepted server-side protection may still execute. A request sent before a deadline can finish later. On recovery after the time exit, seek closure at the first executable quote. A zero reported stop level can still permit dynamic rejection; freeze constraints may also prevent modification or closure.

15. Compare complete chronological policies, not selected trade rows

Compare this strategy with a fixed-stop variant using the same qualifying flips, first-quote gates, costs, sizing, target, bearish-flip exit and time exit, but leaving S0 unchanged. Run each variant’s own position chronology: an earlier trailing exit can change whether a later flip finds that variant flat. Do not delete losing rows from one finished trade list or assume identical later entries after the paths diverge.

Reserve later data, record all parameter trials and evaluate net expectancy, drawdown, uncertainty, turnover, missed signals, modification failures and gap losses. Trailing may reduce an individual loss or give back less profit, but it may also cut a trade before a recovery or prevent a target fill. Three fictional histories and alternative ledgers verify arithmetic and timing; they cannot establish which policy performs better.

16. Review the entire policy before testing

Check real UTC intervals, finite SAR/ADX seeds, equality conventions, fresh reversal at q and ADX strength on that same close. Confirm that consumed flips never revive, S0/T use only known information, the first quote and full costs precede sizing, and only later completed candles propose tightening. Keep proposed, rejected, accepted and uncertain stops separate; reconcile active protection before any next action.

This is the third and final strategy in the current indicator-combination cluster, following EMA/Stochastic and MACD/Stochastic. The cluster now connects indicator roles to complete research policies with explicit rejection and execution rules. None of these examples is a live-trade recommendation, a measured backtest or evidence that combining popular indicators creates a profitable edge.

Frequently asked questions

Can ADX qualify an earlier weak SAR flip later?

No. ADX must meet the threshold on the fresh bullish flip itself. A later rise while SAR remains bullish does not create a new reversal event.

Must ADX be rising or +DI exceed −DI?

Neither is required by this declared model. SAR defines direction and ADX supplies strength. Adding either extra gate would create a different strategy to test.

Does a new SAR value immediately become the active stop?

No. It is a proposal from a completed candle. The broker must actually accept the modification before it becomes active; an unknown response requires reconciliation.

What happens when Bid is already below the proposed stop?

Skip that update and retain confirmed protection. Do not invent a fill at the unaccepted level. The previously accepted stop may subsequently execute, with slippage or a gap.

Does a falling ADX stop trailing or close the position?

No. ADX is only an entry gate here. Valid completed-bar SAR candidates may still tighten; bearish SAR reversal, accepted protection and the time exit govern closure.

Do the charts or execution branches prove profitability?

No. They are fictional calculation and state fixtures. The alternative branches are not one complete tick backtest and report no measured returns or commercial EA results.

Sources and research notes

MetaQuotes documents iSAR, iADX, market-order submission, order modification and symbol constraints. The finite SAR/ADX seeds, threshold, UTC schedule, first-quote policy and trailing state machine below are our original research specification. They do not assert exact parity with native terminal buffers. Fictional OHLC calculations and alternative execution ledgers demonstrate rules, not performance or commercial EA results.

Educational research specification. Histories, quotes and execution branches are fictional. Forex trading involves risk; indicators, accepted stops and planned budgets cannot guarantee profit or cap actual losses.