# Signal Filters

Filters sit between pattern detection and order placement. A signal is acted on only if **every enabled filter passes**. This suppresses false entries in choppy, over-extended, or low-momentum markets.

All filters are individually toggleable — enable only the ones that improve results on your pair and timeframe.

***

## EMA Trend Filters[​](#ema-trend-filters "Direct link to EMA Trend Filters")

Three exponential moving averages can gate signals:

| Input                       | Default | Purpose                                                   |
| --------------------------- | ------- | --------------------------------------------------------- |
| `Enable Fast EMA Filter`    | false   | Require price above/below fast EMA (default period 11)    |
| `Enable Slow EMA Filter`    | true    | Require price above/below slow EMA (default period 21)    |
| `Enable Slowest EMA Filter` | true    | Require price above/below slowest EMA (default period 70) |
| `Require Strict EMA Order`  | true    | All active EMAs must be stacked in trend direction        |

When `Require Strict EMA Order` is true, EMAs must be aligned for the signal direction (e.g. for a BUY: fast EMA above slow EMA above slowest EMA). This prevents entries against established trend structures.

### EMA Slope Filter[​](#ema-slope-filter "Direct link to EMA Slope Filter")

`Use EMA Slope Filter` — additionally requires the slow EMA slope (measured over `EMA Slope Lookback Bars` closed bars) to exceed `Min Slow EMA Slope (ATR)`. Useful for filtering out flat, sideways conditions.

### EMA Distance Filter[​](#ema-distance-filter "Direct link to EMA Distance Filter")

`Use EMA Distance Filter` — requires the signal candle to be at least `Min Price Distance From Slow EMA (ATR)` ATR units away from the slow EMA, ensuring entries are not too close to a mean-reversion level.

***

## MA Crossover Filter[​](#ma-crossover-filter "Direct link to MA Crossover Filter")

`Enable Moving Average Crossover Filter` — requires the fast EMA to have crossed above (BUY) or below (SELL) the slow EMA recently, confirming directional momentum is fresh.

**Trend Filter Mode** selects the behaviour:

| Mode            | Behaviour                                                         |
| --------------- | ----------------------------------------------------------------- |
| `EMA Classic`   | Standard EMA cross / stack check (default)                        |
| `EMA Anti-Chop` | Regime-aware filter that suppresses signals in ranging conditions |

***

## ADX Trend Strength Filter[​](#adx-trend-strength-filter "Direct link to ADX Trend Strength Filter")

`Use ADX Trend Strength Filter` — requires the ADX value to exceed `Min ADX Trend Strength` before a signal is acted on. Prevents entries in directionless, low-volatility markets.

| Input                    | Default |
| ------------------------ | ------- |
| `ADX Period`             | 14      |
| `Min ADX Trend Strength` | 20.0    |

***

## ATR Volatility Filter[​](#atr-volatility-filter "Direct link to ATR Volatility Filter")

`Use ATR-based SL Filter` — compares the calculated stop loss distance against an ATR multiple. Signals where the natural SL is too wide are rejected.

| Input                              | Default | Applies to   |
| ---------------------------------- | ------- | ------------ |
| `Max SL for Banana signals (xATR)` | 2.0     | B1, B2, B3   |
| `Max SL for Seed signals (xATR)`   | 1.5     | Seed TP, TTP |

Particularly useful for avoiding entries after news spikes where the signal candle range (and thus SL) is abnormally wide.

***

## Daily Range Filter[​](#daily-range-filter "Direct link to Daily Range Filter")

`Use Daily Range Filter` — measures the current day's range as a percentage of the Average Daily Range (ADR) over `ADR Period` days. Signals are blocked when the day's range exceeds `Max Daily Range %`.

`Use Session Movement Filter` — measures movement from `Session Start Hour` to the current bar as a percentage of ADR. Blocks entries when too much ground has already been covered in the session.

***

## Open Price Direction Filter[​](#open-price-direction-filter "Direct link to Open Price Direction Filter")

`Use Open Price Filter` — captures the reference close price at `Reference Hour` (default 10:00). BUY signals are only permitted if current price is **above** that reference; SELL signals only if **below** it. Aligns entries with the day's early directional bias.

***

## SL distance limits[​](#sl-distance-limits "Direct link to SL distance limits")

Independent of the ATR filter, absolute pip limits can be set on the stop loss:

| Input                 | Default      | Effect                                     |
| --------------------- | ------------ | ------------------------------------------ |
| `Minimum SL Distance` | 3.0 pips     | Signal rejected if SL is smaller than this |
| `Maximum SL Distance` | 0 (disabled) | Signal rejected if SL is wider than this   |
