> ## Documentation Index
> Fetch the complete documentation index at: https://docs.askfutures.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Trend pullback with adaptive risk

> Combine a daily-trend regime, an ADX strength gate, an RSI pullback trigger, and ATR-based stops into one ES strategy.

This is where a few ideas come together into something that feels like a real
playbook: only trade when the bigger trend is up, only when the move has strength,
buy the dip — not the rip — and size your risk to current volatility instead of a
fixed dollar amount.

It's an intermediate build. Take the [EMA cross
tutorial](/tutorials/ema-cross-with-stop-and-target) first if structured exits are
new to you.

<Info>
  **You'll learn:** a daily-timeframe regime filter, an `ADX(14)` strength gate, a
  pullback entry confirmed by `RSI(14)`, **ATR-based** stops and targets, a
  trailing stop, and a one-trade-per-day cap. **Time:** about ten minutes.
</Info>

## The idea, in plain English

Five separate conditions, each doing one job:

* **Regime** — only go long when the **daily 50-EMA is rising** (the bigger trend
  is up).
* **Strength** — only when **ADX(14) is above 20** on the trading timeframe (the
  trend has some force behind it).
* **Trigger** — buy a pullback: **RSI(14) turning up from below 40** (price dipped,
  then started to recover).
* **Adaptive risk** — stop at **1.5x ATR(14)**, target at **3x ATR**, both measured
  at entry, plus a **20-tick trailing stop once the trade is in profit**.
* **Discipline** — **flatten at end of day**, **one trade per day**, **longs only**.

## Step 1 — Describe it

Type the whole thing in one message. AskFutures reads it as a single connected
idea — you don't need to break it up:

> On ES 5-minute bars: when the daily 50-EMA is rising and ADX(14) is above 20,
> buy a pullback to the rising 5-minute 20-EMA confirmed by RSI(14) turning up
> from below 40. Stop at 1.5x ATR(14), target at 3x ATR, trail by 20 ticks once
> in profit, and flatten at the end of the day. One trade per day, longs only.

<Note>
  Notice this prompt names everything explicitly — **5-minute bars**, **longs
  only**, the **EOD flatten**, the **one-trade-per-day** cap. That overrides the
  [silent defaults](/concepts/strategies) (which would otherwise be 1-minute bars,
  both directions). When you're this specific, AskFutures follows your lead.
</Note>

## Step 2 — Read the strategy card

This strategy reads from **two timeframes** — daily for the regime, 5-minute for
the entry — so check the card carefully.

<Steps>
  <Step title="Market & timeframes">
    Trades `ES` on **5-minute bars**, while reading a **daily** series for the
    50-EMA regime filter. See [timeframes &
    bars](/concepts/timeframes-bars-sessions) for how the two fit together.
  </Step>

  <Step title="Trend filter (regime)">
    The **daily 50-period EMA must be rising**. When it's flat or falling, no long
    is allowed — the strategy simply sits out.
  </Step>

  <Step title="Strength gate">
    **ADX(14) above 20.** ADX measures trend strength regardless of direction, so
    it keeps you out of choppy, going-nowhere stretches.
  </Step>

  <Step title="Entry trigger">
    A pullback toward the rising **5-minute 20-EMA**, confirmed by **RSI(14)
    turning up from below 40** — the dip-then-recover that gives the strategy its
    name.
  </Step>

  <Step title="Exits — adaptive to volatility">
    A **1.5x ATR(14) stop**, a **3x ATR target**, and a **20-tick trailing stop**
    that activates once you're in profit, plus an **end-of-day close**. The first
    one to trigger wins. Because ATR scales with volatility, your risk widens in
    fast markets and tightens in quiet ones.
  </Step>

  <Step title="Filters">
    **One trade per day** and **longs only** — so a losing morning doesn't turn
    into revenge trading.
  </Step>
</Steps>

Here's the logic as the **Strategy Flow** chart shows it:

