Agent Skillskrakenfx/kraken-cli › recipe-playground-price-alert

recipe-playground-price-alert

GitHub

监控指定价格区间,记录价格突破事件及市场数据,用于假设验证与事后分析。仅记录不执行交易,支持自定义上下限和轮询间隔。

skills/recipe-playground-price-alert/SKILL.md krakenfx/kraken-cli

Trigger Scenarios

需要监控资产价格波动并记录触发条件 进行量化策略的假设验证与回测分析

Install

npx skills add krakenfx/kraken-cli --skill recipe-playground-price-alert -g -y
More Options

Use without installing

npx skills use krakenfx/kraken-cli@recipe-playground-price-alert

指定 Agent (Claude Code)

npx skills add krakenfx/kraken-cli --skill recipe-playground-price-alert -a claude-code -g -y

安装 repo 全部 skill

npx skills add krakenfx/kraken-cli --all -g -y

预览 repo 内 skill

npx skills add krakenfx/kraken-cli --list

SKILL.md

Frontmatter
{
    "name": "recipe-playground-price-alert",
    "version": "1.0.0",
    "metadata": {
        "openclaw": {
            "domain": "playground",
            "category": "recipe"
        },
        "requires": {
            "bins": [
                "kraken"
            ],
            "skills": [
                "kraken-playground",
                "kraken-alert-patterns"
            ]
        }
    },
    "description": "Example driver: drive a price-level-alert hypothesis into a recorded session."
}

Playground: Price Alert

PREREQUISITE: Load kraken-playground and kraken-alert-patterns to run this recipe. This recipe is an example, not a boundary. Adapt the steps to your hypothesis, or write your own driver (see kraken-playground → Driving Your Own Hypothesis).

Watch key price levels on live prices and record each crossing as an alert decision, capturing the market data and the "why" into one session for later replay and analysis. Alert-only: it records crossings, it never places a trade.

Use this skill for:

  • watching one or more price levels over a window
  • recording each level break as an alert with the numbers behind it
  • grading afterward which levels were hit, when, and which were never touched

Important

Alerts are informational and never execute a trade (see kraken-alert-patterns). This recipe records a session (market data + alert decisions); it never places a live order.

Pacing is external. /loop owns the schedule and fires one round per interval (see kraken-playground → Pacing). A cadence the operator names is a commitment: record it as interval_s and honor it — polls may run late, never early. A session whose params omit interval_s may not claim or imply any cadence in its report.

Over a long window this recipe is observational — a missed poll is not a missed crossing. The recorder holds every level break, so late visits (or none) still grade the hypothesis at stop time (see kraken-playground → Running over a Window).

Params

Every level that gates an alert goes in --strategy-params, not only in prose reasons. That is what makes two sessions comparable knob-for-knob:

  • upper: alert when price breaks above this level
  • lower: alert when price breaks below this level
  • interval_s: spacing between rounds; set the /loop interval to this value

The values in the example are placeholders. A level the operator names replaces the example verbatim — params that don't match the request record a hypothesis nobody asked to test.

Quick Start

Natural language:

Watch BTC for 30 minutes. Alert me if price breaks above $70,000 or below
$60,000. Check every 5 minutes. At the end, show which levels were hit and when.

Start the Session

Work inside a paper workspace (create one once: kraken workspace create alerts --capital 10000 --mode paper), then:

export KRAKEN_WORKSPACE=alerts

kraken session start \
  --symbols BTC/USD --channels ticker,trade --to duckdb,jsonl \
  --label alert-btc-$(date +%Y%m%d-%H%M%S) \
  --strategy recipe-playground-price-alert \
  --strategy-params '{"upper":70000,"lower":60000,"interval_s":300}' \
  -o json 2>/dev/null &

# The session_started stdout line carries the id: {"type":"session_started","session":"s<n>",...}

Print the session id to the user right after starting, and again in the final report — it is the handle for resuming the /loop, checking kraken session show, and locating the artifacts.

Schedule the Rounds

