Skip to content
Finance
Skill

/exit-strategies

Systematic exit rules, stop-loss methods, take-profit strategies, and trailing stop implementations for crypto trading

From plugin
trading-skills
26767 skills
Install
$ npx -y skills add agiprolabs/claude-trading-skills --skill exit-strategies --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/exit-strategies

Context preview

The summary Claude sees to decide when to auto-load this skill.

Systematic exit rules, stop-loss methods, take-profit strategies, and trailing stop implementations for crypto trading

SKILL.md

exit-strategies.SKILL.md
name: exit-strategies
description: Systematic exit rules, stop-loss methods, take-profit strategies, and trailing stop implementations for crypto trading

Exit Strategies

Entries are easy, exits are everything. A mediocre entry with a disciplined exit will outperform a perfect entry with no exit plan. This skill covers systematic, rule-based exit methods for crypto and Solana token trading.

Why Exits Matter

  • **Entries** determine _if_ you participate. **Exits** determine _how much_ you keep.
  • Most traders spend 90% of effort on entries and 10% on exits — invert this.
  • Without defined exits you rely on emotion, which guarantees inconsistency.
  • Every trade should have **three exits defined before entry**: stop loss, take profit,

and trailing stop.

Exit Categories

1. Stop Loss — Risk Management Exits

Predefined price level where you close the position to cap downside.

| Method | Description | Best For | |--------|-------------|----------| | Fixed percentage | Exit at entry − X% | Simple setups, beginners | | ATR-based | Entry − ATR(14) × multiplier | Volatility-adaptive | | Support level | Below nearest swing low | Technically defined risk | | Maximum loss | Absolute SOL/USD cap | Account protection |

**ATR-based stop (recommended default):**

import pandas_ta as ta

atr = df.ta.atr(length=14)
stop_loss = entry_price - (atr.iloc[-1] * 2.0)  # 2x ATR below entry

Multiplier guide:

  • **1.5×** — Tight. High win rate needed. Good for scalps.
  • **2.0×** — Standard. Balances noise filtering with risk.
  • **3.0×** — Wide. For swing trades in volatile conditions.

See `references/stop_loss_methods.md` for complete methodology.

2. Take Profit — Target Exits

Predefined levels where you lock in gains.

**Fixed risk/reward targets:**

risk = entry_price - stop_loss_price
tp_2r = entry_price + (risk * 2)  # 2:1 R:R
tp_3r = entry_price + (risk * 3)  # 3:1 R:R
tp_5r = entry_price + (risk * 5)  # 5:1 R:R

**Scaled exit framework (recommended for meme/PumpFun tokens):**

| Tranche | Size | Target | Action After | |---------|------|--------|--------------| | 1 | 25% | 2× risk | Move stop to breakeven | | 2 | 25% | 3–5× risk | Trail remainder | | 3 | 25% | 5–10× risk | Tighten trail | | 4 | 25% | Trailing stop | Moonbag — let it ride |

**Market cap milestone exits:**

For PumpFun and meme tokens where R:R ratios are less meaningful:

milestones = [
    {"mcap": 50_000,  "sell_pct": 0.25, "label": "Cover cost"},
    {"mcap": 100_000, "sell_pct": 0.25, "label": "Lock profit"},
    {"mcap": 500_000, "sell_pct": 0.25, "label": "Major profit"},
    # Hold 25% as moonbag with trailing stop
]

See `references/take_profit_strategies.md` for full methodology including Fibonacci extension targets and volume-based exits.

3. Trailing Stop — Trend-Following Exits

Dynamic stops that follow price upward but never move down.

**Percentage trailing:**

def percentage_trailing_stop(
    current_price: float,
    highest_since_entry: float,
    trail_pct: float = 0.10,
) -> tuple[float, bool]:
    """Return (stop_level, triggered)."""
    highest = max(highest_since_entry, current_price)
    stop = highest * (1 - trail_pct)
    return stop, current_price <= stop

**ATR trailing (Chandelier Exit):**

def chandelier_exit(
    highs: list[float],
    atr_value: float,
    multiplier: float = 2.5,
    lookback: int = 22,
) -> float:
    """Highest high over lookback minus ATR * multiplier."""
    highest_high = max(highs[-lookback:])
    return highest_high - (atr_value * multiplier)

**EMA trailing:**

# Exit when close < EMA for M consecutive bars
ema = df.ta.ema(length=20)
below_ema = df["close"] < ema
consecutive_below = below_ema.rolling(3).sum() == 3  # 3 bars below

Typical EMA periods: 10 (scalp), 20 (day trade), 50 (swing).

See `references/trailing_stops.md` for Parabolic SAR, SuperTrend, and step trailing.

4. Time-Based Exits

Exit if the trade hasn't moved in your favor within a defined window.

bars_since_entry = current_bar - entry_bar
if bars_since_entry > max_hold_bars and current_pnl <= 0:
    exit_reason = "time_stop"

Guidelines:

  • **Scalp**: 5–15 minutes
  • **Day trade**: 4–8 hours
  • **Swing**: 3–5 days
  • **PumpFun snipe**: 2–10 minutes (token-specific)

Time stops prevent capital from sitting in dead trades.

5. Signal-Based Exits

Exit when the indicator that generated the entry signal reverses.

# RSI reversal exit
rsi = df.ta.rsi(length=14)
if position == "long" and rsi.iloc[-1] > 70:
    exit_reason = "rsi_overbought"

# MACD crossover exit
macd = df.ta.macd()
if macd["MACDs_12_26_9"].iloc[-1] < macd["MACDh_12_26_9"].iloc[-1]:
    exit_reason = "macd_bearish_cross"

Signal exits work well when combined with trailing stops — the signal triggers tightening the trail rather than an immediate full exit.

6. Liquidity-Based Exits

Exit when volume or liquidity deteriorates, signaling reduced ability to exit cleanly.

recent_vol = df["volume"].rolling(10).mean().iloc[-1]
baseline_vol = df["volume"].rolling(50).mean().iloc[-1]

if recent_vol < baseline_vol * 0.3:  # Volume dropped to 30% of baseline
    exit_reason = "liquidity_deterioration"

Critical for low-cap Solana tokens where liquidity can evaporate rapidly.

PumpFun-Specific Exit Rules

PumpFun tokens have unique dynamics requiring specialized exit logic.

Pre-Graduation Exits

Tokens on the bonding curve before reaching 85 SOL fill:

bonding_fill_pct = current_fill_sol / 85.0

if bonding_fill_pct > 0.90:
    # Near graduation — decide: hold through or exit before
    # Graduation creates volatility spike, both up and down
    pass

if bonding_fill_pct < 0.50 and time_since_entry > 300:  # 5 min
    exit_reason = "stalled_bonding_curve"

Volume Decay Exits

buy_vol_1m = get_buy_volume(token, "1m")
buy_vol_5m = get_buy_volume(token, "5m") /
Read more
Ships withtrading-skills

A comprehensive collection of 67 ready-to-use trading, DeFi, and quantitative finance Agent Skills. Works with Claude Code, Cursor, Codex, Gemini CLI, and 30+ other tools.

Get the whole plugin
Stats
312
Stars
62
Forks
Maintained
Maintenance
Python
Language
MIT
License
1mo ago
Last commit
5mo ago
Created

Repo: agiprolabs/claude-trading-skills