← Back to Skills Marketplace
andywilliams

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

by andywilliams · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
3041
Downloads
6
Stars
2
Active Installs
1
Versions
Install in OpenClaw
/install dwlf
Description
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.
README (SKILL.md)

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
Usage Guidance
This skill appears to be a functional DWLF client, but review these points before installing: - Credential handling: The helper script expects DWLF_API_KEY (and optionally DWLF_API_URL). The skill metadata does not declare that requirement — treat the absence as a packaging oversight. Provide the API key via the DWLF_API_KEY env var rather than storing it in a shared file. - TOOLS.md parsing: The script attempts to grep your TOOLS.md for the literal phrase "Jenna's own key" to extract an API key. That is brittle and potentially dangerous if your TOOLS.md contains other credentials. If you must use a file, create a dedicated minimal file with only the DWLF key and point TOOLS_MD at it, or better: set DWLF_API_KEY in the environment. - Write/delete capabilities: The skill exposes endpoints that can create/update/delete annotations, trades, trade-plans, and even purge signals. Only install if you trust the source and are comfortable granting an API key that can modify your DWLF account. Prefer creating an API key with the narrowest permissions possible (read-only if you only need reads). - Source provenance: The skill's Source/Homepage are unknown; README points to a GitHub repo but registry source is not authoritative. If possible, inspect the full repo yourself, confirm authorship, and run the script locally to verify behavior before giving it network access. - Autonomy: The agent can invoke the skill autonomously (platform default). Because the skill can perform destructive actions on your DWLF account, consider disabling autonomous invocation for this skill or requiring explicit approval for write operations. If you proceed: set DWLF_API_KEY in a controlled env var, avoid placing other secrets in TOOLS.md, audit the included scripts, and issue a limited-scope API key that you can revoke if anything unexpected happens.
Capability Analysis
Type: OpenClaw Skill Name: dwlf Version: 1.0.0 The skill is designed to interact with the DWLF market analysis platform. The `scripts/dwlf-api.sh` script uses `curl` and `jq` to make API calls to `api.dwlf.co.uk`. It retrieves the API key from either the `DWLF_API_KEY` environment variable or by parsing `TOOLS.md` (specifically looking for 'Jenna's own key'), which is a documented and expected method for OpenClaw agents to access credentials. No evidence of data exfiltration to unauthorized endpoints, malicious execution (e.g., `curl|bash`, `eval`), persistence mechanisms, or prompt injection attempts against the agent was found in any of the files. All instructions and code align with the stated purpose of providing market analysis capabilities.
Capability Assessment
Purpose & Capability
The skill's endpoints, examples, and included script match the described DWLF market-analysis purpose (market data, signals, annotations, backtests, etc.). However, the metadata does not declare the API key or other env vars even though the code requires DWLF_API_KEY and optionally DWLF_API_URL/TOOLS_MD. That omission is inconsistent with the stated purpose/requirements.
Instruction Scope
SKILL.md instructs the agent to call many read/write endpoints (create/update/delete annotations, trades, trade-plans, backtests). The included script will attempt to read a local TOOLS.md file to extract an API key (using a grep for the literal string "Jenna's own key"). That is a brittle, user-specific heuristic that causes the skill to read a local file for credentials and could inadvertently harvest other keys stored there. The rest of the instructions are within scope for a DWLF client.
Install Mechanism
No install spec (instruction-only with a small included helper script). This is low risk from arbitrary remote code installation — nothing is downloaded or executed beyond the packaged script and standard curl/jq usage.
Credentials
The skill requires an API key to operate, but requires.env and primary credential fields are empty in metadata. The runtime script reads DWLF_API_KEY and DWLF_API_URL env vars (and falls back to parsing TOOLS.md). Requesting access to an API key is proportionate, but not declaring it in metadata is inconsistent and the TOOLS.md parsing (with a hardcoded search for "Jenna's own key") is inappropriate and potentially exposes other secrets kept in that file.
Persistence & Privilege
always:false and no OS restrictions; the skill does not request permanent platform-wide presence and doesn't modify other skills or system settings. It can perform write actions on the DWLF account (annotations, trades, deletes) which is expected for a full-featured client — consider limiting agent autonomy (see guidance).
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install dwlf
  3. After installation, invoke the skill by name or use /dwlf
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
DWLF 1.0.0 initial release - Adds full integration with DWLF (dwlf.co.uk) market analysis platform for crypto, stocks, and forex. - Supports market data, chart indicators, trendlines, support/resistance, and strategy signals. - Provides helper scripts for API access and annotation management (including bulk operations). - Enables trade planning, position sizing calculations, portfolio tracking, and watchlist features. - Includes endpoints for backtesting, custom events, trade journaling, and academy content.
Metadata
Slug dwlf
Version 1.0.0
License
All-time Installs 2
Active Installs 2
Total Versions 1
Frequently Asked Questions

What is 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. It is an AI Agent Skill for Claude Code / OpenClaw, with 3041 downloads so far.

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

Run "/install dwlf" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

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

Yes, A Clawdbot skill that gives your agent native access to DWLF — a market analysis platform for crypto and stocks. is completely free (open-source). You can download, install and use it at no cost.

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

A Clawdbot skill that gives your agent native access to DWLF — a market analysis platform for crypto and stocks. is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

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

It is built and maintained by andywilliams (@andywilliams); the current version is v1.0.0.

💬 Comments