方法 2 (百分比波动率) + 方法 3 (关键价位) 混合算法 feat(intraday-regime-detector): 新 skill - 日内市场状态判别 来源: DeepSeek chat share 26iikphv8h94feze9q 核心: R² + ADF + 历史波动率, 识别趋势市 / 震荡市 / 混乱 推荐: 趋势跟踪 / 网格交易 / 布林带回归 / NO_TRADE
144 lines
4.8 KiB
Markdown
144 lines
4.8 KiB
Markdown
# 决策树详细说明
|
||
|
||
来源: DeepSeek chat share 26iikphv8h94feze9q
|
||
|
||
## 一、核心判别算法
|
||
|
||
### 1. 趋势效率 R² (线性回归)
|
||
|
||
**目的**: 衡量趋势的"纯粹度", 比单纯看均线方向更科学。
|
||
|
||
**计算**:
|
||
- 取过去 N 根 K 线 (默认 20 根 5min K) 的收盘价序列
|
||
- 以时间 (1,2,3...20) 为自变量 X, 收盘价为因变量 Y
|
||
- 做一元线性回归
|
||
- 计算 R²
|
||
|
||
**判断**:
|
||
| R² | 状态 | 含义 |
|
||
|---|---|---|
|
||
| > 0.75 | 趋势市 | 价格运动有明确方向, 噪声小 |
|
||
| < 0.30 | 震荡市 | 价格运动无方向, 充满噪声 |
|
||
| 0.30-0.75 | 过渡 | 方向不明, 等待 |
|
||
|
||
### 2. ADF 平稳检验 (Augmented Dickey-Fuller)
|
||
|
||
**目的**: 判断价格序列是否倾向于均值回归。
|
||
|
||
**计算**:
|
||
- 对过去价格序列执行 ADF 检验
|
||
- 返回 p 值
|
||
|
||
**判断**:
|
||
| p 值 | 含义 | 策略匹配 |
|
||
|---|---|---|
|
||
| < 0.05 | 拒绝非平稳假设, 统计上平稳 | **均值回归, 适合震荡做T** |
|
||
| > 0.05 | 不能拒绝非平稳, 可能是随机游走或趋势 | **不做均值回归** |
|
||
|
||
**⚠️ 简化实现**: 本 skill 用一阶差分自相关近似, 生产建议替换为 `statsmodels.tsa.stattools.adfuller` (代码已 fallback).
|
||
|
||
### 3. 历史波动率 (年化)
|
||
|
||
**计算**: log returns 标准差 × √252
|
||
|
||
**判断**:
|
||
| 波动率 | 含义 |
|
||
|---|---|
|
||
| > 30% | 高波动, 适合宽间距逆势 (布林带) |
|
||
| ≤ 30% | 低波动, 适合网格 |
|
||
|
||
### 4. 开盘缺口
|
||
|
||
**计算**: (open - prev_close) / prev_close × 100%
|
||
|
||
**判断**:
|
||
| 缺口 | 含义 |
|
||
|---|---|
|
||
| > +0.5% | 高开强势, 优先做正T |
|
||
| < -0.5% | 低开弱势, 优先做倒T |
|
||
| 平开/微小 | 默认震荡模式 |
|
||
|
||
## 二、策略参数说明
|
||
|
||
### 1. 趋势跟踪做T (TREND_FOLLOWING)
|
||
|
||
**适用**: 强趋势市 (R² > 0.75)
|
||
|
||
**参数** (5min K):
|
||
- `direction`: long_only / short_only
|
||
- `entry_trigger`: 价格回踩 EMA5 不破 (上涨) / 价格反弹至 EMA5 受阻 (下跌)
|
||
- `stop_loss`: EMA5 × 0.995 (long) / EMA5 × 1.005 (short)
|
||
- `take_profit`: 现价 × 1.02 / × 0.98
|
||
|
||
### 2. 网格交易做T (GRID_TRADING)
|
||
|
||
**适用**: 低波动震荡 (R² < 0.30 + ADF 平稳 + 低波动)
|
||
|
||
**参数**:
|
||
- `grid_spacing`: 近期平均振幅 × 0.8, 至少 0.5%
|
||
- `grid_levels`: 3 (默认)
|
||
- `base_price`: 当前价
|
||
- `reverse_at_boundary`: True (在边界反向开仓)
|
||
|
||
### 3. 布林带回归做T (BOLLINGER_REVERSION)
|
||
|
||
**适用**: 高波动震荡 (R² < 0.30 + ADF 平稳 + 高波动)
|
||
|
||
**参数** (20 期 ±2σ):
|
||
- `upper_band`: MA20 + 2σ
|
||
- `lower_band`: MA20 - 2σ
|
||
- `sell_at_upper`: True
|
||
- `buy_at_lower`: True
|
||
- `stop_if_break`: True (破带止损)
|
||
|
||
### 4. NO_TRADE (暂停)
|
||
|
||
**适用**: 混乱或过渡状态
|
||
|
||
**参数**: `reason: 市场状态不清晰, 等待趋势或明确震荡信号`
|
||
|
||
## 三、决策流程图
|
||
|
||
```
|
||
┌─────────────────────┐
|
||
│ 输入 20 根 5min K │
|
||
│ + 开盘缺口 │
|
||
└──────────┬──────────┘
|
||
↓
|
||
┌─────────────────────┐
|
||
│ 计算 R² │
|
||
└──────────┬──────────┘
|
||
↓
|
||
┌─────────────────┼─────────────────┐
|
||
↓ ↓ ↓
|
||
R² > 0.75 0.30-0.75 R² < 0.30
|
||
强趋势 过渡 震荡
|
||
↓ ↓ ↓
|
||
TREND UNKNOWN 计算 ADF
|
||
FOLLOWING NO_TRADE ↓
|
||
┌─────┴─────┐
|
||
↓ ↓
|
||
ADF<0.05 ADF≥0.05
|
||
平稳 不平稳
|
||
↓ ↓
|
||
计算波动率 CHAOTIC
|
||
↓ NO_TRADE
|
||
┌───┴───┐
|
||
↓ ↓
|
||
vol>30% vol≤30%
|
||
↓ ↓
|
||
BOLLINGER GRID
|
||
REVERSION TRADING
|
||
```
|
||
|
||
## 四、与本 skill 的对应关系
|
||
|
||
| 步骤 | 函数 | 文件 |
|
||
|---|---|---|
|
||
| 输入校验 | `diagnose()` | intraday_regime.py |
|
||
| 计算 R² | `_calculate_r_squared()` | intraday_regime.py |
|
||
| 计算 vol | `_calculate_historical_volatility()` | intraday_regime.py |
|
||
| 计算 ADF | `_adf_test()` | intraday_regime.py |
|
||
| 趋势判断 | `_classify_regime()` | intraday_regime.py |
|
||
| 策略匹配 | `_match_strategy()` | intraday_regime.py |
|
||
| 拉 K 线 + 整合 | `regime_scan.py` | regime_scan.py | |