mcpField
D
dsl-tight

dsl-tight

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

关于 dsl-tight

dsl-tight 是 dsl-dynamic-stop-loss 技能的止损预设,面向需要更严格利润保护的策略。它使用基于 ROE 的分层阈值、逐层违约计数、自动计算的止损线,并由 DSL v5 脚本处理停滞退出。

主要功能

  1. 01基于 ROE 的止损与止盈阈值
  2. 02四级分层利润锁定
  3. 03高阶层级收紧违约计数
  4. 04根据入场价和杠杆计算止损线
  5. 05基于停滞情况止盈退出

适用场景

  1. 01为策略应用更严格的止损规则
  2. 02逐步锁定高水位收益
  3. 03在盈利走势停滞时平仓

MCP 相关

该技能通过 MCP clearinghouse 发现持仓。DSL v5 脚本会将持仓状态与 clearinghouse 对账。

安装

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

$npx skills add https://github.com/senpi-ai/senpi-skills --skill dsl-tight

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

附带文件dsl-profile.json

详细介绍

DSL-Tight — 立场鲜明的止损预设(v5)

这是 DSL 的一个更严格、立场更鲜明的变体,旨在积极保护利润。使用与 DSL v5 相同的脚本和架构(dsl-v5.py)——按策略设置 cron、MCP 清算中心,状态文件位于 {DSL_STATE_DIR}/{strategyId}/{asset}.json。所有分层触发条件均基于 ROE(PnL / margin × 100);杠杆会自动计入。

与默认 DSL v5 的主要区别: DSL v5 是一款灵活性极高、可配置的引擎。DSL-Tight 则是一个“开箱即用”的预设——选项更少、默认值更严格、每层单独设置越界计数、停滞退出,并自动计算底线。

核心概念

所有阈值均以 ROE 定义。脚本会自动将其转换为价格水平:

price_floor = entry × (1 ± lockPct / 100 / leverage)

工作原理

阶段 1 — 绝对底线(止损)
  • 5% ROE 移动底线
  • 需要连续越界 3 次
  • 根据入场价、杠杆和回撤自动计算绝对底线
阶段 2 — 分层锁定利润

4 个层级,逐级锁定高水位变动的更大比例:

层级触发 ROE锁定高水位变动的比例平仓所需越界次数
110%50%3
220%65%2
340%75%2
475%85%1

随着利润增长,每层的越界次数逐渐减少——达到第 4 层(75% ROE)时,越界一次即可立即平仓。

停滞止盈

满足以下条件时自动平仓:

  • ROE ≥ 8%,并且
  • 高水位已连续 1 小时没有提高

捕捉停滞的盈利仓位——直接锁定利润,而不是等待行情反转。

越界机制

  • 仅使用硬衰减(恢复时越界计数重置为 0)
  • 每层单独设置越界要求(3→2→2→1),取代全局的阶段 1/阶段 2 划分
  • 底线始终为:LONG 取 max(tier_floor, trailing_floor),SHORT 取 min()

状态文件架构

状态文件位于 DSL v5 策略目录:{DSL_STATE_DIR}/{strategyId}/{asset}.json(main dex)或 {DSL_STATE_DIR}/{strategyId}/xyz--SYMBOL.json(xyz dex)。路径约定请参阅 dsl-dynamic-stop-loss references/state-schema.md。

{
  "active": true,
  "asset": "HYPE",
  "direction": "LONG",
  "leverage": 10,
  "entryPrice": 28.87,
  "size": 1890.28,
  "wallet": "0xYourStrategyWalletAddress",
  "strategyId": "uuid-of-strategy",
  "phase": 1,
  "phase1": {
    "retraceThreshold": 0.05,
    "consecutiveBreachesRequired": 3
  },
  "phase2TriggerTier": 0,
  "phase2": {
    "retraceThreshold": 0.015,
    "consecutiveBreachesRequired": 2
  },
  "tiers": [
    {"triggerPct": 10, "lockPct": 50, "retrace": 0.015},
    {"triggerPct": 20, "lockPct": 65, "retrace": 0.012},
    {"triggerPct": 40, "lockPct": 75, "retrace": 0.010},
    {"triggerPct": 75, "lockPct": 85, "retrace": 0.006}
  ],
  "breachDecay": "hard",
  "currentTierIndex": -1,
  "tierFloorPrice": null,
  "highWaterPrice": 28.87,
  "floorPrice": 28.78,
  "currentBreachCount": 0,
  "createdAt": "2026-02-23T10:00:00.000Z"
}

