mcpField
T
tiger-strategy

tiger-strategy

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

关于 tiger-strategy

TIGER 是一套用于 OpenClaw 的交易策略,结合五类扫描器与目标引擎,根据预算、目标和期限调整交易激进度。它通过跟踪止损和风险控制管理持仓。

主要功能

  1. 01扫描五类市场信号形态
  2. 02按目标和期限调整激进度
  3. 03通过分级跟踪止损管理持仓
  4. 04执行组合与交易风险限制
  5. 05隔离单项资产扫描错误

适用场景

  1. 01运行基于目标的自动交易
  2. 02扫描突破、均值回归及资金费率信号
  3. 03管理持仓退出与交易风险

MCP 相关

需要连接 Senpi MCP 服务。它使用 Senpi 市场与账户工具进行扫描和状态检查,并通过持仓工具开仓、调整和关闭交易。

安装

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

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

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

包含的文件

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

OPTIMIZATION-PLAN.md
README.md
tiger-config.json
references/
config-schema.md
cron-templates.md
scanner-details.md
setup-guide.md
skill-attribution.md
state-schema.md
scripts/
compression-scanner.py
correlation-scanner.py
create-dsl-state.py
dsl-v4.py
funding-scanner.py
goal-engine.py
momentum-scanner.py
oi-tracker.py
prescreener.py
reversion-scanner.py
risk-guardian.py
roar-analyst.py
roar_config.py
tiger-exit.py
tiger-setup.py
tiger_config.py
tiger_lib.py

详细介绍

TIGER v2 — 多扫描器目标驱动交易

5 个扫描器。1 个目标。可配置的激进程度。机械式退出。

理念: WOLF 凭直觉狩猎。TIGER 会计算所需的一切,然后精准地完成目标。为它设定预算、目标和截止时间——它会自动调整激进程度。


架构

