A Clawdbot skill that gives your agent native access to DWLF — a market analysis platform for crypto and stocks.

Interact with DWLF (dwlf.co.uk), a market analysis platform for crypto and stocks. Use for: market data, price charts, technical indicators (EMA, RSI, DSS, S/R, trendlines, candlestick patterns, SMC), strategies (visual signal builder), backtesting, custom events, trade signals, portfolio tracking, watchlists, trade journaling, chart annotations, trade plans, position sizing, and academy content. Trigger on: market analysis, trading signals, backtests, portfolio, DWLF, chart indicators, support/resistance, strategy builder, trade journal, watchlist, chart annotations, trade plans, position sizing, how's BTC, how's the market.

Instalar
$clawhub install dwlf

DWLF — Market Analysis Platform

API base: https://api.dwlf.co.uk/v2

Auth

Use API key auth. Check TOOLS.md for the key. Header: Authorization: ApiKey dwlf_sk_...

Helper script: scripts/dwlf-api.sh

Quick Start

# Generic GET request
./scripts/dwlf-api.sh GET /market-data/BTC-USD

# With query params
./scripts/dwlf-api.sh GET "/events?symbol=BTC-USD&limit=10"

# POST request
./scripts/dwlf-api.sh POST /visual-backtests '{"strategyId":"...","symbol":"BTC-USD"}'

Annotation Examples

# Create a horizontal line annotation at a key support level
./scripts/dwlf-api.sh POST /annotations '{
  "symbol": "BTC-USD",
  "timeframe": "1d",
  "type": "hline",
  "data": { "price": 95000, "color": "#00ff00", "label": "Key Support", "lineStyle": "solid", "lineWidth": 2, "showPrice": true },
  "origin": "ai"
}'

# Create a text annotation on chart
./scripts/dwlf-api.sh POST /annotations '{
  "symbol": "ETH-USD",
  "timeframe": "4h",
  "type": "text",
  "data": { "text": "Breakout zone", "price": 3800, "time": "2025-06-01T00:00:00Z", "color": "#ffaa00", "fontSize": 14 },
  "origin": "ai"
}'

# Bulk create multiple annotations
./scripts/dwlf-api.sh POST /annotations/bulk '{
  "annotations": [
    { "symbol": "BTC-USD", "timeframe": "1d", "type": "hline", "data": { "price": 100000, "color": "#ff0000", "label": "Resistance" }, "origin": "ai" },
    { "symbol": "BTC-USD", "timeframe": "1d", "type": "hline", "data": { "price": 92000, "color": "#00ff00", "label": "Support" }, "origin": "ai" }
  ]
}'

# List annotations for a symbol
./scripts/dwlf-api.sh GET "/annotations?symbol=BTC-USD&timeframe=1d"

# Update an annotation (merges data — only changes specified fields)
./scripts/dwlf-api.sh PUT /annotations/abc123 '{ "data": { "color": "#ff0000" } }'

Trade Plan & Position Sizing Examples

# Calculate position size
./scripts/dwlf-api.sh POST /tools/position-size '{
  "accountSize": 10000,
  "riskPercent": 2,
  "entryPrice": 95000,
  "stopLoss": 93000,
  "symbol": "BTC-USD"
}'

# Create a trade plan
./scripts/dwlf-api.sh POST /trade-plans '{
  "symbol": "BTC-USD",
  "direction": "long",
  "entryPrice": 95000,
  "stopLoss": 93000,
  "takeProfit": 100000,
  "notes": "Bounce off key support with RSI divergence"
}'

Symbol Format

  • Crypto: BTC-USD, ETH-USD, SOL-USD (always with -USD suffix)
  • Stocks/ETFs: TSLA, NVDA, META, MARA, RIOT
  • Forex: GBP-USD, EUR-USD

If user says "BTC" → use BTC-USD. If "TSLA" → use TSLA.

Core Endpoints

Market Data

Method Path Description
GET /market-data/{symbol}?interval=1d&limit=50 OHLCV candles
GET /market-data/symbols List all tracked symbols
GET /support-resistance/{symbol} S/R levels with scores
GET /chart-indicators/{symbol}?interval=1d All indicators (RSI, EMA, MACD, etc.)
GET /trendlines/{symbol} Auto-detected trendlines
GET /events?symbol={symbol}&limit=20 System events (breakouts)
GET /events?type=custom_event&scope=user&symbol={symbol}&days=30 User's custom events (wcl, dss, reversals etc.)

Chart Annotations

Method Path Description
GET /annotations?symbol={symbol}&timeframe={tf} List annotations
POST /annotations Create annotation (hline, text, trendline, rectangle, channel)
PUT /annotations/{annotationId} Update annotation (merges data fields)
DELETE /annotations/{annotationId} Delete annotation
POST /annotations/bulk Bulk create annotations

Trade Plans

Method Path Description
GET /trade-plans List trade plans
GET /trade-plans/{planId} Get trade plan
POST /trade-plans Create trade plan
PUT /trade-plans/{planId} Update trade plan
DELETE /trade-plans/{planId} Delete trade plan
POST /trade-plans/{planId}/duplicate Duplicate trade plan

Position Sizing

Method Path Description
POST /tools/position-size Calculate position size from risk params

User Settings

Method Path Description
GET /user/settings Get user settings
PUT /user/settings Update user settings
DELETE /user/settings/{settingKey} Delete a setting

Strategies & Signals

Method Path Description
GET /visual-strategies List user's strategies
GET /visual-strategies/{id} Strategy details
POST /visual-strategies Create strategy
PUT /visual-strategies/{id} Update strategy
GET /user/trade-signals/active Active trade signals
GET /user/trade-signals/recent?limit=20 Recent signals
GET /user/trade-signals/stats Signal performance stats
GET /user/trade-signals/symbol/{symbol} Signals for a symbol