省略 phase1.absoluteFloor——dsl-v5 会根据入场价和杠杆填入该字段。将 highWaterPrice 设为入场价;在阶段 1 开始时,将 floorPrice 设为入场价(或计算得出的绝对底线)。

字段参考
字段用途
phase1.absoluteFloor无需设置——根据入场价、杠杆和回撤自动计算
tiers[].breachesRequired每层的越界计数(取代全局阶段 2 设置)
tiers[].retrace每层的移动止损严格程度
stagnation.enabled启用停滞止盈
stagnation.minRoePct触发停滞检查所需的最低 ROE
stagnation.maxStaleSec高水位停滞多久后自动平仓的最长秒数

Cron 设置

与 DSL v5 相同: 每个策略设置一个 cron(而非每个仓位一个),每隔 3–5 分钟运行一次。Agent 在为策略设置 DSL 时创建该 cron。

确定脚本路径: 设置 cron 时,在磁盘上定位 dsl-dynamic-stop-loss 技能(例如,在工作区、skills 目录或 ClawHub 安装路径中,搜索包含 scripts/dsl-v5.py 的 dsl-dynamic-stop-loss 文件夹)。在 cron 命令中使用解析出的路径——不要假设相对路径固定。解析路径后,命令示例如下:

DSL_STATE_DIR=/data/workspace/dsl DSL_STRATEGY_ID=strategy-uuid python3 /path/to/dsl-dynamic-stop-loss/scripts/dsl-v5.py

无需设置 DSL_ASSET——脚本会从 MCP 清算中心和策略目录中的状态文件发现仓位。

按时钟对齐的计划(OpenClaw): 若要在固定的 3 分钟边界运行(例如 :00、:03、:06…),请使用 cron 表达式创建任务:"schedule": { "kind": "cron", "expr": "*/3 * * * *", "tz": "UTC" }。请参阅 dsl-dynamic-stop-loss SKILL.md 中的 Cron Setup,以及 references/explained.md §0。

Agent 的职责(与 DSL v5 相同):当出现 strategy_inactive 时,移除 cron 并运行策略清理;当出现 closed=true 时,提醒用户;当出现 pending_close=true 时,提醒用户并在下一次运行时重试。

关键安全功能

  • 与 DSL v5 相同:检查策略是否处于活动状态、对账状态与清算平台、平仓时删除状态
  • 自动计算底线,避免手动计算错误
  • 每个层级的触发收紧机制可为大额利润提供最大保护
  • 停滞止盈可防止盈利持仓因停滞而反转

示例演练

以 $28.87 的价格开仓,做多 10x:

  1. 阶段 1:底线自动计算为约 $28.73。价格上涨,HW 持续跟踪。
  2. 层级 1,ROE 达到 10%($29.16):底线锁定在约 $29.01,触发 3 次后平仓。
  3. 层级 2,ROE 达到 20%($29.45):底线锁定在约 $29.24,现在触发 2 次后平仓。
  4. 停滞:ROE 为 12% 时,价格停滞 65 分钟 → 自动获利平仓。
  5. 层级 4,ROE 达到 75%($31.04):底线约为 $30.71。触发一次即可立即平仓。

脚本和依赖项

使用 dsl-dynamic-stop-loss 技能中的 dsl-v5.py 和 dsl-cli.py。请先安装该技能。**推荐设置方式:**使用 --configuration @dsl-tight/dsl-profile.json 调用 dsl-cli.py add-dsl(请参阅上文“通过 DSL CLI 设置”)。设置 cron 或运行脚本时,请在磁盘上定位 dsl-dynamic-stop-loss 技能(在 workspace/skills/安装路径中搜索包含 scripts/dsl-v5.py 和 scripts/dsl-cli.py 的文件夹),并使用该路径。状态文件位于 {DSL_STATE_DIR}/{strategyId}/{asset}.json(main)或 xyz--SYMBOL.json(xyz)。有关 cron 设置、路径约定、策略停用时的清理和输出架构,请参阅 dsl-dynamic-stop-loss 技能。

评论

支持 Markdown