数据分析

wickworks

试用

Stateless OHLC primitives service — candlestick bars in, technical indicators + Smart-Money-Concepts objects out. Single POST / takes a bars array + an indicators selection map and returns computed primitives; GET /metadata is the output-path catalog; GET /health. 67 primitives across trend (SMA/EMA + 15 more MAs, slope, Donchian, Ichimoku), momentum (RSI, MACD, Stoch, StochRSI, ADX, MFI, CCI, Williams %R, ROC, MOM, TSI, TRIX, UO, Fisher), volatility (ATR, NATR, Bollinger, Keltner, Squeeze), volume (VWAP, VWMA, OBV, AD, ADOSC, CMF, KVO), and SMC (order blocks, fair-value gaps, BOS/CHoCH, swing structure, S/R levels, liquidity, retracements, sessions, previous-period H/L) plus pre-baked summaries. camelCase, NaN-safe JSON. Unified REST + MCP (streamable-HTTP at /mcp — tools health / list_indicators / metadata / compute). Auth-less by default. Use when the user wants technical indicators or Smart-Money-Concepts primitives computed from OHLC candlestick bars.

它能做什么

Stateless OHLC primitives service — bars in, indicators + Smart-Money-Concepts objects out. No scoring, no opinions, no state.

技能文档

wickworks

Stateless OHLC primitives service — bars in, indicators + Smart-Money-Concepts objects out. No scoring, no opinions, no state.

  • Trend — SMA/EMA + 15 other moving averages (dema, tema, hma, kama, zlma, t3, alma, jma, …), slope, linreg, Donchian channels, Ichimoku.
  • Momentum — RSI, MACD, Stochastic, StochRSI, ADX, MFI, CCI, Williams %R, ROC, MOM, TSI, TRIX, Ultimate Oscillator, Fisher.
  • Volatility — ATR, NATR, Bollinger Bands, Keltner Channels, Squeeze.
  • Volume — VWAP (anchored), VWMA, OBV, AD, ADOSC, CMF, KVO.
  • SMC — order blocks, fair-value gaps (fvg/fvgs), BOS/CHoCH (bosChoch), swing structure (swingLevels), S/R levels (srLevels), liquidity, retracements, sessions, previous-period H/L, levels.
  • Summariesposition, slope, momentum, volume, recentRange, price — pre-baked projections over the raw series.
  • Two ways to drive it — the REST API (POST /) and an MCP server (streamable-HTTP at /mcp). Same compute, same output envelope.

All JSON field names are camelCase; output is NaN-safe (NaNnull). Bars are UTC unix seconds; the container runs TZ=UTC.

For installation, configuration, and container setup, see references/setup.md.

Security & safety

  • Stateless + read-only — every call is self-contained: bars in, primitives out. wickworks stores nothing, writes no files, mutates nothing, and has no destructive operations. There is no state to corrupt and nothing to confirm before calling.
  • Auth-less by default, network-exposed — wickworks ships with no built-in auth; anyone who can reach the port can call it. Bind it to loopback (-p 127.0.0.1:8000:8000) and only expose it behind your own reverse proxy / VPN with auth if it needs to be reachable off-host. The MCP bridge's optional WICKWORKS_TOKEN is for a bearer your proxy enforces, not wickworks itself.
  • Consumer of the data you send — you hand it OHLC bars; it computes on them and returns numbers. It does not fetch, phone home, or transmit your bars anywhere. Point the skill only at a wickworks instance you (or a trusted operator) run.
  • Bounded input — the request is capped at MAX_BARS bars (default 5000); oversized requests get 413. Some indicators need a minimum warm-up (MIN_BARS, default 50) or they return an insufficient_bars error listing the deficits.

When To Use

  • The user has OHLC candlestick bars and wants technical indicators computed (RSI, MACD, Bollinger, Ichimoku, Supertrend, …).
  • The user wants Smart-Money-Concepts structure: order blocks, fair-value gaps, BOS/CHoCH, swing highs/lows, support/resistance, liquidity pools.
  • You're enriching a trading/market dataset server-side and want one call to return many primitives at once.

When NOT To Use

  • The user wants a forecast, a signal, or a buy/sell opinion — wickworks emits primitives only, no scoring. (Forecasting is a different service.)
  • You don't have OHLC bars (wickworks computes on bars you supply; it has no market-data feed of its own).
  • You need indicators over more than MAX_BARS bars in one call — window it down or raise MAX_BARS on the server.

Setup

export WICKWORKS_URL="http://localhost:8000"   # your running instance

See references/setup.md to stand one up (docker compose or uv).

The compute contract — POST /

One endpoint does the work. Body:

{
  "symbol": "EURUSD",
  "timeframe": "H1",
  "recentBars": 10,
  "bars": [
    { "time": 1700000000, "open": 1.08, "high": 1.09, "low": 1.07, "close": 1.085, "tickVolume": 1200 }
  ],
  "indicators": { "rsi": true, "macd": true }
}
  • bars — array of { time (UTC unix seconds), open, high, low, close, tickVolume?, realVolume? }. tickVolume/tick_volume and realVolume/real_volume aliases both accepted.
  • indicators — a map of output-name → spec. This is the whole point:
    • "rsi": true → run rsi with defaults, output under key rsi.
    • "rsi14": { "type": "rsi", "length": 14 } → run rsi with length=14, output under key rsi14 (the key is the output name, type picks the indicator).
    • "rsi": { "length": 21 } → key doubles as the type when no type is given.
  • symbol / timeframe — echoed back in the response.
  • recentBars — signal-like outputs within this many bars of the end get isRecent: true.

