mcpField
D
dsl-dynamic-stop-loss

dsl-dynamic-stop-loss

github.com/senpi-ai其他140459 次安装今天更新
代码仓库

关于 dsl-dynamic-stop-loss

用于 Hyperliquid 永续合约的动态追踪止损技能,通过 High Water 模式按峰值 ROE 更新止损线,并将止损同步到 Hyperliquid。它还提供策略及仓位止损的添加、调整、暂停、恢复和删除等生命周期操作。

主要功能

  1. 01按峰值 ROE 追踪止损线
  2. 02分层锁定利润并逐步抬高止损
  3. 03同步止损至 Hyperliquid
  4. 04管理策略和仓位止损生命周期
  5. 05检测触发并关闭仓位

适用场景

  1. 01为 Hyperliquid 永续合约设置追踪止损
  2. 02随盈利增长保护已有收益
  3. 03暂停、恢复或调整止损策略
  4. 04在止损触发后关闭仓位

MCP 相关

通过 Senpi(mcporter)使用 MCP 获取策略、仓位和价格信息,并同步或执行止损及平仓操作。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/senpi-ai/senpi-skills --skill dsl-dynamic-stop-loss

安装后在 Claude Code 中输入/dsl-dynamic-stop-loss确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
dsl-high-water-adoption-guide-v2.md
dsl-high-water-implementation-spec.md
dsl-high-water-spec 1.0.md
dsl-profile.json
design/
dsl-cli-commands.md
references/
cleanup.md
cli-usage.md
customization.md
explained.md
integration-guide.md
mcp-close-position.md
migration.md
output-schema.md
state-schema.md
strategy-schema.md
tier-examples.md
scripts/
dsl-cleanup.py
dsl-cli.py
dsl-v4.py
dsl-v5.py
test_all_methods.py

详细介绍

动态止损(DSL)v5.3.1

适用范围 — 仅限 DSL。 此技能仅处理动态/追踪止损(DSL),不处理普通(静态)止损。如果用户只说“止损”,但没有明确说明是 DSL 还是静态止损,请先询问(例如:“您想要的是随盈利上移的追踪止损,还是固定价格止损?”)。

面向用户的用语。 使用通俗说法(“追踪止损”“利润保护”)。除非用户询问技术细节,否则不要提及状态路径、cron ID、脚本名称或 DSL_* 环境变量。

默认模式:高水位

所有新建仓位都应使用高水位模式(lockMode: "pct_of_high_water")。这是每个 Senpi 技能推荐的默认设置。追踪底线是峰值 ROE 的百分比,每个 tick 都会重新计算,且没有上限。ROE 为 +50%、锁定比例为 85% 的交易,其底线为 +42.5%。ROE 为 +200% 的交易,其底线为 +170%。几何关系保持不变——交易始终保留最佳时刻收益的 85%。

完整规范请参阅 dsl-high-water-spec 1.0.md,各技能的分层配置请参阅 dsl-high-water-adoption-guide.md。

创建 DSL 状态文件时,始终包含:

{
  "lockMode": "pct_of_high_water",
  "tiers": [
    {"triggerPct": 7,  "lockHwPct": 40, "consecutiveBreachesRequired": 3},
    {"triggerPct": 12, "lockHwPct": 55, "consecutiveBreachesRequired": 2},
    {"triggerPct": 15, "lockHwPct": 75, "consecutiveBreachesRequired": 2},
    {"triggerPct": 20, "lockHwPct": 85, "consecutiveBreachesRequired": 1}
  ]
}

使用 dsl-high-water-adoption-guide.md 中各技能对应的分层配置——不同技能的分层区间宽度不同。以上是标准的动量默认配置(FOX、HAWK、DIRE WOLF)。

旧版模式(lockMode: "fixed_roe" 或省略此项)仍适用于现有仓位。lockPct 分层会锁定入场价至最高水位(HW)价格区间的固定比例。不会逐 tick 重新计算——仅在分层变化时更新底线。


适用于 Hyperliquid 永续合约(main + xyz)的追踪止损。默认:高水位模式——底线按峰值 ROE 的百分比追踪,每个 tick 都会重新计算,且没有上限。Cron 每隔 3–5 分钟运行 dsl-v5.py;该脚本通过 Senpi edit_position 将当前底线同步至 Hyperliquid,以便即使 cron 进程停止,HL 也能执行 SL。阶段 1:宽幅回撤,并设有绝对底线封顶。阶段 2:分层高水位锁定,随盈利上调且绝不回落。请参阅 references/tier-examples.md 和 references/state-schema.md。

