mcpField
C
cheetah-strategy

cheetah-strategy

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

关于 cheetah-strategy

cheetah-strategy 是 Senpi 的自动化交易策略技能,面向使用多项交易信号筛选入场并通过规则管理退出的操作者。它结合社交交易者共识、价格与成交量信号、评分杠杆和 DSL 风险机制;会发出交易信号,用户对话会话仅限只读。

主要功能

  1. 01综合多项信号评分筛选交易机会
  2. 02按评分设定杠杆并受资产上限约束
  3. 03通过 DSL 阶梯管理退出与止损
  4. 04设置持仓去重、冷却和风险门槛
  5. 05提供交易者数据池与持仓解析告警

适用场景

  1. 01依据交易者共识和市场动量筛选入场信号
  2. 02按分数配置杠杆并限制资产风险
  3. 03使用 DSL 管理止盈、止损和持仓时限
  4. 04查看交易状态而不从对话会话执行交易操作

MCP 相关

README 提及 senpi_runtime_helpers 提供进程内 MCP;策略生产器通过 SenpiClient.push_signal() 发送信号。交易操作工具保留给生产器和 DSL 引擎,对话会话为只读。

安装

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

$npx skills add https://github.com/senpi-ai/senpi-skills --skill cheetah-strategy

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

包含的文件

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

README.md
runtime.yaml
config/
cheetah-config.json
references/
skill-attribution.md
scripts/
cheetah_config.py
cheetah-producer.py

详细介绍

🐆 CHEETAH v7.2.0 — 多信号共振狙击手

SM 提交。优质交易者提交。价格确认。成交量提交。一切同时发生。Cheetah 一击出击。运行时 DSL 逐步收紧,以锁定胜局。

v7.2.0(2026-06-01)— DSL 出场机制全面调整:禁用时间止损,让盈利仓位继续奔跑

入场表现不错。出场才是瓶颈。 对实盘钱包按评分进行的 100 笔交易分析显示,胜率随评分稳步提升 — 评分 10 为 40.0%,评分 11 为 41.7%(n=84),评分 12 为 50.0%,评分 13 为 55.6% — 证实了准确性筛选有效。但每个评分区间的平均 ROE 都为负 (−1.90% / −0.35% / −0.20% / −0.12%)。

评分交易数胜率平均 ROE
10540.0%−1.90%
118441.7%−0.35%
12250.0%−0.20%
13955.6%−0.12%

诊断:“千刀万剐”。 紧密的 Phase 2 锁定机制,加上 60m/90m 时间止损, 从机制上让仓位不可能持有到大幅盈利 — Cheetah 承受了 −15% 止损 / −5% 震荡的全部冲击,却被迫放弃每个 +15% / +30% 的强势仓位。两笔真正带来收益的 HYPE 多头仓位 (+13.9%、+8.9%),之所以能获利,只是因为触发了12h 硬超时 — 不是追踪止损,也不是 60m dead_weight_cut。被迫持仓时,仓位确实录得了收益。

修复方案(与实盘部署一致):

  • weak_peak_cut → 禁用(原为 90m @ 3.0 — 过早砍掉尚待启动的盈利仓位)
  • dead_weight_cut → 禁用(原为 60m — 在趋势加速前强制离场)
  • hard_timeout → 保留(12h 故障保护 — 唯一抓住盈利仓位的止损)
  • Phase 2 阶梯已于 2026-05-21 扩大为“让盈利仓位继续奔跑”形态(T0 +10% / 锁定 0 → +100% / 锁定 85)

这些调整共同移除了玻璃天花板,让强劲趋势仓位得以延续。评分、MIN_SCORE、杠杆等级、保证金、冷却时间或风险门控均无变化 — 仅调整出场机制。这是一项假设测试;再经过约 50 笔交易后重新评估。

v7.1.1(2026-05-11)— 持仓解析器修复(补丁)

对 v7.1.0 的实盘验证发现,尽管放宽后的筛选器返回了完整的 25 名交易者名单,positions_map 仍然为空。根本原因是 leaderboard_get_trader_positions 实际返回

{ "data": { "positions": { "trader_id": ..., "rank": ..., "positions": [...] } } }

— 每位交易者的持仓数组比架构指南所述多嵌套了一层。v7.0/v7.1 解析器查看 data.positions 并预期它是列表,结果拿到的是字典,触发 if not isinstance(positions, list): continue,因此静默跳过了所有交易者。