```mermaid theme={null}
flowchart TD
  R{"Daily 50-EMA<br/>rising?"} -->|no| W["Stand aside"]
  R -->|yes| A{"ADX(14) &gt; 20?"}
  A -->|no| W
  A -->|yes| P{"RSI(14) turning up<br/>from below 40?"}
  P -->|no| W
  P -->|yes| L["Go long ES<br/>(once per day)"]
  L --> X{"First to hit?"}
  X -->|"1.5x ATR"| S["Stop"]
  X -->|"3x ATR"| T["Target"]
  X -->|"20-tick trail"| TR["Trailing stop"]
  X -->|"day ends"| EOD["EOD flatten"]
```

<Tip>
  Read the **Assumptions** notes on the card. ATR and EMA are real
  [TA-Lib](/concepts/signals-indicators-series) indicators, so confirm the periods
  match what you asked for (14 for ATR and ADX, 50 for the daily EMA, 20 for the
  5-minute EMA).
</Tip>

## Step 3 — Backtest and read the results

> Backtest it.

The engine replays a year of 5-minute ES bars, checking the daily regime on each
day before allowing any entry. With a one-trade-per-day cap and several
conditions stacked, expect **fewer trades than a bare crossover** — that's the
point of a selective strategy.

<Warning>
  Backtest results are **hypothetical and simulated**. No real trades were placed,
  so live outcomes can differ. Reported P\&L is net of modeled slippage (default
  **1 tick**) and commission (default **\$2.50/side** for full-size ES). Past
  performance — actual or simulated — does not guarantee future results. Always
  test before you trade.
</Warning>

What to look at, in order:

<AccordionGroup>
  <Accordion title="Trade count" icon="hashtag">
    Did the filters leave you *any* trades? A handful is normal here. Too few to
    judge? Loosen one condition (for example, ADX above 15 instead of 20).
  </Accordion>

  <Accordion title="Exit reasons" icon="door-open">
    A healthy trend-pullback shows a mix of `target` and `trailing_stop` exits on
    winners. A flood of `stop` exits usually means the regime filter isn't
    actually keeping you on the right side of the trend.
  </Accordion>

  <Accordion title="Drawdown" icon="arrow-trend-down">
    Adaptive (ATR) risk is meant to keep losers proportional. If a few outliers
    dominate the drawdown, the trailing stop may be activating too late.
  </Accordion>
</AccordionGroup>

## Step 4 — Iterate

Change one thing at a time so you can tell what helped. Each edit is a new saved
version you can [compare](/guides/version-and-compare).

> Loosen the strength gate to ADX above 15.

> Tighten the ATR stop to 1x and keep the 3x target.

> Add a time filter so it only trades between 09:30 and 12:00.

> Optimize the ATR stop and target multipliers and the ADX threshold.

When you're ready to search instead of guess, hand the parameters to the
[optimizer](/guides/optimize-a-strategy) — the ATR multipliers, the ADX
threshold, and the RSI level are all natural things to sweep.

<Warning>
  This example is **illustrative, not a recommendation**. It exists to exercise a
  daily regime filter, an ADX gate, an RSI trigger, ATR-based exits, a trailing
  stop, and a per-day cap together in one strategy — not because this exact
  combination is profitable. Treat it as a learning template, then build and test
  your own.
</Warning>

## Next steps

<CardGroup cols={2}>
  <Card title="Spread, z-score and COT" icon="layer-group" href="/tutorials/spread-zscore-cot">
    Go advanced: trade the ES-NQ spread with positioning and correlation filters.
  </Card>

  <Card title="Signals & indicators" icon="wave-square" href="/concepts/signals-indicators-series">
    How ATR, ADX, RSI, and EMA are computed — real TA-Lib, not approximations.
  </Card>

  <Card title="Timeframes, bars & sessions" icon="clock" href="/concepts/timeframes-bars-sessions">
    How a daily regime filter and a 5-minute entry coexist in one strategy.
  </Card>

  <Card title="Optimize a strategy" icon="gauge-high" href="/guides/optimize-a-strategy">
    Sweep the ATR multipliers and ADX threshold instead of guessing.
  </Card>
</CardGroup>