文件: scripts/dsl-v5.py(监控/平仓,ndjson 输出)、scripts/dsl-cleanup.py(策略目录清理)、scripts/dsl-cli.py(生命周期管理——所有设置均使用此工具)。配置:dsl-profile.json(此技能的默认配置)。状态:{DSL_STATE_DIR}/{strategyId}/{asset}.json;策略配置:references/strategy-schema.md。清理:references/cleanup.md。输出架构:references/output-schema.md。

架构

  • 调度器: OpenClaw cron(每个策略一个,每 3–5 min 运行一次)。不为每个仓位单独设置 cron——脚本会从 MCP clearinghouse 和状态文件中发现仓位。
  • Cron 运行器: dsl-v5.py — 接受 --strategy-id <uuid> 和 --state-dir <path>(CLI 参数优先;环境变量 DSL_STRATEGY_ID、DSL_STATE_DIR 作为后备)。优先使用 CLI 参数,避免 Agent 在环境变量中输错 UUID。检查策略是否处于活动状态(MCP strategy_get);将状态文件与 clearinghouse 对账(归档孤立记录);对于每个活动仓位:获取价格、更新最高水位和层级、通过 edit_position 将 SL 同步到 Hyperliquid、检测是否触发;触发时调用 close_position 并归档状态。每个仓位打印一行 JSON(ndjson)。
  • 生命周期: dsl-cli.py 仅创建/更新策略配置和仓位状态文件(不会下达 SL 订单)。Cron 运行器通过 edit_position 将止损位同步到 Hyperliquid,并在状态中设置 slOrderId。为没有 cron 的策略添加 DSL 时,CLI 会输出 cron_needed、cron_job_id、cron_env、cron_schedule。Agent 使用该 ID 创建或移除 OpenClaw cron。
  • 清理: 策略停用或不再有仓位时,Agent 运行 dsl-cleanup.py 移除策略目录。SL 同步和平仓使用 Senpi(mcporter);仅使用 OpenClaw 进行调度。
┌─────────────────────────────────────────────────────────────────┐
│ OpenClaw cron (per strategy)  →  dsl-v5.py                        │
│   MCP: strategy_get, clearinghouse, prices, edit_position,       │
│        close_position, execution_get_order_status                │
│   Output: ndjson (one line per position or strategy-level)       │
├─────────────────────────────────────────────────────────────────┤
│ Agent: create/remove cron from CLI output; run dsl-cleanup;       │
│        alert on closed / strategy_inactive / pending_close       │
└─────────────────────────────────────────────────────────────────┘

CLI 命令

所有生命周期操作都使用 scripts/dsl-cli.py。全局选项:--state-dir(默认值:$DSL_STATE_DIR 或 /data/workspace/dsl)。配置必须是带 @ 前缀的文件路径(例如 @dsl-profile.json)或内联 JSON。

命令用法备注
add-dsladd-dsl <strategy-id> [asset dex] --skill <skill-name> --configuration @<path>创建策略配置和仓位状态文件。省略 asset/dex 表示适用于所有仓位。可选 --entry-price。必须创建 cron 时,输出:cron_needed、cron_job_id、cron_env、cron_schedule。
update-dslupdate-dsl <strategy-id> [asset dex] --configuration <json-or-@path>更新策略范围或单个仓位的配置(例如 '{"phase1":{"retraceThreshold":0.05}}' 或 @override.json)。
pause-dslpause-dsl <strategy-id> [asset dex]暂停监控;cron 继续运行,状态保留。
resume-dslresume-dsl <strategy-id> [asset dex]恢复监控。
delete-dsldelete-dsl <strategy-id> [asset dex]归档状态并拆除配置。必须由 Agent 移除 OpenClaw cron 时,输出 cron_to_remove。
status-dslstatus-dsl <strategy-id> [asset dex]报告当前状态。
count-dslcount-dsl <strategy-id>汇总计数。
validatevalidate --configuration @<path>验证 DSL 配置文件(例如 @dsl-profile.json)。

示例(此技能):--skill dsl-dynamic-stop-loss --configuration @<path-to-this-skill>/dsl-profile.json。其他技能:使用相同的 CLI,并指定 --skill <their-skill> 和 --configuration @<their-dsl-profile.json>。完整详情:references/cli-usage.md。

此技能(直接 DSL 设置)