/loop owns the pacing. Set its interval to interval_s and it fires each round on cadence (late under jitter, never early). Parse the interval from the user's request: "every 5 minutes" to 5m, "every 2 minutes" to 2m, "every hour" to 1h.

The scheduler floor is 60 seconds (/loop, cron, and ScheduleWakeup all clamp to a one-minute minimum). interval_s must be >= 60. If the user asks for a sub-minute cadence ("every 30 seconds"), clamp to 60 and tell them — never set a sub-minute interval_s and never let the report claim a cadence the harness cannot run.

/loop 5m "Run one price-alert round for session s<n> in workspace alerts per recipe-playground-price-alert"

Do not re-add an elapsed-time gate inside the round. /loop already enforces the spacing.

Each Round

On each firing: READ, THINK, ACT.

READ: current price.

kraken ticker BTCUSD -o json 2>/dev/null

Price is the ticker's last-trade close. Extract it with jq; do not eyeball it. Bind the band from the same --strategy-params you recorded — never hardcode the levels into the arithmetic:

UPPER=70000
LOWER=60000
PRICE=$(kraken ticker BTCUSD -o json 2>/dev/null | jq -r '.[] | .last_price')

THINK — alert on the crossing, not on the level. A sustained excursion is one event, not one per round. Classify the price into a zoneabove / within / below — and alert only when the zone changes into a breakout. kind alone can't carry this (an alert doesn't say which side, and the per-round skip note would erase the last alert), so the zone lives in the session's typed state cell; reasons stay narrative:

PREV_ZONE=$(kraken session state get --session s<n> -o json 2>/dev/null \
  | jq -r '.cursor.zone // "within"')

# Fail loud: an empty price must not classify a zone (a fabricated "within"
# would silently swallow a real breakout).
if [ -z "$PRICE" ]; then
  kraken session note --kind alert --symbol BTC/USD \
    --reason "round skipped: READ failed (price empty)" -o json 2>/dev/null
  exit 0
fi
if   (( $(echo "$PRICE > $UPPER" | bc -l) )); then ZONE=above
elif (( $(echo "$PRICE < $LOWER" | bc -l) )); then ZONE=below
else ZONE=within; fi

# Persist the zone for the next firing (typed: a typo refuses instead of
# silently resetting the crossing detector).
kraken session state set --zone "$ZONE" -o json 2>/dev/null
  • Zone entered above from a different zone → the upper level was just crossed — alert.
  • Zone entered below from a different zone → the lower level was just crossed — alert.
  • Zone unchanged (still above, still below, or still within) → same state, no new crossing — skip.
  • within re-arms both boundaries: the next move to above or below alerts again.

Because the marker is on every line, above → below reads as a genuine change and alerts, and a sustained above → above reads as unchanged and does not.

ACT — alert on a fresh breakout, always ending the reason with the new zone= marker:

# upper break (ZONE=above, PREV_ZONE != above)
kraken session note --kind alert --symbol BTC/USD \
  --reason "alert round N: BTC/USD broke above <upper> at <price>; zone=above" \
  -o json 2>/dev/null

# lower break (ZONE=below, PREV_ZONE != below)
kraken session note --kind alert --symbol BTC/USD \
  --reason "alert round N: BTC/USD broke below <lower> at <price>; zone=below" \
  -o json 2>/dev/null

ACT (skip) — no zone change; record the round and carry the current zone forward so the next round sees it:

kraken session note --kind skip --symbol BTC/USD \
  --reason "skip round N: BTC/USD at <price>, no new crossing (<lower>/<upper>); zone=$ZONE" \
  -o json 2>/dev/null

Always pass the numeric reason, and always end it with the zone= marker — it is the state the next round reads to tell a fresh crossing from a sustained move.

Stop and Review

kraken session stop -o json 2>/dev/null
kraken session show -o json 2>/dev/null | jq '.summary'

kraken session decisions --session s<n> -o json 2>/dev/null \
  | jq -c '.decisions[] | select(.kind=="alert") | {timestamp, reason}'

Report:

  • which levels were crossed (upper and/or lower)
  • when each crossing occurred
  • any level never touched (INCONCLUSIVE for that level)