┌──────────────────────────────────────────┐
│           10 OpenClaw Crons              │
│  Compress(5m) Corr(3m) Momentum(5m)     │
│  Reversion(5m) Funding(30m) OI(5m)      │
│  Goal(1h) Risk(5m) Exit(5m) DSL(30s)    │
├──────────────────────────────────────────┤
│           Python Scripts                  │
│  tiger_lib.py  tiger_config.py           │
│  5 scanners / goal-engine / risk /       │
│  exit / oi-tracker / dsl-v4              │
├──────────────────────────────────────────┤
│           Senpi MCP (via mcporter)        │
│  market_list_instruments                  │
│  market_get_asset_data / market_get_prices│
│  create_position / close_position         │
│  edit_position / cancel_order             │
│  strategy_get_clearinghouse_state         │
│  leaderboard_get_markets                  │
│  account_get_portfolio                    │
├──────────────────────────────────────────┤
│           State Files                     │
│  tiger-config.json → tiger_config.py      │
│  state/{instance}/*.json (atomic writes)  │
└──────────────────────────────────────────┘

状态流: OI Tracker 对所有资产进行采样 → 扫描器根据信号汇聚情况评分 → Goal Engine 设定激进程度 → Agent 通过 create_position 入场 → DSL 管理移动止损 → Risk Guardian 强制执行限制 → Exit Checker 处理特定形态的退出。


技能归属

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


快速开始

  1. 确认 Senpi MCP 已连接(mcporter list 显示 senpi)
  2. 创建自定义策略:strategy_create_custom_strategy
  3. 为钱包注资:strategy_top_up
  4. 运行设置:
    python3 scripts/tiger-setup.py --wallet 0x... --strategy-id UUID \
      --budget 1000 --target 2000 --deadline-days 7 --chat-id 12345
    
  5. 根据 references/cron-templates.md 创建 10 个 OpenClaw cron

第一个小时: OI Tracker 需要约 1 小时的历史数据,压缩和均值回归扫描器才能使用 OI 数据。目标引擎和风险守护程序会立即生效。


5 种信号形态

1. 压缩突破(主要)

布林带挤压并伴随 OI 累积 → 价格突破布林带。

因素权重阈值
布林带挤压(4h)0.25宽度 < bbSqueezePercentile(默认值:第 35 百分位)
布林带突破(1h)0.25收盘价位于 1h 布林带外
OI 增长0.201h 内 OI 上升 > 5%
OI 与价格背离0.15OI 上升,价格持平
成交量激增0.15短期成交量 > 长期均值的 1.5×
RSI 未达极值0.10RSI 为 30-70
资金费率方向一致0.10资金费率有利于该方向
ATR 扩大0.05ATR > 2%
2. BTC/ETH 相关性滞后(v2 — 多领涨资产,多时间窗口)

领涨资产(BTC 或 ETH)大幅波动 → 高相关性山寨币尚未跟上。

多窗口检测: 检查 1h、4h、12h 和 24h 滚动窗口,并按比例调整阈值(基础阈值的 1×、1×、1.5×、2×)。可捕捉单根 K 线检查会遗漏的持续走势。

多领涨资产: BTC 和 ETH 都作为领涨资产进行跟踪。ETH 使用 0.8× 阈值乘数(波动性更高)。每个领涨资产都有各自的山寨币列表:

  • BTC 山寨币:SOL、DOGE、AVAX、LINK、ADA、DOT、NEAR、ATOM、FIL、INJ、SEI、SUI、TIA、JUP、WIF、PEPE、RENDER、FET、TAO、AR
  • ETH 山寨币(特定生态):OP、ARB、MATIC、STRK、AAVE、UNI、LDO、SNX、MKR、ENS、PENDLE、EIGEN、ENA、ETHFI、DYDX、CRV、COMP、SUSHI、IMX、BLUR

智能去重: 如果 BTC 和 ETH 同向波动,则只扫描 BTC 的山寨币(避免重复)。每次扫描最多检查 4 个山寨币,以避免超过 55s 超时限制。

因素权重阈值
领涨资产显著波动0.20任一滚动窗口内 > btcCorrelationMovePct(默认值:2%)
山寨币滞后0.25滞后比率 ≥ 0.5
成交量平静0.15山寨币成交量尚未激增
RSI 安全0.10未达极值
SM 方向一致0.15聪明资金方向一致
高相关性0.10资产位于领涨资产的已知山寨币列表中
杠杆充足0.05最大杠杆 ≥ minLeverage

窗口质量:STRONG(滞后 > 0.7)、MODERATE(0.5-0.7)、CLOSING(0.4-0.5)。

3. 动量突破

价格强势波动,并有成交量确认。

因素权重阈值
1h 波动0.25> 1.5%
2h 波动0.15> 2.5%
成交量激增0.20比率 > 1.5×
4h 趋势一致0.15波动方向与 4h 方向一致
RSI 未达极值0.1030-70
SMA 方向一致0.10价格位于 SMA20 的正确一侧
ATR 健康0.05> 1.5%

DSL 注意事项: 收紧 Phase 1 回撤(0.012)——动量反转很快。

4. 均值回归

资产过度延伸并出现衰竭信号 → 逆势交易。

因子权重阈值
RSI 极值(4h)0.20> rsiOverbought 或 < rsiOversold(必需)
RSI 极值(1h)0.15确认 4h 信号
RSI 背离0.20背离与反转方向一致
价格延伸0.1024h 内波动 > 10%
成交量衰竭0.15延伸行情中成交量下降
触及布林带极值0.10价格超出布林带
OI 拥挤0.15OI 高于均值 15% 以上
资金费率对我们有利0.10收取与我们方向一致的资金费率
5. 资金费率套利

资金费率极端 → 反向交易拥挤的一方,赚取收益。

因子权重阈值
资金费率极端0.25年化 > minFundingAnnualizedPct(默认:30%)
趋势一致0.20SMA20 支持该方向
RSI 安全0.15未出现对我们不利的极值
OI 稳定0.15资金费率来源未崩塌
SM 一致0.10聪明资金与我们站在同一边
每日收益率高0.10保证金每日收益率 > 5%
成交量健康0.05日成交额 > $10M

DSL 说明: 回撤档位更宽(0.02+)——优势来自收益,而非价格方向。如果资金费率反转,Risk Guardian 会自动退出。


目标引擎与激进程度

goal-engine.py 每小时运行一次。计算所需的每日回报率并设置激进程度:

激进程度所需每日收益率最低共振度移动止盈锁定行为
CONSERVATIVE< 3%0.7585%仅选择高质量机会,设置紧密锁定
NORMAL3-8%0.6570%标准操作
ELEVATED8-15%0.5550%放宽入场条件,降低阈值
ABORT> 15%999(永不)90%停止新建仓位,收紧所有止损

DSL v4 — 移动止损系统

每个仓位都有独立的 DSL 状态文件。组合运行器(dsl-v4.py)每 30s 检查所有活跃仓位。

重要: DSL 定时任务必须先检查 TIGER 状态中的 activePositions。如果没有持仓,立即输出 HEARTBEAT_OK,且不要调用 dsl-v4.py。这样可以避免 TIGER 空闲时产生不必要的会话噪声。

阶段 1(Tier 1 之前):绝对底线。连续 3 次触发 → 平仓。最长持续时间:90 分钟。

阶段 2(Tier 1+):移动止盈档位。

档位ROE 触发值高水位锁定比例备注
15%2%早期盈利信号
210%6%动能得到确认
315%11%填补旧版 T3→T4 之间的空档
420%16%稳健行情
530%25%强劲趋势
640%34%延伸行情
750%44%非凡行情
865%57%罕见区间
980%72%接近上限
10100%90%登月锁定

停滞止盈: ROE ≥ 8% 且高水位 1h 未更新 → 自动平仓。

按形态调整 DSL
形态阶段 1 回撤档位宽度备注
COMPRESSION0.015(标准)标准注意假突破
CORRELATION_LAG0.015标准绝对底线设得较紧——窗口会快速关闭
MOMENTUM0.012(更紧)标准快速反转
MEAN_REVERSION0.015中等预期波动 2-3 ATR
FUNDING_ARB0.020+(更宽)更宽基于收益,需要留出空间

风险管理

规则限额配置项默认值
单笔交易最大亏损余额的 3%maxSingleLossPct3
每日最大亏损当日开始时余额的 8%maxDailyLossPct8
距峰值的最大回撤15%maxDrawdownPct15
最大并发仓位数2maxSlots2
OI 崩塌退出1h 内 OI 下跌 > 25%oiCollapseThresholdPct25
资金费率反转退出FUNDING_ARB 时资金费率反转—自动
临近截止时间最后 24h → 收紧所有止损—自动

所有百分比值均为整数(5 = 5%)。


反模式

  1. 绝不要在 ABORT 状态下激进入场。 目标引擎设置 ABORT 是有原因的。
  2. 绝不要覆盖 DSL。 DSL 会自动关闭。DSL 退出后不要重新进入。
  3. 资金费率反转后,绝不要继续持有 FUNDING_ARB。 该策略逻辑已失效。
  4. 2 小时后绝不要追逐动量。 如果错过了 1 小时的行情,就等待下一次机会。
  5. 4 小时 RSI 未达到极值时,绝不要进行均值回归交易。 这是必需的筛选条件,不是可选项。
  6. 绝不要在没有超时包装器的情况下运行扫描器。 timeout 55 可防止运行重叠。
  7. 绝不要将 xyz: 资产混入主扫描器分组。 预筛选器会将它们隔离到 group_xyz;扫描器会通过硬性过滤将其排除。

弹性架构

xyz: 硬隔离(3 层)
  1. 预筛选器:将以 xyz: 为前缀的资产单独划分到 group_xyz,绝不与 a-f 主分组混合
  2. 扫描器过滤:每个扫描器都有 names = {n for n in names if not n.startswith("xyz:")} 保护条件
  3. 逐资产 try/except:即使 xyz: 资产漏网,也会被逐资产错误处理程序捕获
逐资产错误隔离

所有 4 个扫描器(压缩、相关性、动量、均值回归)都会用 try/except 包装逐资产分析循环。遇到异常资产(数据缺失、API 错误、格式意外)时,会记录错误并跳过该资产,其余扫描会正常继续。这可以防止级联故障,避免单个问题资产导致整个扫描任务失败。


API 依赖项

工具使用方用途
market_list_instruments所有扫描器、oi-tracker资产发现、OI、资金费率、成交量
market_get_asset_data所有扫描器K 线(1 小时、4 小时)、资金费率
market_get_pricescorrelation-scanner、risk-guardianBTC 价格、山寨币价格
leaderboard_get_marketscorrelation、funding 扫描器SM 一致性
account_get_portfoliogoal-engine投资组合余额
strategy_get_clearinghouse_stategoal-engine、risk-guardian保证金、持仓
create_positionAgent(来自扫描器输出)开立持仓
close_positiondsl-v4、risk-guardian、tiger-exit平仓
edit_positionrisk-guardian调整持仓规模

状态架构

完整架构及字段说明请参阅 references/state-schema.md。

关键状态文件:

state/{instanceKey}/
├── tiger-state.json              # Positions, aggression, safety, daily stats
├── dsl-{ASSET}.json              # Per-position DSL trailing stop state
├── oi-history.json               # 24h OI time-series
├── trade-log.json                # All trades with outcomes
└── scan-history/                 # Scanner output history

所有状态文件都包含 version、active、instanceKey、createdAt、updatedAt。所有写入操作都使用 atomic_write()。


Cron 设置

请参阅 references/cron-templates.md,了解可直接使用的 OpenClaw cron 负载。

静默策略 — 至关重要:当 cron 触发后,结果为 HEARTBEAT_OK、NO_POSITIONS 或没有可执行信号时:

  • 不要通知 Telegram
  • 不要在聊天中回复
  • 不要解释 cron 执行了什么
  • 不要总结扫描结果
  • 不要输出任何内容——完全保持静默 只有在发生可执行事项时才发言(聊天或 Telegram):开仓、平仓、激进程度发生变化、触发风险暂停,或出现需要处理的错误。空闲周期 = 完全静默。

所有 cron 都以隔离模式运行。 不在主会话中运行 cron。扫描周期内不要进行任何解说。用户绝不应看到 HEARTBEAT_OK、扫描器推理过程或“系统运行正常”之类的消息。

#任务间隔脚本模型层级
0预筛选器5 分钟prescreener.pyTier 1
1压缩扫描器5 分钟compression-scanner.pyTier 1
2相关性扫描器3 分钟correlation-scanner.pyTier 1
3动量扫描器5 分钟momentum-scanner.pyTier 1
4均值回归扫描器5 分钟reversion-scanner.pyTier 1
5资金费率扫描器30 分钟funding-scanner.pyTier 1
6OI 跟踪器5 分钟oi-tracker.pyTier 1
7目标引擎1 小时goal-engine.pyTier 2
8风险守护程序5 分钟risk-guardian.pyTier 2
9退出检查器5 分钟tiger-exit.pyTier 2
10DSL 综合任务30 秒dsl-v4.pyTier 1
11ROAR 分析器8 小时roar-analyst.pyTier 2

Tier 1(快速/低成本):阈值检查、数据收集、DSL 数学计算。以 isolated 模式运行,设置 delivery.mode: "none",并显式指定模型(已配置的模型)。 Tier 2(能力更强):激进程度决策、风险判断、退出评估。以 isolated 模式运行,设置 delivery.mode: "announce",并显式指定模型(已配置的模型)。OpenClaw 会自动抑制 HEARTBEAT_OK——只有实际内容才会送达。 DSL(Cron 10):在 main 会话中运行(systemEvent)——需要仓位状态上下文。

扫描器的运行时间会错开 1–2 分钟,以避免触发 mcporter 速率限制(请参阅 cron-templates.md)。


ROAR — 递归优化与调整运行时

ROAR 是 TIGER 的元优化器。它每 8 小时运行一次(另有每完成第 5 笔交易时的临时运行),分析 TIGER 的交易日志,并在限定范围内调整执行参数。绝不会触及用户意图(预算、目标、风险限制)。

ROAR 调整的内容(在硬性最小值/最大值范围内):

  • 各模式的共振阈值(0.25–0.85)
  • 扫描器阈值(BB 挤压百分位、BTC 相关性变动、资金费率年化值)
  • 各阶段的 DSL 回撤阈值(0.008–0.03)
  • 各激进程度级别的追踪锁定百分比

ROAR 绝不触及的内容(受保护):预算、目标、截止日期、max_slots、max_leverage、maxDrawdownPct、maxDailyLossPct、maxSingleLossPct。

规则引擎(6 条规则):

  1. 10 笔或更多交易的胜率 < 40% → 将模式共振阈值提高 0.05
  2. 10 笔或更多交易的胜率 > 70% → 将阈值降低 0.03,以捕捉更多信号
  3. 平均 DSL 退出等级 < 2 → 将 phase1 回撤放宽 0.002(让仓位继续运行)
  4. 平均 DSL 退出等级 ≥ 4 → 将 phase1 回撤收紧 0.001(锁定收益)
  5. 某模式有 5 笔或更多交易,但 48 小时内没有入场 → 将阈值降低 0.02
  6. 20 笔或更多交易的期望值为负 → 禁用该模式 48 小时(自动重新启用)

安全性:每个周期都会执行“结果变差则回滚”检查。如果胜率和平均 PnL 均较上次调整后下降,则自动回滚到先前的配置。

脚本:roar-analyst.py(引擎)、roar_config.py(边界、状态、回滚逻辑)。


预期表现

指标目标
每日交易数1-4(重质不重量)
胜率55-65%
盈利因子1.8-2.5
每日收益目标1.5-3%(已在 Mission 1 中验证可持续)
最佳条件波动较大且形态明确(收缩→突破)
最差条件低波动缓慢磨盘(信号少)、震荡(假突破)
费用拖累(10 倍,双向交易)约占保证金的 1.8%——所有盈亏估算都要考虑这一点

已知限制

  • OI 历史数据引导。 扫描器需要约 1 小时的 OI 数据后,依赖 OI 的信号才可靠。
  • mcporter 延迟。 每次调用约 6 秒。每个周期的扫描器最多处理 8 种资产。
  • DSL 按持仓分别处理。 每个持仓都需要自己的 DSL 状态文件。
  • 关联扫描器将 BTC + ETH 视为领涨资产。 无法检测由其他资产带动的行情(例如 SOL 领涨的反弹)。
  • 资金费率套利需要耐心。 收益来自长期累积;DSL 必须设置得足够宽。
  • 目标引擎每小时重新计算。 交易中途可能调整激进程度。

优化选项

选项配置键保守默认激进
共振阈值(NORMAL)minConfluenceScore.NORMAL0.750.650.55
BB 收缩百分位bbSqueezePercentile202535
BTC 关联变动 %btcCorrelationMovePct432
最大杠杆maxLeverage71010
最大仓位数maxSlots123
每日亏损停机 %maxDailyLossPct5812
移动锁盈(NORMAL)trailingLockPct.NORMAL0.850.700.50
每个仓位的保证金 %margin_pct_per_slot0.250.300.40
成交量比率门槛(动量)volume_ratio_gate.MOMENTUM1.51.21.0

注意事项

  • maxSingleLossPct 是整数:5 = 5%。
  • minConfluenceScore 的值是小数(0.40 = 40%),不是整数——这是一个 0-1 的加权分数。
  • trailingLockPct 的值是小数(0.60 = 锁定 60%)。
  • DSL 层级中的 triggerPct 是 ROE 百分比(5 = 5% ROE),不是价格百分比。
  • DSL 中的 lockPct 是要锁定的高水位涨幅百分比,不是回撤阈值。
  • DSL 只读取 DSL_STATE_FILE 环境变量——位置参数会被静默忽略。
  • 所有扫描器脚本都使用 timeout 55,以防止 cron 任务重叠。
  • Cron 错开偏移::00 压缩、:01 动量、:02 均值回归、:03 OI、:04 风险+退出。

实盘交易经验

运维
  • DSL 状态文件的 active 字段:必须包含 active: true,否则 dsl-v4.py 会返回 {"status": "inactive"}(第 22 行检查)。这是设置新仓位时最容易踩的坑。
  • DSL 调用语法:DSL_STATE_FILE=/path/to/file.json python3 scripts/dsl-v4.py COIN
  • API 延迟:market_get_asset_data 每次调用约 4 秒,market_list_instruments 约 6 秒。每个 55 秒扫描窗口最多处理 8 种资产。这是正常情况——要据此设计,不要归咎于它。
  • 关联扫描器超时:每次扫描最多处理 4 种山寨币(从 6 种下调),以确保在 55 秒内完成。为时效性要求高的滞后交易,将 Cron 间隔缩短至 3 分钟。
  • 压缩扫描器信号:要可执行,必须同时满足 breakout: true 和存在 direction——仅有较高的压缩分数还不够。
  • 每次编辑后都要测试退出脚本:崩溃的退出脚本不会显现出来,还会造成实际资金损失(PUMP 因 UnboundLocalError 损失约 43 美元)。
  • 代码不读取配置,修改配置也毫无意义:务必确认使用该配置的代码确实加载了修改后的配置键。
  • 先设置交易所止损,再设置 DSL 状态:入场后立即通过 edit_position 设置交易所级别的止损。DSL 负责判断,交易所止损是安全网。
  • 频繁启动 Cron 会产生僵尸进程:这些进程可能在 PID 1 下累积并导致 fork 失败。必要时监控并重启容器。
  • mcp-remote stdio 代理不可靠:应改用直接的 streamable-http 传输方式。
交易
  • 不要做空持仓量上升的压缩资产——压缩行情往往会向上突破。
  • 不要重复持仓:跳过已在 active_positions 中的资产信号。
  • 反向重新入场是有效的:信号强劲时,反向交易同一资产是可行的。
  • DSL 移动止损 >> 固定止盈:每笔盈利交易的行情都超过了固定止盈的平仓点。让盈利继续奔跑。
  • 高分信号(0.85+)足以作为突破黑名单的理由:如果原先的亏损较小,且新方向不同,就进行交易。
  • create_position 格式:需要包含 coin、direction、leverage、marginAmount、orderType 字段的 orders 数组。
  • ALO 费用优化:入场和非紧急出场(停滞、时间止损、每日目标)使用 orderType: "FEE_OPTIMIZED_LIMIT" + ensureExecutionAsTaker: true。每次成交可节省约 8 个基点。仅在以下情况使用 MARKET:DSL 触发平仓、风险守护程序硬止损、触及每日亏损上限,以及交易所级别的 SL。edit_position 中交易所 SL 的 orderType 必须始终为 MARKET。
  • close_position 语法:mcporter call 'senpi.close_position(...)'
  • CLOSE_NO_POSITION 模式:DSL 发出平仓调用前,链上仓位可能已经平仓——应妥善处理,不要视为错误。
  • 仓位规模:先考虑保证金:per_slot_budget = 余额的 30% 作为保证金。乘以杠杆得出名义价值。旧公式(余额÷槽位数÷杠杆)导致 PUMP 少用了 $730。
  • 10x 杠杆下,手续费每次往返会吞掉 1.8% 的保证金:根据清算所的 accountValue 跟踪余额,而非价格变动。
  • 4h 走势背离时,24h 相关性信号会过时:始终检查时间周期是否一致。在 SEI/OP/ARB 的 LONG 交易中,走势在 1 小时内反转,导致亏损约 $90。
  • 成交量比率 < 1.2 时,动量入场缺乏信心:XPL 的成交量比率为 0.42,导致立即止损。应在配置中设置硬性门槛。
  • 入场时 RSI > 70 是危险信号:FARTCOIN 入场时 RSI 为 70.4,ROE 亏损 -13.7%。已收紧 RSI 门槛。
  • 交易所 LIMIT 止损不可靠:止损始终使用 orderType: "MARKET"。快速波动时,LIMIT 可能无法成交。
  • 现实的目标胜过不切实际的暴涨预期:任务 1(2.5 天涨幅 18.5%,约 3%/天)成功。任务 3(8%/天)已中止。目标最高为 1.5-3%/天。
  • $3K 资金下,2 个槽位优于 3 个:小额资金时,集中持仓胜过分散投资。每个仓位都能获得足够的保证金。

评论

支持 Markdown