dsl-dynamic-stop-loss について
Hyperliquidの無期限先物向け動的トレーリングストップスキルです。High WaterモードでピークROEに応じてストップ水準を更新し、Hyperliquidに同期します。CLIで戦略やポジションの設定とライフサイクルを管理できます。
主な機能
- 01ピークROEに応じたストップ追従
- 02段階的な利益確保とストップ引き上げ
- 03Hyperliquidへのストップ同期
- 04戦略とポジションのライフサイクル管理
- 05ブレイク検知とポジション決済
活用シーン
- 01Hyperliquid無期限先物にトレーリングストップを設定
- 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 の割合で、ティックごとに再計算され、上限はありません。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 価格までの範囲に対する固定割合をロックします。ティックごとの再計算はなく、フロアが更新されるのはティア変更時のみです。
Hyperliquid パープ(main + xyz)向けのトレーリングストップです。デフォルト:高値基準モード — フロアはピーク ROE に対する割合でトレールし、ティックごとに再計算され、上限はありません。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(戦略ごとに 1 つ、3~5 分ごと)。ポジションごとの cron はありません。スクリプトが MCP クリアリングハウスと状態ファイルからポジションを検出します。
- Cron ランナー:
dsl-v5.py—--strategy-id <uuid>と--state-dir <path>を受け付けます(CLI 引数が優先され、環境変数DSL_STRATEGY_ID、DSL_STATE_DIRはフォールバックとして使用されます)。戦略がアクティブか確認し(MCPstrategy_get)、状態ファイルとクリアリングハウスを照合して孤立した状態ファイルをアーカイブします。アクティブなポジションごとに、価格を取得し、高値とティアを更新し、edit_position経由で SL を Hyperliquid と同期し、ブレイクを検出します。ブレイク時にはclose_positionを呼び出し、状態をアーカイブします。ポジションごとに JSON 1 行を出力します(NDJSON)。 - ライフサイクル:
dsl-cli.pyは戦略設定とポジション状態ファイルの作成・更新のみを行います(SL 注文は発注しません)。cron ランナーがedit_position経由でフロアを Hyperliquid と同期し、状態にslOrderIdを設定します。cron がない戦略に DSL を追加すると、CLI はcron_needed、cron_job_id、cron_env、cron_scheduleを出力します。エージェントはその ID を使って OpenClaw cron を作成または削除します。 - クリーンアップ: 戦略が非アクティブになった場合、またはポジションがなくなった場合、エージェントは
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] | 状態をアーカイブして削除します。エージェントが 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 を 1 つ作成します)。 - 更新/一時停止/再開/削除/ステータス/件数: 上記の表に記載されたコマンドを使用します(追加時と同じ CLI、同じ
--skillと--configurationを指定します)。
エージェント: 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 で新たに作成します(間隔は 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 にファイルを読み込ませるため、設定ファイルのパスの前に@を付けます(@がない場合、値はインライン JSON として扱われます)。 - Cron: CLI の出力に
cron_needed: trueが含まれる場合、cron_job_id、cron_env、cron_scheduleも含まれます。その ID と env/schedule を使って OpenClaw の cron を作成します(戦略ごとに cron を 1 つ作成します)。 - ライフサイクル: 更新、一時停止、再開、削除、ステータス、件数には、同じ CLI と、上記の CLI commands 表に記載されたコマンドを使用します(追加時と同じ
--skillと--configurationを指定します)。使用例は references/cli-usage.md を参照してください。 - エージェントの役割: このスキルと同じです。
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)とエージェントのアクション | references/output-schema.md |
| クリーンアップ(戦略ディレクトリ、cron の削除) | references/cleanup.md |
| ティアの計算、LONG/SHORT | references/tier-examples.md |
| 設定の調整 | references/customization.md |
| cron のみ → HL SL への移行 | references/migration.md |
| ROE ベース → High Water への移行(既存の状態に推奨) | 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 | — | 2段階トレーリングストップ、取引所SL同期 |