v7.1.1 解析器可处理以下两种结构:

  • 直接为列表(与架构指南一致)
  • 嵌套字典 {trader_id, rank, positions: [...]}(实际生产响应)

此外,新增 POSITIONS_SHAPE_WARN 日志行,用于提示未来的架构变更。

评分组件、MIN_SCORE、杠杆等级、保证金、冷却时间或 DSL 均无变化。策略思路相同。现在,当每种资产存在重叠持仓时,+3 QUALITY_TRADER 加分终于可以生效。

v7.1.0(2026-05-11)— 扩大质量交易员筛选范围(补丁)

迁移后对实盘钱包进行诊断时发现,quality-cache.json 始终为空(positions_map = {})。根本原因:在当前平台机制下,discovery_get_top_traders(time_frame=WEEKLY, consistency=[ELITE,RELIABLE], open_position_filter=True, limit=8) 返回了 零位交易员。没有质量交易员池,+3 的 QUALITY_TRADER 评分奖励就永远不会触发;候选项的分数最高只能达到 8(没有这项奖励时,需要 4 项次级信号全部一致才能达到 MIN_SCORE=10 的下限),而这 4 项全部一致的情况只会出现在强趋势行情中。

筛选条件变更(已在实盘验证):

  • time_frame: WEEKLY → MONTHLY — 扩大历史范围,让更多交易员累积 ELITE/RELIABLE 标签
  • consistency: [ELITE, RELIABLE] → [ELITE, RELIABLE, STREAKY] — 适度放宽较低端的筛选条件
  • limit: 8 → 25 — 扩大池规模,发现更多跨资产重合情况
  • 移除 open_position_filter — 按交易员调用 leaderboard_get_trader_positions 获取持仓时,空持仓数组已会隐式筛掉空仓交易员

评分组件、权重、MIN_SCORE、杠杆档位、保证金、冷却时间和 DSL 均未变更。 策略思路不变,仅扩大输入范围。

遥测:只要交易员池规模过小(< QT_POOL_SIZE / 2)或最终 positions_map 为空,生产器现在都会输出一行 QT_POOL_WARN 日志。今后出现回归时,只需一次 grep 即可发现,无需事后考古排查。

v6.0 策略思路(沿用 v5.x)

除非所有主要信号同时一致,否则拒绝交易:

组件信号分值
SM 共识pct_of_top_traders ≥ 10%,traders ≥ 25+4(硬性门槛)
速度15m contrib ≥ 1.0 或 1h contrib ≥ 3.0+2(硬性门槛)
加速15m > 1h > 0(SM 持续增强)+2
双周期价格4h 变动 ≥ 2%,且 1h 同方向+2
成交量当前成交量 ≥ 6h 均值的 2 倍+1
质量交易员≥ 1 位 ELITE/RELIABLE 交易员持有同方向仓位+3
排名攀升最近 2 次扫描中排名上升 ≥ 5 位,且位列前 15+1

最高分:15。v6.0 分数下限:10。 标的范围为 SM 排行榜前 100 名(leaderboard_get_markets),每次生产器运行时刷新。XYZ 永久禁用。

按分数调整杠杆:

分数杠杆
103x
115x
12-137x
14-158x

通过 strategy_get_asset_trading_limits 将杠杆限制在各资产的 Hyperliquid 最大值以内(保留 v5.1.1 的杠杆安全修复)。

v6.0 架构变更

v1 扫描器 → v2 生产器
  • v5.x:cheetah-scanner.py 评估信号,直接调用 create_position,并维护 Python 侧的冷却时间、计数器和挂单保护
  • v6.0:cheetah-producer.py 通过 SenpiClient.push_signal()(直接 HTTP POST)发出信号。运行时 LLM 门控(decision_mode: llm)仅透传。风险门控在 runtime.yaml 中声明式配置。
MIN_SCORE 从 11 调至 10

v5.2 将 MIN_SCORE 从 10 收紧至 11。结果:连续 8 天零交易。收紧前(v5.0/v5.1,MIN_SCORE 为 10)共交易 11 次,净收益 +$182,胜率超过 60%。v6.0 恢复交易流。

EXIT 也使用 FEE_OPTIMIZED_LIMIT

v5.x 使用 MARKET(吃单)平仓。v6.0 的 DSL 会在每次退出时触发 FEE_OPTIMIZED_LIMIT——优先挂 maker 单,ALO 超时 60 秒后回退到 taker。HL 的 maker 费率为 0.015%,taker 费率为 0.045%,每次平仓可节省 0.020-0.030%。