Backtesting

Method Path Description
POST /backtests Trigger backtest (async)
GET /backtests List backtests
GET /backtests/summary Backtest summary
GET /backtests/{requestId} Get backtest status
GET /backtests/{requestId}/results Get backtest results
DELETE /backtests/{requestId} Delete a backtest

Backtests are async — POST triggers, then poll GET until status: "completed". - Body: { strategyId, symbols: ["BTC-USD"], startDate: "2025-01-01", endDate: "2026-01-30" } - Note: symbols is an array, not symbol (singular).

Portfolio & Trades

Method Path Description
GET /portfolios List portfolios
GET /portfolios/{id} Portfolio details + holdings
GET /trades?status=open List trades
POST /trades Log a new trade
PUT /trades/{id} Update trade
GET /trade-plans List trade plans

Watchlist

Method Path Description
GET /watchlist Get watchlist
POST /watchlist Add symbol ({"symbol":"BTC-USD"})
DELETE /watchlist/{symbol} Remove symbol

Custom Events

Method Path Description
GET /custom-events List custom events
POST /custom-events Create custom event
GET /custom-events/{id} Event details

Custom Event Symbol Activation

Method Path Description
POST /custom-event-symbols/:eventId/enable-all Bulk activate symbols for an event
POST /custom-event-symbols/:eventId/disable-all Bulk deactivate symbols for an event
GET /custom-event-symbols/event/:eventId Get active symbols for an event
GET /custom-event-symbols List all event-symbol associations

Strategy Symbol Activation

Method Path Description
POST /strategy-symbols/:strategyId/enable-all Bulk activate symbols for a strategy
POST /strategy-symbols/:strategyId/disable-all Bulk deactivate symbols for a strategy
GET /strategy-symbols/strategy/:strategyId Get active symbols for a strategy
GET /strategy-symbols List all strategy-symbol associations

AI Summaries

Method Path Description
GET /ai/dashboard Full account overview: watchlist, signals, trades, portfolios, strategies, events
GET /ai/symbol-brief/{symbol} Single-symbol snapshot: price, candles, indicators, S/R, events, signals
GET /ai/strategy-performance All strategies with signal stats, win rate, P&L breakdowns

💡 Use these first! The AI summary endpoints are pre-aggregated for AI consumption. When a user asks "how's BTC?" or "what's going on?", hit these before making multiple individual calls.

Evaluations

Method Path Description
POST /evaluations Trigger evaluation run
GET /evaluations/{id} Get evaluation results

Symbol Activation (Required After Creation)

⚠️ IMPORTANT: Creating a custom event or strategy does NOT automatically activate it for any symbols. After creation, you MUST ask the user which symbols to activate it for, then call the enable endpoint. Without this step, the event/strategy will not fire or generate signals.

Workflow: Custom Events

  1. Create the event → POST /custom-events
  2. Compile the event → POST /custom-events/{id}/compile
  3. Ask the user which symbols to activate for
  4. Activate symbolsPOST /custom-event-symbols/{eventId}/enable-all with { "symbols": ["BTC-USD", "ETH-USD"] }

Workflow: Strategies

  1. Create the strategy → POST /visual-strategies
  2. Compile the strategy → POST /visual-strategies/{id}/compile
  3. Ask the user which symbols to activate for
  4. Activate symbolsPOST /strategy-symbols/{strategyId}/enable-all with { "symbols": ["BTC-USD", "ETH-USD"] }

Editing Events or Strategies

⚠️ Any update to a custom event or strategy requires recompilation! The evaluator runs the compiled output, not the visual graph. If you update nodes, edges, conditions, or parameters without recompiling, the changes have no effect.

  • After editing an event: POST /custom-events/{id}/compile
  • After editing a strategy: POST /visual-strategies/{id}/compile

Always recompile immediately after any PUT update call.

Checking Active Symbols

  • Event symbols: GET /custom-event-symbols/event/{eventId}
  • Strategy symbols: GET /strategy-symbols/strategy/{strategyId}
  • All activations: GET /custom-event-symbols and GET /strategy-symbols (query: ?activeOnly=true)

Deactivating Symbols

  • Event: POST /custom-event-symbols/{eventId}/disable-all with { "symbols": [...] }
  • Strategy: POST /strategy-symbols/{strategyId}/disable-all with { "symbols": [...] }

Response Formatting

When presenting data to users:

Market overview: Show price, % change, key S/R levels, and any recent events.

Signals: Show symbol, direction, entry, stop loss, confidence score, strategy name.

S/R levels: Sort by score (strongest first), show level and touch count.

Backtests: Show trade count, win rate, total return, Sharpe ratio, best/worst trades.

Available Indicators

EMA (multiple periods), SMA, RSI, MACD, Bollinger Bands, DSS (Double Smoothed Stochastic), Stochastic RSI, ATR, ADX, OBV, Volume Profile, Ichimoku Cloud, Fibonacci Retracement, Support/Resistance, Trendlines, Candlestick Patterns, SMC (Order Blocks, FVGs, BOS/ChoCH).

Academy

DWLF Academy is a CDN-hosted collection of educational content (15 tracks, 60+ lessons) covering indicators, events, strategies, charting, and more. No auth required.

Use academy tools to read lesson content and understand DWLF concepts: - dwlf_list_academy_tracks — browse all tracks and lessons - dwlf_search_academy — search by keyword - dwlf_get_academy_lesson — read a specific lesson (markdown)

When a user asks "how does X work in DWLF?" or "what is DSS?", check the academy first — it likely has a lesson explaining it.

Detailed Reference

  • API endpoints (params, response shapes): read references/api-endpoints.md
  • Strategy builder (node types, edge wiring, examples): read references/strategy-builder.md