--- name: intraday-regime-detector description: "港美股日内做T 元策略 - 根据 5min K 线自动判别市场状态 (趋势/震荡/混乱) 并推荐匹配策略 (趋势跟踪/网格/布林带回归)。来源 DeepSeek 分享, 决策树: R² > 0.75 趋势; R² < 0.30 + ADF 平稳 + 低波动 = 网格; 高波动 = 布林带; 其他 NO_TRADE。⚠️ 仅识别市场状态, 不替代 longbridge-t-monitor / strategy-management 的入场/出场逻辑。" version: 1.0.0 author: Hermes Agent + DeepSeek 分享 (26iikphv8h94feze9q) tags: [trading, intraday, market-regime, regime-detection, deepseek, hk, us] metadata: hermes: tags: [trading, intraday, market-regime, regime-detection, deepseek, hk, us] related_skills: [longbridge-t-monitor, strategy-management] scripts: - intraday_regime.py: "核心: IntradayStrategySelector + MarketDiagnosis + MarketRegime + StrategyType" - regime_scan.py: "扫描港美股 top 5 候选, 拉长桥 5min K线, 跑判别, 推报告" references: - decision-tree.md: "决策树详细说明 + 4 策略参数说明" --- # Intraday Regime Detector (港美股日内做T 元策略) **核心定位**:**不是替代** `longbridge-t-monitor` 或 `strategy-management`, 而是**在它们之前**先判断"现在适不适合做T、做哪个策略"。 ``` intraday-regime-detector (本 skill) → 告诉用户 "用什么策略 + 为什么" ↓ longbridge-t-monitor (现有) → 执行入场/出场 strategy-management (现有) → 选策略 + 算 SL/TP ``` ## 🎯 解决的痛点 | 痛点 | 解决 | |---|---| | 趋势市用网格 = 反复止损 | R² > 0.75 → 强制趋势策略 | | 震荡市用趋势 = 追涨杀跌 | R² < 0.30 → 强制震荡策略 | | 混乱行情硬做 = 越做越亏 | ADF p > 0.05 → NO_TRADE | | 不知道用宽网格还是窄网格 | 波动率高 → 布林带, 低 → 网格 | ## 📦 决策树 (DeepSeek 原始版) ``` 第一步: 输入近 20-30 根 5 分钟 K 线 + 开盘缺口 第二步: 计算趋势效率 R² (线性回归) ├─ R² > 0.75: 强趋势市 → 趋势跟踪 (顺势 EMA5 支撑/阻力) ├─ R² < 0.30: 强震荡市 │ ├─ ADF p < 0.05 (平稳): │ │ ├─ 波动率 > 30%: 布林带回归 │ │ └─ 波动率 ≤ 30%: 网格交易 │ └─ ADF p ≥ 0.05 (不平稳): 混乱 → NO_TRADE └─ 0.30 ≤ R² ≤ 0.75: 过渡 → 暂停, 等模式清晰 ``` ## 🚀 快速使用 ### Python API ```python import sys sys.path.insert(0, '/home/openclaw/.hermes/skills/trading/intraday-regime-detector/scripts') from intraday_regime import IntradayStrategySelector # 假设 df 是 5min K线 DataFrame, 包含 open/high/low/close selector = IntradayStrategySelector() diagnosis = selector.diagnose(df, open_gap_pct=0.3) print(f"状态: {diagnosis.regime.value}") print(f"推荐: {diagnosis.recommended_strategy.value}") print(f"R²: {diagnosis.r_squared}, 置信度: {diagnosis.confidence}") print(f"参数: {diagnosis.strategy_params}") ``` ### CLI 扫描 (港美股 top 5) ```bash /home/openclaw/.hermes/hermes-agent/venv/bin/python \ /home/openclaw/.hermes/skills/trading/intraday-regime-detector/scripts/regime_scan.py ``` 输出示例: ``` 🔲 9888.HK (HK) 现价 $110.30 (+1.21%) 置信度 85% 状态: 低波震荡 | R²=0.2363 | 波动率=3.32% | ADF p=0.01 推荐: 网格交易做T grid_spacing: 0.500% grid_levels: 3 base_price: 110.30 ``` ## 📊 输出数据结构 `MarketDiagnosis` (dataclass): ```python @dataclass class MarketDiagnosis: regime: MarketRegime # 6 种状态之一 r_squared: float # 趋势效率 0-1 volatility: float # 年化波动率 adf_pvalue: float # ADF 平稳检验 p 值 recommended_strategy: StrategyType # 4 种策略之一 strategy_params: Dict # 动态参数 (SL/TP/grid 等) confidence: float # 0-1 reasoning: str # 人话解释 ``` `MarketRegime` 枚举: - `STRONG_TREND_UP` / `STRONG_TREND_DOWN` - `HIGH_VOL_SHAKE` (高波动震荡) - `LOW_VOL_STABLE` (低波动震荡) - `CHAOTIC` (混乱) - `UNKNOWN` (过渡区间) `StrategyType` 枚举: - `TREND_FOLLOWING` (EMA5 顺势) - `GRID_TRADING` (3 格 × 0.5%) - `BOLLINGER_REVERSION` (20 期 ±2σ) - `NO_TRADE` (暂停) ## 🔧 配置参数 ```python selector = IntradayStrategySelector( trend_r2_threshold=0.75, # R² 高于此 = 趋势市 chaos_r2_threshold=0.30, # R² 低于此 = 震荡市 adf_significance=0.05, # ADF p < 此 = 平稳 vol_lookback=20, # 历史波动率窗口 high_vol_threshold=0.30, # 年化波动率高/低分界 grid_count=3, # 网格层数 bb_period=20, # 布林带周期 bb_std=2.0, # 布林带 σ ema_period=5, # 趋势策略 EMA 周期 ) ``` ## 🔄 与现有 skill 的关系 | Skill | 关系 | |---|---| | `longbridge-t-monitor` | **下游** - 本 skill 决定"该不该做T + 用什么策略", 然后 longbridge-t-monitor 执行 | | `strategy-management` | **互补** - strategy-management 有具体的 5 策略 (rsi2_revert/vwap_revert/early_bird/turtle/sma), 本 skill 是"先用元策略筛一下再用具体策略" | | `intraday-trading` | **理论来源** - 已有 4 策略设计 + 5 步预检 + 资金管理表 | | `crypto-t-monitor` | **独立** - 币圈用 OKX ATR 公式, 本 skill 不涉及 | **集成路径 (建议)**: ``` 盘前 cron (c3401d727f39, cfa0c1d6baa5) ↓ 生成候选池 盘中 cron (新加): regime_scan ↓ 输出 "可做 T 的票 + 推荐策略" 手动 / agent: 看推送 ↓ 决定是否入场 longbridge-t-monitor: 执行 ``` ## ⚠️ Pitfalls 1. **ADF 是简化版** — 实际生产用 `statsmodels.tsa.stattools.adfuller`. 代码已 fallback, 有 statsmodels 就用真 ADF 2. **30 根 K 线窗口** — 跟 longbridge-t-monitor 一样的限制, period 选 5m → 2.5h 窗口 3. **网格/布林带参数是建议值** — 实盘要按资金 + 流动性 + 个人风险偏好调整 4. **本 skill 不替代风控** — 出场点位 / 仓位管理 / 单日最大亏损 → 用 longbridge-t-monitor 5. **不主动下单 (用户偏好 2026-07-16)**: 用户原话 "在跑日内交易扫描任务时使用 intraday-regime-detector, 不主动下单". 本 skill 只输出状态 + 推荐策略, **不要在 diagnose() 里加任何下单逻辑**. 6. **港股 candlesticks 不支持 `--json`**: 长桥 CLI 港股 candlesticks 只输出中文表格, 表格分隔符是 `│` (不是 `|`). `regime_scan.py` 已处理. 美股用 `--json`. ## 👤 用户偏好 (2026-07-16) - **来源**: https://chat.deepseek.com/share/26iikphv8h94feze9q - **要求**: 跑日内交易扫描任务时使用 intraday-regime-detector, 不主动下单 - **三段式 pipeline** (已部署): 1. 候选池 (quant-factor-mining) → top 5 2. 元策略 (本 skill) → confidence ≥ 0.6 算 actionable 3. 点位 (strategy-management/exit_levels) → SL/TP/TP2 - **部署位置**: - `/home/openclaw/qdrant/calc_hk_levels.py` - 港股 - `/home/openclaw/qdrant/calc_us_levels.py` - 美股 - Cron `c4dc9ac8854c` (港股 */15 9-15) + `70d24624637c` (美股 */15 21-3) 周一到周五 - Wrapper: `~/.hermes/scripts/hk_t_levels.sh` / `us_t_levels.sh` - **A 股 vs 港美股** (重要区分, 用户 2026-07-16 强调): - A 股做T = 底仓滚动 (T+1 制度) - 港美股做T = 直接双向交易 (T+0) - **本 skill 只服务港美股**。A 股做T 完全用不上这个。 ## 🛡️ 已知问题 | 问题 | 处理 | |---|---| | statsmodels 未装 | 自动 fallback 到自相关近似 | | K 线 < 10 根 | 抛 ValueError, 跳过 | | R² 边界值 (0.30 / 0.75) | 默认参数, 可在 __init__ 调整 | | 大量候选 NO_TRADE | 正常, 实测 10 支 7 支 NO_TRADE. 算法价值正在于"拒绝不值得做的票" | ## 📚 参考 - **来源**: https://chat.deepseek.com/share/26iikphv8h94feze9q - **决策树详细**: `references/decision-tree.md` - **测试数据**: `intraday_regime.py` 的 `__main__` 跑自检 - **集成代码**: - `~/.hermes/qdrant/calc_hk_levels.py` (港股) - `~/.hermes/qdrant/calc_us_levels.py` (美股) - `~/.hermes/scripts/hk_t_levels.sh` / `us_t_levels.sh` (wrapper) ## 🔄 版本历史 - **v1.0.0** (2026-07-16): 初始版本 - `intraday_regime.py` - 核心判别器 (DeepSeek 原始代码 + statsmodels fallback + dataclass) - `regime_scan.py` - 长桥 K线集成扫描器 - 自检场景 (震荡市/趋势市) 全部通过