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"}'
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.) |
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 |
/visual-backtests |
Trigger backtest (async) |
| GET |
/visual-backtests/{id} |
Get backtest results |
Backtests are async — POST triggers, then poll GET until complete.
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 |
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
- Create the event →
POST /custom-events
- Compile the event →
POST /custom-events/{id}/compile
- Ask the user which symbols to activate for
- Activate symbols →
POST /custom-event-symbols/{eventId}/enable-all with { "symbols": ["BTC-USD", "ETH-USD"] }
Workflow: Strategies
- Create the strategy →
POST /visual-strategies
- Compile the strategy →
POST /visual-strategies/{id}/compile
- Ask the user which symbols to activate for
- Activate symbols →
POST /strategy-symbols/{strategyId}/enable-all with { "symbols": ["BTC-USD", "ETH-USD"] }
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
1---2name: dwlf3description: 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, and academy content. Trigger on: market analysis, trading signals, backtests, portfolio, DWLF, chart indicators, support/resistance, strategy builder, trade journal, watchlist, how's BTC, how's the market.4---5
6# DWLF — Market Analysis Platform
7
8API base: `https://api.dwlf.co.uk/v2`
9
10## Auth
11
12Use API key auth. Check `TOOLS.md` for the key. Header:
13```
14Authorization: ApiKey dwlf_sk_...
15```
16
17Helper script: `scripts/dwlf-api.sh`
18
19## Quick Start
20
21```bash
22# Generic GET request
23./scripts/dwlf-api.sh GET /market-data/BTC-USD
24
25# With query params
26./scripts/dwlf-api.sh GET "/events?symbol=BTC-USD&limit=10"
27
28# POST request
29./scripts/dwlf-api.sh POST /visual-backtests '{"strategyId":"...","symbol":"BTC-USD"}'
30```
31
32## Symbol Format
33
34- Crypto: `BTC-USD`, `ETH-USD`, `SOL-USD` (always with `-USD` suffix)
35- Stocks/ETFs: `TSLA`, `NVDA`, `META`, `MARA`, `RIOT`
36- Forex: `GBP-USD`, `EUR-USD`
37
38If user says "BTC" → use `BTC-USD`. If "TSLA" → use `TSLA`.
39
40## Core Endpoints
41
42### Market Data
43| Method | Path | Description |
44|--------|------|-------------|
45| GET | `/market-data/{symbol}?interval=1d&limit=50` | OHLCV candles |
46| GET | `/market-data/symbols` | List all tracked symbols |
47| GET | `/support-resistance/{symbol}` | S/R levels with scores |
48| GET | `/chart-indicators/{symbol}?interval=1d` | All indicators (RSI, EMA, MACD, etc.) |
49| GET | `/trendlines/{symbol}` | Auto-detected trendlines |
50| GET | `/events?symbol={symbol}&limit=20` | System events (breakouts) |
51| GET | `/events?type=custom_event&scope=user&symbol={symbol}&days=30` | User's custom events (wcl, dss, reversals etc.) |
52
53### Strategies & Signals
54| Method | Path | Description |
55|--------|------|-------------|
56| GET | `/visual-strategies` | List user's strategies |
57| GET | `/visual-strategies/{id}` | Strategy details |
58| POST | `/visual-strategies` | Create strategy |
59| PUT | `/visual-strategies/{id}` | Update strategy |
60| GET | `/user/trade-signals/active` | Active trade signals |
61| GET | `/user/trade-signals/recent?limit=20` | Recent signals |
62| GET | `/user/trade-signals/stats` | Signal performance stats |
63| GET | `/user/trade-signals/symbol/{symbol}` | Signals for a symbol |
64
65### Backtesting
66| Method | Path | Description |
67|--------|------|-------------|
68| POST | `/visual-backtests` | Trigger backtest (async) |
69| GET | `/visual-backtests/{id}` | Get backtest results |
70
71Backtests are async — POST triggers, then poll GET until complete.
72
73### Portfolio & Trades
74| Method | Path | Description |
75|--------|------|-------------|
76| GET | `/portfolios` | List portfolios |
77| GET | `/portfolios/{id}` | Portfolio details + holdings |
78| GET | `/trades?status=open` | List trades |
79| POST | `/trades` | Log a new trade |
80| PUT | `/trades/{id}` | Update trade |
81| GET | `/trade-plans` | List trade plans |
82
83### Watchlist
84| Method | Path | Description |
85|--------|------|-------------|
86| GET | `/watchlist` | Get watchlist |
87| POST | `/watchlist` | Add symbol (`{"symbol":"BTC-USD"}`) |
88| DELETE | `/watchlist/{symbol}` | Remove symbol |
89
90### Custom Events
91| Method | Path | Description |
92|--------|------|-------------|
93| GET | `/custom-events` | List custom events |
94| POST | `/custom-events` | Create custom event |
95| GET | `/custom-events/{id}` | Event details |
96
97### Custom Event Symbol Activation
98| Method | Path | Description |
99|--------|------|-------------|
100| POST | `/custom-event-symbols/:eventId/enable-all` | Bulk activate symbols for an event |
101| POST | `/custom-event-symbols/:eventId/disable-all` | Bulk deactivate symbols for an event |
102| GET | `/custom-event-symbols/event/:eventId` | Get active symbols for an event |
103| GET | `/custom-event-symbols` | List all event-symbol associations |
104
105### Strategy Symbol Activation
106| Method | Path | Description |
107|--------|------|-------------|
108| POST | `/strategy-symbols/:strategyId/enable-all` | Bulk activate symbols for a strategy |
109| POST | `/strategy-symbols/:strategyId/disable-all` | Bulk deactivate symbols for a strategy |
110| GET | `/strategy-symbols/strategy/:strategyId` | Get active symbols for a strategy |
111| GET | `/strategy-symbols` | List all strategy-symbol associations |
112
113### Evaluations
114| Method | Path | Description |
115|--------|------|-------------|
116| POST | `/evaluations` | Trigger evaluation run |
117| GET | `/evaluations/{id}` | Get evaluation results |
118
119## Symbol Activation (Required After Creation)
120
121> ⚠️ **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**.
122
123### Workflow: Custom Events
1241. Create the event → `POST /custom-events`
1252. Compile the event → `POST /custom-events/{id}/compile`
1263. **Ask the user** which symbols to activate for
1274. **Activate symbols** → `POST /custom-event-symbols/{eventId}/enable-all` with `{ "symbols": ["BTC-USD", "ETH-USD"] }`
128
129### Workflow: Strategies
1301. Create the strategy → `POST /visual-strategies`
1312. Compile the strategy → `POST /visual-strategies/{id}/compile`
1323. **Ask the user** which symbols to activate for
1334. **Activate symbols** → `POST /strategy-symbols/{strategyId}/enable-all` with `{ "symbols": ["BTC-USD", "ETH-USD"] }`
134
135### Checking Active Symbols
136- Event symbols: `GET /custom-event-symbols/event/{eventId}`
137- Strategy symbols: `GET /strategy-symbols/strategy/{strategyId}`
138- All activations: `GET /custom-event-symbols` and `GET /strategy-symbols` (query: `?activeOnly=true`)
139
140### Deactivating Symbols
141- Event: `POST /custom-event-symbols/{eventId}/disable-all` with `{ "symbols": [...] }`
142- Strategy: `POST /strategy-symbols/{strategyId}/disable-all` with `{ "symbols": [...] }`
143
144## Response Formatting
145
146When presenting data to users:
147
148**Market overview:** Show price, % change, key S/R levels, and any recent events.
149
150**Signals:** Show symbol, direction, entry, stop loss, confidence score, strategy name.
151
152**S/R levels:** Sort by score (strongest first), show level and touch count.
153
154**Backtests:** Show trade count, win rate, total return, Sharpe ratio, best/worst trades.
155
156## Available Indicators
157
158EMA (multiple periods), SMA, RSI, MACD, Bollinger Bands, DSS (Double Smoothed Stochastic),
159Stochastic RSI, ATR, ADX, OBV, Volume Profile, Ichimoku Cloud, Fibonacci Retracement,
160Support/Resistance, Trendlines, Candlestick Patterns, SMC (Order Blocks, FVGs, BOS/ChoCH).
161
162## Academy
163
164DWLF Academy is a CDN-hosted collection of educational content (15 tracks, 60+ lessons) covering indicators, events, strategies, charting, and more. No auth required.
165
166Use academy tools to read lesson content and understand DWLF concepts:
167- `dwlf_list_academy_tracks` — browse all tracks and lessons
168- `dwlf_search_academy` — search by keyword
169- `dwlf_get_academy_lesson` — read a specific lesson (markdown)
170
171When a user asks "how does X work in DWLF?" or "what is DSS?", check the academy first — it likely has a lesson explaining it.
172
173## Detailed Reference
174
175- **API endpoints** (params, response shapes): read `references/api-endpoints.md`
176- **Strategy builder** (node types, edge wiring, examples): read `references/strategy-builder.md`