Response envelope: { symbol, timeframe, candles, : , ... } — one entry per requested output, each a series the same length as bars (or a structured object for multi-line indicators like macd / bbands / ichimoku, or an array of objects for SMC like orderBlocks / fvgs).

# Health
curl -s "$WICKWORKS_URL/health"

# The output-path catalog (labels + descriptions; static per version — cache it)
curl -s "$WICKWORKS_URL/metadata"

# Compute RSI + MACD + order blocks in one call
curl -s -X POST "$WICKWORKS_URL/" -H 'Content-Type: application/json' -d '{
  "symbol": "EURUSD", "timeframe": "H1",
  "bars": [ /* ...OHLC bars... */ ],
  "indicators": { "rsi": true, "macd": true, "orderBlocks": true }
}'

Indicator names

Pass any of these as indicators keys (also available at runtime via the MCP list_indicators tool):

ad, adosc, adx, alma, aroon, atr, bbands, bosChoch, cci, chandelierExit, cmf,
dema, donchian, ema, fisher, fvg, fvgs, fwma, hma, ichimoku, jma, kama, kc, kvo,
levels, linreg, liquidity, macd, mfi, mom, momentum, natr, obv, orderBlocks,
position, previousHighLow, price, psar, recentRange, retracements, rma, roc, rsi,
sessions, sinwma, slope, sma, squeeze, srLevels, stoch, stochrsi, supertrend,
swingLevels, swma, t3, tema, trima, trix, tsi, uo, volume, vortex, vwap, vwma,
willr, wma, zlma

Fetch GET /metadata (or the MCP metadata tool) for the human-readable label + description of every output path each of these produces.

MCP Endpoint (/mcp)

wickworks mounts a Model Context Protocol server over Streamable HTTP at /mcp, in the same process — so an agent can drive it over JSON-RPC without the REST client. It's stateless (no initialize handshake needed) and returns JSON. Tools:

ToolArgsReturns
health{ ok, version }
list_indicators{ indicators: [...] } — the registered indicator types
metadatathe output-path catalog ({ version, count, entries })
computebars, indicators, timeframe?, symbol?, recent_bars?the same envelope as POST /

Point an MCP client straight at the endpoint:

# Claude Code (native remote MCP — no bridge needed)
claude mcp add --transport http wickworks "$WICKWORKS_URL/mcp"

# Raw JSON-RPC (stateless — call tools/call directly)
curl -s "$WICKWORKS_URL/mcp/" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"compute","arguments":{
         "bars":[/* ...OHLC... */],"indicators":{"rsi":true},"symbol":"EURUSD","timeframe":"H1"}}}'

The @psyb0t/wickworks OpenClaw plugin is a thin stdio↔HTTP bridge to this endpoint for MCP clients that only speak local stdio servers.

Errors

  • 400 bars must not be empty / 400 indicators must not be empty — empty request pieces.
  • 400 { error: "insufficient_bars", available, deficits } — a requested indicator needs more warm-up bars than supplied; deficits lists which and how many.
  • 400 unknown indicator — the requested type/key isn't in the registry (see the indicator-names list above).
  • 413 too many bars — more than MAX_BARS bars in one request.

Over MCP the same failures come back as an isError tool result carrying the message, not an HTTP status.

相关技能

通过一个命令行工具完成多链加密货币交易、钱包管理与 AI 市场分析。

作者 lowesyang162 次安装109 星标

通过 6551 REST API 查询 Twitter/X 用户资料、推文、粉丝事件与 KOL 数据。

作者 infra403840 次安装27 星标

诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。

作者 Iván854 次安装69 星标

把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。

作者 nssa.io1.0k 次安装47 星标

从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。

作者 fly0pants4.3k 次安装296 星标

通过一次 REST API 调用,向 10 个社交平台发布视频、图片、文字与文档。

作者 victorcavero14375 次安装50 星标

psyb0t 的更多技能

浏览全部技能

对接用户自部署的 mt5-httpapi MetaTrader 5 网关,每次涉及真实资金的写操作都必须逐笔确认后再执行。

作者 psyb0t107 次安装4 星标

面向反爬检测栈 QA 与授权测试场景的 Docker 浏览器自动化工具。

作者 psyb0t137 次安装2 星标

自托管、OpenAI 兼容的语音服务,一个容器搞定转写、翻译与合成。

作者 psyb0t13 次安装

在固定白名单的 SSH 沙箱里跑 ffmpeg、sox、ImageMagick 处理音视频和图片。

作者 psyb0t71 次安装

通过 SSH 调用 Qwen3-TTS 生成语音,支持预设音色、声音克隆与声音设计。

作者 psyb0t55 次安装

一个端点统一管控多个 IMAP/SMTP 邮箱,跨账号并行完成读取、检索、发送、标记与删除。

作者 psyb0t15 次安装