# Channel Trading

> Trade within ascending, descending, and horizontal channels. Use when range trading, riding trends with defined boundaries, or finding breakout setups.

- Skill: `ske-labs/channel-trading` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ske-labs/channel-trading`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ske-labs/channel-trading/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: SKE-Labs (https://skillmd.com/u/ske-labs)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/ske-labs/channel-trading

---


# Channel Trading

Channels define parallel price boundaries for trading bounces or anticipating breakouts.

## Pattern Structure

### Ascending Channel (Bullish)
- Both lines slope upward — buy at lower line, sell at upper
- Break below = reversal signal

### Descending Channel (Bearish)
- Both lines slope downward — sell at upper line, cover at lower
- Break above = reversal signal

### Horizontal Channel (Range)
- Parallel horizontal lines — classic range trading
- Break either direction = new trend

## Workflow

### 1. Get Swing Point Data

Fetch exact timestamps and prices for swing highs/lows (need 2+ per line):

```
get_candles_around_date(symbol=<symbol>, exchange=<exchange>, interval=<interval>, date=<swing_date>)
```

### 2. Draw the Channel (2 parallel trend lines)

Draw both channel boundaries as separate `trend` lines in parallel calls:

```
# Upper channel boundary (connecting swing highs)
draw_chart_analysis(action="create", drawing={
    "type": "trend",
    "points": [
        {"time": <high1_time>, "price": <high1_price>},
        {"time": <high2_time>, "price": <high2_price>}
    ],
    "options": {"text": "Channel R"}
})

# Lower channel boundary (connecting swing lows)
draw_chart_analysis(action="create", drawing={
    "type": "trend",
    "points": [
        {"time": <low1_time>, "price": <low1_price>},
        {"time": <low2_time>, "price": <low2_price>}
    ],
    "options": {"text": "Channel S"}
})
```

### 3. Confirm and Enter

**Channel Bounce:** Wait for price at boundary + reversal candle + RSI divergence via `get_indicators(indicator_code="rsi", symbol=<symbol>, exchange=<exchange>, interval=<interval>)`. Stop beyond boundary.

**Channel Breakout:** Wait for candle close outside channel. Confirm with `get_indicators(indicator_code="mfi", symbol=<symbol>, exchange=<exchange>, interval=<interval>)` for volume. Target = channel width projected from breakout. Mark breakout level:

```
draw_chart_analysis(action="create", drawing={
    "type": "breakout",
    "points": [
        {"time": <break_time>, "price": <break_price>},
        {"time": <target_time>, "price": <break_price>}
    ],
    "options": {"text": "Breakout"}
})
```

## Evidence and Validation

- Treat the setup as a testable hypothesis, not a prediction. Define thresholds, entry, invalidation, and exit before evaluating outcomes.
- Calibrate on the same instrument, venue, session, and timeframe. Use closed candles and a held-out or walk-forward sample; record every variant tried.
- Include spread, fees, slippage, borrow or funding, partial fills, and latency. Reject the setup when net expectancy is not positive or depends on one narrow parameter.
- Return observed inputs, missing data, cost assumptions, entry, invalidation, exit, and a valid, watch, or no-trade status.
- Research basis: [Lo, Mamaysky & Wang](https://www.nber.org/papers/w7613) found that some objectively defined chart patterns contain incremental information, while emphasizing that visual pattern recognition is subjective.

## Key Rules
- Minimum 4 total touch points (2 per line) to validate a channel
- Trade WITH channel direction: buy support in ascending, sell resistance in descending
- Channel midline acts as interim S/R — price rejecting at midline signals weakening momentum
- Stop applying the fade rule after its predeclared closed-bar breakout invalidation.
- Record incomplete boundary traversals as a feature; do not declare weakening without tested evidence.

## Related Skills
- **multi-timeframe-analysis** — HTF channels define trend; LTF channels refine entries
- **triangle-patterns** — Converging channels become triangles