已持仓资产去重(三层防护)
  1. 生产器预筛选:从 clearinghouse 获取 held_assets,剔除已持有的标的
  2. LLM 门控硬性跳过:信号负载中的 heldAssets 数组会让 LLM 在标的已持仓时拒绝信号
  3. 运行时 per_asset_cooldown_minutes: 240(已知可能静默失效;第 1 和第 2 层才是真正的防护)
平仓后冷却(生产器侧兜底)

逐次比较不同运行周期中的 held_assets。标的从已持仓集合中消失时,记录平仓时间戳。任何平仓后 240 分钟内,生产器都会跳过该标的的信号发出。此机制为运行时冷却时间的缺陷兜底。

重入保护

producer_daemon 持有逐周期的 scanner_lock,并可自动恢复过期 PID——取代 v6.x 手写的 fcntl 锁文件。防止两个运行周期发生竞争。

DSL 预设(v7.2.0 —「让赢家奔跑」阶梯,停用时间止盈)

阶段组件设置
阶段 1max_loss_pct15%
阶段 1retrace_threshold10(v6.x 从 6 调高)
阶段 1consecutive_breaches1
阶段 2 T0触发 10% / 锁定 0%(让涨幅达到 +10% 的标的在锁定前可以完全回撤)
阶段 2 T1触发 20% / 锁定 25%
阶段 2 T2触发 30% / 锁定 40%
阶段 2 T3触发 50% / 锁定 60%
阶段 2 T4触发 75% / 锁定 75%
阶段 2 T5触发 100% / 锁定 85%(峰值)
hard_timeout720 分钟(12h)已启用(仅剩的时间止盈)
weak_peak_cut—已停用(v7.2.0)
dead_weight_cut—已停用(v7.2.0)

v7.2.0:已停用 weak_peak_cut 和 dead_weight_cut。对 100 笔交易的分析 表明,时间止盈是瓶颈——它们会在趋势币加速前强制平仓,并限制了 足以带来全部收益的右侧尾部涨幅。两笔 HYPE 大额盈利(+13.9%、+8.9%)只有通过 12h 硬超时机制才得以保留,因此保留了这一故障保护机制。中位数交易会回吐少许收益; 现在右侧尾部不再受限。

风险门控(runtime.yaml risk.guard_rails)

门控设置
daily_loss_limit_pct25%
max_entries_per_day8
max_consecutive_losses3
cooldown_minutes (post-loss)30
drawdown_halt_pct25%
drawdown_reset_on_day_rolloverfalse(Roach 周六至周日亏损扩大的教训)
per_asset_cooldown_minutes240(4h)

运维安装

有关全新安装和从 v5.2 迁移的命令,请参阅 README.md。

已纳入的集群补丁

  • ✓ 持仓资产去重(三层:生产器预筛选、LLM 门控、运行时 per_asset_cooldown)
  • ✓ 平仓后冷却(生产器侧的后备机制,用于应对运行时冷却静默执行的缺陷)
  • ✓ 集群标准 T0/T1 阶梯
  • ✓ 可重入保护(v7.0.0:producer_daemon scanner_lock,支持过期 PID 自动恢复;取代手工编写的 fcntl)
  • ✓ 从配置读取钱包(不硬编码;senpi-skills 为公开项目)
  • ✓ drawdown_reset_on_day_rollover: false(Roach 教训)
  • ✓ senpi_runtime_helpers(v7.0.0:进程内 MCP + signal POST;取代 mcporter + openclaw-CLI 子进程)
  • ✗ FP-001 静默时段 — 暂缓,待集群遥测数据验证时段与损益的相关性

用户对话 Claude 会话的硬性规则

用户对话 Claude 会话不得调用以下任何工具: create_position、close_position、edit_position、 ratchet_stop_add、ratchet_stop_edit、ratchet_stop_delete、 cancel_order、strategy_close、strategy_close_positions。

这些工具仅供生产器守护进程(入场路径)和 DSL ratchet 引擎(退出路径)使用。用户对话会话只能只读。

如果用户提出的问题隐含操作意图(例如“有没有快触发的?”),请读取当前状态并作答——不要执行操作。生产器守护进程会在下一次轮询时处理实际信号。

技能归属信息

创建策略时,请在调用中包含 skill_name 和 skill_version。详情请参阅 references/skill-attribution.md。

许可证

MIT — 版权所有 2026 Senpi(https://senpi.ai)

评论

支持 Markdown