当用户请求追踪止损/动态止损时,所有生命周期操作都使用 scripts/dsl-cli.py(除非 CLI 不可用,否则不要手动编辑状态文件)。

  • 添加 DSL: python3 scripts/dsl-cli.py add-dsl <strategy-id> [asset dex] --skill dsl-dynamic-stop-loss --configuration @<path-to-this-skill>/dsl-profile.json
  • 如果输出包含 cron_needed: true,请使用输出中的 cron_job_id、cron_env 和 cron_schedule 创建 OpenClaw cron(计划根据 cronIntervalMinutes 计算,默认值为 3;每个策略一个 cron)。
  • 更新 / 暂停 / 恢复 / 删除 / 状态 / 计数: 使用上表中的命令(使用同一个 CLI,以及与 add 相同的 --skill 和 --configuration)。

Agent: 当 closed=true 时 → 提醒用户。当出现 strategy_inactive 时 → 移除 cron,并运行 dsl-cleanup.py。当 pending_close=true 时 → 发出提醒(脚本会重试)。当 delete-dsl 输出 cron_to_remove 时 → 移除该 cron。当 update-dsl 输出 cron_schedule_changed: true 时 → 移除现有 cron(使用 cron_to_remove.cron_job_id),并使用相同的 cron_job_id 和新的 cron_schedule 创建一个新的 cron(间隔可通过 cronIntervalMinutes 配置;默认 3 分钟)。

其他技能:设置 DSL

完整集成指南: references/integration-guide.md — 适用于任何技能的分步指南(路径、add/delete-dsl、cron、清理、检查清单)。

任何技能(例如 wolf-strategy、dsl-tight)都可以通过调用同一个 CLI,并使用自己的配置文件和技能名称,为其策略添加 DSL。

  1. 定位 dsl-cli.py(例如 dsl-dynamic-stop-loss/scripts/dsl-cli.py)和技能目录中的 dsl-profile.json。在运行时解析路径。
  2. 添加 DSL:
    python3 <path>/dsl-cli.py add-dsl <strategy-id> [asset dex] --skill <your-skill-name> --configuration @<path-to-your-dsl-profile.json>
    在配置文件路径前使用 @,以便 CLI 读取文件(不加 @ 时,CLI 会将该值视为内联 JSON)。
  3. Cron: 如果 CLI 输出包含 cron_needed: true,还会包含 cron_job_id、cron_env、cron_schedule。请使用该 ID 和环境/计划创建 OpenClaw cron(每个策略一个 cron)。
  4. 生命周期: 更新、暂停、恢复、删除、查看状态和计数时,使用同一个 CLI 以及上方 CLI 命令表中的命令(使用与 add 相同的 --skill 和 --configuration)。示例请参阅 references/cli-usage.md。
  5. Agent 职责: 与此技能相同——当 closed=true 时提醒用户;当出现 strategy_inactive 时移除 cron 并运行 dsl-cleanup.py;当出现 cron_to_remove 时移除对应的 OpenClaw cron。

示例(其他技能,单个仓位):

python3 /path/to/dsl-dynamic-stop-loss/scripts/dsl-cli.py add-dsl <strategy-id> ETH main \
  --skill wolf-strategy \
  --configuration @/path/to/wolf-strategy/dsl-profile.json

完整命令参考和配置合并规则:references/cli-usage.md。

参考资料

主题参考资料
将其他技能与 DSL 集成references/integration-guide.md
CLI 命令和技能间用法references/cli-usage.md
状态和策略架构references/state-schema.md, references/strategy-schema.md
输出(ndjson)和 Agent 操作references/output-schema.md
清理(策略目录、移除 cron)references/cleanup.md
档位计算、LONG/SHORTreferences/tier-examples.md
配置调整references/customization.md
仅 cron → HL SL 迁移references/migration.md
基于 ROE → 高水位迁移(推荐用于现有状态)references/migration.md

API: 通过 Senpi(mcporter)进行策略/仓位/价格/平仓和 SL 同步。单个仓位不要使用 strategy_close_strategy——请使用 close_position。

更新日志

版本日期变更
v5.3.12026-03-13高水位:无限追踪,地板变动时同步 SL;规格清单测试
v5.32026-03-12高水位模式:lockMode: "pct_of_high_water",每个层级的 lockHwPct
v5.22026-03-01CLI 生命周期管理器、多技能集成、SL 订单验证、对账归档类型、cronIntervalMinutes、配置验证
v5.0—两阶段追踪止损、交易所 SL 同步

评论

支持 Markdown