Swing-basierter Stop-Loss
Stop-loss below the low / above the high of the trigger candle. A structural stop exactly at the point where the setup becomes invalid.
Core idea
Many setups have a "touching candle" — the bar that triggers the entry impulse (e.g. the pullback bar in the Holy Grail setup or the inside bar in the outside-inside breakout). A swing stop places the stop-loss exactly below/above this candle.
Logic: If price falls below the low of the trigger candle (for a long), the setup was wrong. The trade thesis has failed — immediate exit.
Calculation
Long: stop = low_der_triggering_candle
Short: stop = high_der_triggering_candle
In Botty's conditions.py:
def get_swing_stop(df, latest, side):
if side == LONG: return float(df["low"].iloc[-2])
if side == SHORT: return float(df["high"].iloc[-2])
iloc[-2] = second-to-last candle (the signal candle). The stop is then placed on the exchange as a reduce-only order.
Pros
- Logically grounded — the stop corresponds to the exact invalidation point.
- Tight stops possible — with a good entry, the stop often sits very close, enabling good R-multiples.
- No arbitrariness — no "let's just use 2%" without a reason.
When to use?
- With pattern-based entries (Holy Grail, outside-inside breakout)
- When the trigger candle has a clearly defined high/low
- When no better swing level on a higher timeframe is nearby
Alternatives
| Stop type | When it's better |
|---|---|
| Swing stop | Pattern entries with a clear trigger candle |
| ATR stop | Volatile markets where wicks often pierce the candle low |
| Fixed % | When volatility is unclear, or as a backtesting default |