OpenClaw Skillv1.0.0

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

andywilliamsby andywilliams
Deploy on EasyClawdfrom $14.9/mo

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.

How to use this skill

OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours — no server setup needed.

  1. Sign up on EasyClawd (2 minutes)
  2. Connect your Telegram bot
  3. Install A Clawdbot skill that gives your agent native access to DWLF — a market analysis platform for crypto and stocks. from the skills panel
Get started — from $14.9/mo
5stars
2,589downloads
1installs
0comments
1versions

Latest Changelog

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.

Tags

latest: 1.0.0

Skill Documentation

---
name: 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.
metadata:
  clawdbot:
    emoji: "📊"
    requires:
      bins: ["curl", "jq"]
---

# 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

```bash
# 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

```bash
# 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

```bash
# 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 act
Read full documentation on ClawHub
Security scan, version history, and community comments: view on ClawHub