关于 opportunity-scanner
基于 Python 的技能,通过分阶段筛选 Hyperliquid 永续合约市场,结合行情数据和技术评分寻找交易候选。其流程包含小时趋势门槛、硬性排除条件及跨轮扫描跟踪。
主要功能
- 01按流动性筛选市场
- 02加入聪明资金与新鲜度信号
- 03分析 4h、1h 和 15m K 线
- 04按四个市场维度评分
- 05应用 BTC 宏观调整
- 06跟踪多轮扫描的分数变化
适用场景
- 01筛选永续合约交易候选
- 02检查交易设想是否顺应小时趋势
- 03复查多轮扫描中的机会评分变化
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ senpi-ai/ senpi-skills --skill opportunity-scanner安装后在 Claude Code 中输入/opportunity-scanner确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/config-schema.mdhourly-trend.mdoutput-schema.mdscoring.mdsource-code-v5.md详细介绍
Opportunity Scanner v5
Hyperliquid 上有 521 个永续合约。获取所有合约的 K 线并计算技术指标会消耗 500k+ 个令牌。此扫描器会筛查所有合约,但只在真正的机会出现时消耗令牌。
所有计算均在 Python 中完成。几乎不消耗 LLM 令牌。
4 阶段漏斗
阶段 0:BTC 宏观背景
来源:BTC 4h + 1h K 线(2 次 API 调用)。
输出:btc_trend(strong_down/down/neutral/up/strong_up)以及应用于所有最终分数的 macro_modifier。可通过 scanner-config.json 配置。
阶段 1:批量筛查(约 0 个 LLM 令牌)
来源:单次 API 调用 — metaAndAssetCtxs。
筛选条件:24h 成交量 > $500K(可配置)。
输出:约 70 个符合最低流动性要求的资产。
阶段 2:聪明钱 + 新鲜度叠加层(约 0 个 LLM 令牌)
来源:leaderboard_get_markets + leaderboard_get_top(limit=100)。
每个资产两个条目(多头 + 空头)——保留占主导的一方。
新鲜度:avgAtPeak(>85% = 活跃,<50% = 过时)、nearPeakPct。
筛选:按快速评分选出前 15-16 名。强制纳入聪明钱资产中排名前 8 的资产。
阶段 3:深入分析 — 多时间框架(约 0 个 LLM 令牌)
通过 ThreadPoolExecutor 并行获取 K 线(约 20 秒,串行约 60 秒)。
| 时间框架 | 周期 | K 线数量 | 用途 |
|---|---|---|---|
| 4h | 7 天 | ~42 | 宏观趋势(EMA 5/13 交叉) |
| 1h | 24h | ~24 | 小时级趋势结构 + RSI、成交量、支撑/阻力位、形态 |
| 15m | 6h | ~24 | 入场:RSI、形态、动量、成交量背离 |
v5:小时级趋势分类——分析 1h 数据中的摆动高点/低点,将趋势分类为 UP/DOWN/NEUTRAL。算法详见 references/hourly-trend.md。
这是所有交易决策的首要门槛。 绝不在 hourlyTrend: "DOWN" 时开多,也不在 hourlyTrend: "UP" 时开空。
各时间框架的错误恢复:如果 15m 获取失败,分析会继续使用 4h+1h 数据。
阶段 4:跨扫描动量
将结果保存到 scan-history.json。计算 scoreDelta(与上次扫描相比的变化)和 scanStreak(连续出现次数)。
4 大支柱评分(各占 25%,总分 0-400)
完整的分值明细见 references/scoring.md。
支柱 1:聪明钱(25%)
PnL 贡献分档、交易者数量(v5:400+ = +30 分)、加速情况、新鲜度。交易者数量可以区分真实信号与噪声——信心等级为 4 且有 130 名交易者时曾导致反复波动,而信心等级为 4 且有 400+ 名交易者时,信号始终都是真实的。
支柱 2:市场结构(25%)
成交量、成交量激增、未平仓量、未平仓量/成交量比率。
支柱 3:技术指标(25%)
4h 趋势一致性、1h 趋势结构(v5)、多时间框架 RSI 收敛、成交量确认、蜡烛图形态、动量。小时级逆势:-30 分(v5)。
支柱 4:资金费率(25%)
中性资金费率最佳(+40)。有利的极端值表现强劲(+35)。不利的极端值会造成负面影响(-20)。
BTC 宏观修正因子
应用于最终分数。BTC 下跌趋势期间会降低山寨币多头的分数,并提高空头的分数(反之亦然)。所有修正因子均可配置。
硬性淘汰条件(v5)
触发以下条件时,机会会被完全跳过,而不仅仅是扣分:
| 条件 | 原因 |
|---|---|
| 小时级逆势 | 1 分钟反弹中的聪明钱信心无法抵消 2 周的下跌趋势。$346 的教训。 |
| RSI 极端(空头 < 20,多头 > 80) | 反转即将到来 |
| 4h 逆势且强度 > 50 | 宏观趋势强烈不利 |
| 成交量衰减(两个时间框架上的比率均 < 0.5) | 缺乏流动性 |
| 资金费率严重不利(> 50% 年化) | 费用拖累会吞噬利润 |
| BTC 宏观逆风 > 30 分 | 全市场风险 |
架构
┌──────────────────────────────────────────┐
│ Stage 0: BTC macro (2 API calls) │
├──────────────────────────────────────────┤
│ Stage 1: metaAndAssetCtxs → ~70 assets │
├──────────────────────────────────────────┤
│ Stage 2: SM + freshness → top 15-16 │
├──────────────────────────────────────────┤
│ Stage 3: parallel candle fetch + v5 │
│ hourly trend classification │
├──────────────────────────────────────────┤
│ Stage 4: cross-scan momentum │
├──────────────────────────────────────────┤
│ v5: Hard disqualifier check │
├──────────────────────────────────────────┤
│ Final: scored JSON → LLM formats report │
│ Total: ~5k LLM tokens │
└──────────────────────────────────────────┘
文件
| 文件 | 用途 |
|---|---|
scripts/opportunity-scan-v5.py | Python 流水线——获取数据、评分并应用小时级门槛 |
scripts/opportunity-report.sh | 封装脚本——运行流水线并输出 LLM 提示词 |
scanner-config.json | 用户偏好:风险、杠杆、宏观修正因子 |
scan-history.json | 自动维护:用于跨扫描追踪的最近 12 次扫描记录 |
active-positions.json | 当前持仓(冲突标记) |
配置架构
完整配置及所有选项请参阅 references/config-schema.md。
输出格式
完整的输出 JSON 架构请参阅 references/output-schema.md。
每个机会的关键字段:asset、direction、leverage、finalScore、hourlyTrend、trendAligned、pillarScores、smartMoney、technicals、funding、risks、scoreDelta、scanStreak。
被取消资格的资产会单独报告,并附带 reason 和 wouldHaveScored,以确保透明度。
源代码
请参阅 references/source-code-v5.md,了解 Python 扫描器 v5 的新增内容(小时趋势分类、评分调整、硬性取消资格逻辑)。
Cron 设置
每 10–30 分钟运行一次(可选用时间感知调度):
python3 scripts/opportunity-scan-v5.py | python3 scripts/opportunity-report.sh
从 v4 迁移
可直接替换。所有 v5 功能均有合理的默认值:
- 默认启用小时趋势门控(设置
hourlyTrendGate: false可禁用) - 逆小时趋势惩罚为 -30 分(可配置)
- 输出中新增
hourlyTrend和trendAligned disqualifiedAssets会显示被过滤的资产- 自动新增 400+ 层级的 SM 交易者数量