方法 2 (百分比波动率) + 方法 3 (关键价位) 混合算法 feat(intraday-regime-detector): 新 skill - 日内市场状态判别 来源: DeepSeek chat share 26iikphv8h94feze9q 核心: R² + ADF + 历史波动率, 识别趋势市 / 震荡市 / 混乱 推荐: 趋势跟踪 / 网格交易 / 布林带回归 / NO_TRADE
204 lines
8.4 KiB
Markdown
204 lines
8.4 KiB
Markdown
---
|
||
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线集成扫描器
|
||
- 自检场景 (震荡市/趋势市) 全部通过 |