
Two EMAs plus an ATR-based neutral zone — like the commercial Larsson Line, but tunable, transparent, and backtested. Choose your bias.
Default parameters · BTCUSDT · 1d · 4 years · B&H +26.9%
EMA Trend Bias uses the same core logic as well-known commercial trend-following indicators (e.g. the so-called "Larsson Line"): two exponential moving averages combined with an ATR-based neutral zone. The difference here: you can tune the parameters yourself and backtest before spending several hundred dollars on a closed indicator.
The strategy works on two layers:
Layer 1 — 3 trend states (derived from the EMA difference and the ATR corridor):
Layer 2 — 4 trading modes (which state transitions trigger BUY/SELL):
The ATR-based neutral zone is the key innovation: it adapts to current volatility. In quiet markets the neutral zone shrinks (signals fire faster); in volatile markets it expands (signals require larger moves to fire). This filters out a lot of false signals that simple EMA cross strategies suffer from.
| Name | Default | Range | Description |
|---|---|---|---|
| Fast EMA Period | 30 | 5–100 | Fast exponential moving average period. |
| Slow EMA Period | 60 | 10–200 | Slow exponential moving average period. |
| ATR Period | 60 | 5–200 | Lookback for the ATR (Average True Range) used to size the neutral zone. |
| ATR Multiplier | 0.3 | 0.05–2 | Width of the neutral zone in ATR units. Higher = wider neutral zone, fewer signals. |
BTCUSDT · 1d · 4 years · default parameters · refreshed daily
Run with my own parameters →// Compute indicators
fast = EMA(close, ema_fast)
slow = EMA(close, ema_slow)
atr = ATR(close, atr_length)
gap = fast - slow
zone = atr * atr_multiplier
// Classify state
if gap > zone:
state = BULLISH (yellow)
else if gap < -zone:
state = BEARISH (blue)
else:
state = NEUTRAL (grey)
// Mode-specific entry/exit (example: Cautious)
if prev_state == NEUTRAL AND state == BULLISH:
if position.is_flat:
BUY
if prev_state == NEUTRAL AND state == BEARISH:
if position.is_long:
SELLStart with **Cautious** — it's symmetric (BUY only out of neutral, SELL only into neutral) and gives the cleanest baseline. Once you understand the indicator, try Bearish Bias for trending markets (waits for confirmation) or Bullish Bias for ranging markets (early entries, early exits).
The signal logic is the same family of trend-following techniques — both use two EMAs and an ATR neutral zone. Larsson Line is a closed commercial product with fixed parameters. EMA Trend Bias is open and tunable: pick your own EMAs, your own ATR multiplier, your own mode. We're not affiliated with the Larsson Line product.
Hit rates depend heavily on mode, asset, and timeframe. On Bitcoin weekly with the Cautious mode and default 30/60 EMAs, historically around 55–65 % win rate with a positive expectancy — but always check the live stats above the chart for the current observed values.
Two weighted moving averages crossing — recent candles weight more, signals fire faster than SMA-based crosses. Validated on BTC weekly.
The classic trend-following signal — when the 50-day SMA crosses above the 200-day SMA, the trend has flipped bullish.
Apply MACD logic to On-Balance Volume — combining volume confirmation with trend signals. Volume tells you the truth that price hides.
Check out our Strategy Insights Reports — pre-baked deep-dives with historical results, comparisons, and market context.