Hard Rules

  • This recipe records a session. It never places a live order — alerts are informational only.
  • /loop drives the pace and the agent runs each round. The CLI has no scheduler and runs no strategy.
  • Do not add a pacing gate inside the round; /loop enforces spacing.
  • A scheduled /loop fire only runs what the agent may invoke unprompted. Keep kraken ticker, kraken session note, and kraken session show permitted non-interactively, or a fire stalls waiting on an approval you never see.
  • Keep every level in --strategy-params and the comparison in jq/bc, so a rerun on the same tape reproduces the decisions.
  • A session whose params omit interval_s may not claim any cadence in its report.
  • The session directory (session.json, decisions.jsonl, and the tape sinks) is owned by the CLI recorder. The agent only reads it, and only for the stop-time summary. Never write, edit, mkdir, or append inside it — every decision goes through kraken session note, so the recorder stays the single writer.
  • If you hit a mismatch between what you are trying to do and the CLI's interface or responses — including a mismatch between this skill and the installed CLI version's contract — feel free to submit feedback with kraken feedback.

Version History

  • aa56e59 Current 2026-08-20 04:46

Same Skill Collection

skills/kraken-alert-patterns/SKILL.md
skills/kraken-autonomy-levels/SKILL.md
skills/kraken-basis-trading/SKILL.md
skills/kraken-dca-strategy/SKILL.md
skills/kraken-earn-staking/SKILL.md
skills/kraken-error-recovery/SKILL.md
skills/kraken-fee-optimization/SKILL.md
skills/kraken-funding-carry/SKILL.md
skills/kraken-funding-ops/SKILL.md
skills/kraken-futures-risk/SKILL.md
skills/kraken-grid-trading/SKILL.md
skills/kraken-lab-experiment/SKILL.md
skills/kraken-liquidation-guard/SKILL.md
skills/kraken-market-intel/SKILL.md
skills/kraken-mcp-integration/SKILL.md
skills/kraken-multi-pair/SKILL.md
skills/kraken-order-types/SKILL.md
skills/kraken-paper-strategy/SKILL.md
skills/kraken-paper-to-live/SKILL.md
skills/kraken-playground/SKILL.md
skills/kraken-portfolio-intel/SKILL.md
skills/kraken-rate-limits/SKILL.md
skills/kraken-rebalancing/SKILL.md
skills/kraken-risk-operations/SKILL.md
skills/kraken-setup/SKILL.md
skills/kraken-spot-execution/SKILL.md
skills/kraken-stop-take-profit/SKILL.md
skills/kraken-subaccount-ops/SKILL.md
skills/kraken-tax-export/SKILL.md
skills/kraken-twap-execution/SKILL.md
skills/kraken-ws-streaming/SKILL.md
skills/recipe-basis-trade-entry/SKILL.md
skills/recipe-daily-pnl-report/SKILL.md
skills/recipe-drawdown-circuit-breaker/SKILL.md
skills/recipe-earn-yield-compare/SKILL.md
skills/recipe-emergency-flatten/SKILL.md
skills/recipe-fee-tier-progress/SKILL.md
skills/recipe-funding-rate-scan/SKILL.md
skills/recipe-futures-hedge-spot/SKILL.md
skills/recipe-launch-grid-bot/SKILL.md
skills/recipe-morning-market-brief/SKILL.md
skills/recipe-multi-pair-breakout-watch/SKILL.md
skills/recipe-paper-strategy-backtest/SKILL.md
skills/recipe-playground-dca-triggered/SKILL.md
skills/recipe-playground-dca/SKILL.md
skills/recipe-playground-rebalance/SKILL.md
skills/recipe-playground-webhook/SKILL.md
skills/recipe-portfolio-snapshot-csv/SKILL.md
skills/recipe-price-level-alerts/SKILL.md

Metadata

Files
0
Version
aa56e59
Hash
48b40784
Indexed
2026-08-20 04:46

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 10:17
浙ICP备14020137号-1 $Гость$