关于 dsl-dynamic-stop-loss
用于 Hyperliquid 永续合约的动态追踪止损技能,通过 High Water 模式按峰值 ROE 更新止损线,并将止损同步到 Hyperliquid。它还提供策略及仓位止损的添加、调整、暂停、恢复和删除等生命周期操作。
主要功能
- 01按峰值 ROE 追踪止损线
- 02分层锁定利润并逐步抬高止损
- 03同步止损至 Hyperliquid
- 04管理策略和仓位止损生命周期
- 05检测触发并关闭仓位
适用场景
- 01为 Hyperliquid 永续合约设置追踪止损
- 02随盈利增长保护已有收益
- 03暂停、恢复或调整止损策略
- 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.mddsl-high-water-adoption-guide-v2.mddsl-high-water-implementation-spec.mddsl-high-water-spec 1.0.mddsl-profile.jsondesign/dsl-cli-commands.mdreferences/cleanup.mdcli-usage.mdcustomization.mdexplained.mdintegration-guide.mdmcp-close-position.mdmigration.mdoutput-schema.mdstate-schema.mdstrategy-schema.mdtier-examples.mdscripts/dsl-cleanup.pydsl-cli.pydsl-v4.pydsl-v5.pytest_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。检查策略是否处于活动状态(MCPstrategy_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-dsl | add-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-dsl | update-dsl <strategy-id> [asset dex] --configuration <json-or-@path> | 更新策略范围或单个仓位的配置(例如 '{"phase1":{"retraceThreshold":0.05}}' 或 @override.json)。 |
| pause-dsl | pause-dsl <strategy-id> [asset dex] | 暂停监控;cron 继续运行,状态保留。 |
| resume-dsl | resume-dsl <strategy-id> [asset dex] | 恢复监控。 |
| delete-dsl | delete-dsl <strategy-id> [asset dex] | 归档状态并拆除配置。必须由 Agent 移除 OpenClaw cron 时,输出 cron_to_remove。 |
| status-dsl | status-dsl <strategy-id> [asset dex] | 报告当前状态。 |
| count-dsl | count-dsl <strategy-id> | 汇总计数。 |
| validate | validate --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。
- 定位
dsl-cli.py(例如dsl-dynamic-stop-loss/scripts/dsl-cli.py)和技能目录中的 dsl-profile.json。在运行时解析路径。 - 添加 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)。 - Cron: 如果 CLI 输出包含
cron_needed: true,还会包含cron_job_id、cron_env、cron_schedule。请使用该 ID 和环境/计划创建 OpenClaw cron(每个策略一个 cron)。 - 生命周期: 更新、暂停、恢复、删除、查看状态和计数时,使用同一个 CLI 以及上方 CLI 命令表中的命令(使用与 add 相同的
--skill和--configuration)。示例请参阅 references/cli-usage.md。 - 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/SHORT | references/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.1 | 2026-03-13 | 高水位:无限追踪,地板变动时同步 SL;规格清单测试 |
| v5.3 | 2026-03-12 | 高水位模式:lockMode: "pct_of_high_water",每个层级的 lockHwPct |
| v5.2 | 2026-03-01 | CLI 生命周期管理器、多技能集成、SL 订单验证、对账归档类型、cronIntervalMinutes、配置验证 |
| v5.0 | — | 两阶段追踪止损、交易所 SL 同步 |