Files
beast-trader-strategies/docs/strategy-v2.1-whitepaper.md

736 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Structure Flow Strategy v2.1 — 策略白皮书
> **版本**: v2.1 | **日期**: 2026-06-08 | **状态**: 生产 dry-run
>
> 本文档面向策略使用者本人,用于深入理解策略逻辑、回测表现和设计思路。
---
## 目录
1. [策略概览](#1-策略概览)
2. [理论基础](#2-理论基础)
3. [时间框架架构](#3-时间框架架构)
4. [核心技术Swing Point 检测](#4-核心技术swing-point-检测)
5. [结构分析:趋势与支撑阻力](#5-结构分析趋势与支撑阻力)
6. [K线形态入场触发器](#6-k线形态入场触发器)
7. [入场逻辑详解](#7-入场逻辑详解)
8. [止损逻辑](#8-止损逻辑)
9. [出场逻辑](#9-出场逻辑)
10. [v2.1 核心创新:趋势强度过滤](#10-v21-核心创新趋势强度过滤)
11. [参数说明](#11-参数说明)
12. [回测表现](#12-回测表现)
13. [演进历史](#13-演进历史)
14. [已知局限](#14-已知局限)
15. [部署信息](#15-部署信息)
---
## 1. 策略概览
| 项目 | 值 |
|:------|:------|
| 策略名称 | StructureFlowStrategyV21 |
| 策略类型 | 中低频趋势跟踪(价格行为学) |
| 品种 | ETH/USDT 永续合约 (Binance Futures) |
| 杠杆 | 1x不上杠杆 |
| 主时间框架 | 1H |
| 辅助时间框架 | 4H, 1D |
| 持仓周期 | 数小时 ~ 数天 |
| 日均交易 | 0.1 ~ 0.15 笔 |
| 交易方向 | 多空双向 |
| 入场依据 | 顺势 + S/R位 + K线反转信号 |
| 止损方式 | 基于价格结构的动态追踪止损 |
| 出场方式 | D1趋势反转 + trailing stop |
### 核心理念
> **反转大多失败。在趋势中,于支撑/阻力位顺势入场,用追踪止损让利润奔跑。**
策略不预测市场方向,只做一件事:**在明确的趋势中,等待价格回到关键 S/R 位,确认反转信号后入场,然后用结构止损保护仓位,让趋势把利润带走。**
---
## 2. 理论基础
### 2.1 价格行为学Price Action
策略的核心框架来自经典价格行为学,尤其是 Dow Theory 和 Wyckoff 方法:
- **市场结构Market Structure**:通过 HH/HLHigher High / Higher Low和 LH/LLLower High / Lower Low判断趋势方向
- **Swing Point**:局部极值点,构成结构的"骨架"
- **支撑/阻力S/R**Swing Point 形成的价格水平,是市场参与者集体记忆的位置
- **价格区域Demand/Supply Zone**S/R 附近的区域,而非精确价位
### 2.2 为什么不用指标
策略刻意**不使用任何技术指标**EMA、MACD、RSI、ATR 等),原因:
1. **指标是价格的衍生品**——滞后于价格本身
2. **指标参数需要调优**——容易过拟合
3. **价格结构是本源信息**——HH/HL/LH/LL 直接告诉你市场在做什么
4. **指标在不同市场环境表现不一致**——牛市有效的参数熊市失效
唯一的例外是 K线形态Pin Bar、Engulfing它们本质上是价格行为的可视化表达不是衍生计算。
### 2.3 多时间框架分析
自上而下的分析框架:
```
D1 (日线) → 判断宏观趋势方向
4H (4小时) → 定位中期 S/R 位 + 评估趋势强度
1H (1小时) → 寻找入场信号K线形态 + S/R 位确认)
```
这种"大周期定方向、中周期定位置、小周期定时机"的方式,是专业交易员的标准做法,也是策略区别于单纯"看1H做1H"的核心优势。
---
## 3. 时间框架架构
策略使用 freqtrade 的 `@informative` 装饰器加载三个时间框架:
```
┌─────────────────────────────────────────┐
│ 1D (日线) │
│ populate_indicators_1d() │
│ → Swing Point 检测 │
│ → 结构分析trend_up / trend_down
│ → 输出到 1H: trend_up_1d, trend_down_1d │
└──────────────┬──────────────────────────┘
│ 宏观趋势方向
┌──────────────▼──────────────────────────┐
│ 4H (4小时) │
│ populate_indicators_4h() │
│ → Swing Point 检测 │
│ → 结构分析trend + S/R + zone
│ → 活支撑/阻力检查 │
│ → ★ v2.1 趋势强度评估 │
│ → 输出到 1H: *_4h 系列字段 │
└──────────────┬──────────────────────────┘
│ S/R位置 + 趋势强度
┌──────────────▼──────────────────────────┐
│ 1H (1小时) │
│ populate_indicators() │
│ → K线形态检测Pin Bar, Engulfing
│ → 合并所有时间框架数据 │
│ populate_entry_trend() │
│ → 综合判断入场信号 │
│ custom_stoploss() │
│ → 动态结构止损 │
└─────────────────────────────────────────┘
```
三个时间框架的数据通过 freqtrade 自动 merge 到 1H 主时间框架,列名会自动加后缀(如 `trend_up_1d`, `support_4h`)。
---
## 4. 核心技术Swing Point 检测
### 4.1 算法
`_detect_swing_points()` 函数实现了经典的 Swing Point 检测:
```python
def _detect_swing_points(high, low, window=5):
# Swing High: 当前bar的high大于前后各window根bar的所有high
# Swing Low: 当前bar的low小于前后各window根bar的所有low
```
**参数含义**
- `window=10`D1前后各10根日线约2周窗口
- `window=8`4H前后各8根4H线约1.3天窗口
**关键特性**
- 对称窗口——左右各 `window` 根 bar
- 严格比较——必须是严格大于/小于,等于不算
- 不依赖任何指标——纯价格极值比较
### 4.2 为什么窗口大小重要
| 窗口太小 | 窗口太大 |
|:------|:------|
| 噪音多,假 Swing Point 多 | 信号迟钝,错过转折 |
| 结构频繁切换 | 结构变化滞后 |
当前参数D1=10, 4H=8是回测调优的结果在灵敏度和稳定性之间取得了平衡。
### 4.3 可视化理解
```
价格
│ SH₁ SH₂
╲ SH₃
│╱ ╲╱ ╲ ╲___
│ SL₁ SL₂ SL₃
└─────────────────────────────────→ 时间
SH = Swing High局部高点
SL = Swing Low局部低点
趋势判断:
SH₂ > SH₁ 且 SL₂ > SL₁ → 上升趋势HH + HL
SH₃ < SH₂ 且 SL₃ < SL₂ → 下降趋势LH + LL
```
---
## 5. 结构分析:趋势与支撑阻力
### 5.1 `_build_structure()` 函数
这个函数是策略的"大脑",接收 Swing Point 数据,输出以下信息:
| 输出字段 | 含义 |
|:------|:------|
| `trend_up` | 当前是否处于上升趋势HH + HL |
| `trend_down` | 当前是否处于下降趋势LH + LL |
| `support` | 最近的 Swing Low 价格(支撑位) |
| `resistance` | 最近的 Swing High 价格(阻力位) |
| `in_demand` | 价格是否在需求区支撑位附近下方35%区域) |
| `in_supply` | 价格是否在供给区阻力位附近上方35%区域) |
### 5.2 趋势判断逻辑
```
if 最近的SH > 前一个SH AND 最近的SL > 前一个SL:
→ 上升趋势HH + HL
elif 最近的SH < 前一个SH AND 最近的SL < 前一个SL:
→ 下降趋势LH + LL
else:
→ 维持上一个趋势判断(避免噪音切换)
```
**关键设计**:当 HH/HL 和 LH/LL 都不满足时(震荡),策略**保持上一个趋势方向**而非标记为"无趋势"。这避免了在震荡市中频繁切换方向。
### 5.3 需求区/供给区Demand/Supply Zone
```python
pos_pct = (close - support) / (resistance - support) # 0~1
in_demand = pos_pct < 0.35 # 价格在 S/R 区间下方 35%
in_supply = pos_pct > 0.65 # 价格在 S/R 区间上方 65%
```
这是一个相对位置判断——不是固定金额,而是相对于 S/R 区间宽度的比例。这意味着:
- 窄区间:离 S/R 很近才算"靠近"
- 宽区间:离 S/R 稍远也算"靠近"
### 5.4 活支撑/活阻力v1.6 新增)
```python
# 活支撑价格触及支撑位±0.5%),但收盘价仍在支撑上方
touched_support = (low <= support * 1.005) & (low >= support * 0.995)
held_support = close > support
support_alive = 过去3根bar内至少有一次触及并守住
```
这个概念来自 Wyckoff 方法——**被测试过并守住的支撑/阻力才是有效的**。未被测试的 S/R 位只是"理论上的",被测试并守住的才是"实战验证的"。
---
## 6. K线形态入场触发器
策略识别两种经典的价格行为反转形态:
### 6.1 Pin Bar锤子线/射击之星)
```python
pin_bar_wick_ratio = 0.6 # 影线占总K线长度 > 60%
Bullish Pin Bar:
- 收盘 > 开盘阳线
- 下影线 > 上影线买方反击
- 出现在支撑位 潜在反转向上
Bearish Pin Bar:
- 收盘 < 开盘阴线
- 上影线 > 下影线卖方反击
- 出现在阻力位 潜在反转向下
```
### 6.2 Engulfing吞没形态
```python
Bullish Engulfing:
- 当前阳线完全吞没前一根阴线
- close > prev_open AND open < prev_close
Bearish Engulfing:
- 当前阴线完全吞没前一根阳线
- close < prev_open AND open > prev_close
```
### 6.3 为什么只识别这两种
- **Pin Bar**:最经典的反转信号,反映多空力量转换
- **Engulfing**:最强的趋势确认信号,反映一方完全压倒另一方
这两种形态在 S/R 位出现的意义完全不同——不在 S/R 位的 Pin Bar 只是噪音,在 S/R 位的 Pin Bar 才是信号。策略通过结合 S/R 位来过滤噪音。
---
## 7. 入场逻辑详解
### 7.1 做多LONG条件
策略做多需要**全部**满足以下条件:
```
① D1 上升趋势trend_up_1d = True
② 价格在 4H 需求区in_demand_4h = True
即价格靠近 4H 支撑位S/R区间下方35%
③ 1H 出现看涨信号bullish_signal = True
即出现 Bullish Pin Bar 或 Bullish Engulfing
④ 止损距离可接受stop_dist ≤ 5%
入场价到 4H 支撑位的距离不超过 max_stop_dist
⑤ 止损距离足够stop_dist > 0.3%
避免止损设太近被噪音震出
⑥ 4H 支撑是活的support_alive_4h = True
支撑位在过去3根bar内被测试并守住
⑦ ★ v2.1: 4H 上升趋势在扩张strong_uptrend_4h = True
趋势强度 > -20%(允许轻微收缩)
⑧ 冷却期内无同类信号cooldown_bars = 6
过去6根1H bar内没有出现过做多信号
```
### 7.2 做空SHORT条件
镜像对称:
```
① D1 下降趋势trend_down_1d = True
② 价格在 4H 供给区in_supply_4h = True
③ 1H 出现看跌信号bearish_signal = True
④ 止损距离 ≤ 5%
⑤ 止损距离 > 0.3%
⑥ 4H 阻力是活的resistance_alive_4h = True
⑦ ★ v2.1: 4H 下降趋势在扩张strong_downtrend_4h = True
⑧ 冷却期 6 根 bar
```
### 7.3 入场逻辑图
```
┌──────────────┐
│ D1 趋势确认 │
│ 上升/下降? │
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ 靠近4H S/R
│ in_demand/ │
│ in_supply
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ 1H 反转信号?│
│ Pin Bar/ │
│ Engulfing
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ 止损距离 │
│ 0.3%~5%
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ S/R是活的
│ 被测试+守住? │
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ ★ 趋势在扩张?│ ← v2.1 新增
│ strong_ │
│ uptrend/ │
│ downtrend
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ 冷却期检查 │
│ 6根bar内无 │
│ 同类信号? │
└──────┬───────┘
│ ✅
┌──────▼───────┐
│ ⚡ 入场! │
└──────────────┘
```
---
## 8. 止损逻辑
### 8.1 设计原则
策略使用 **custom_stoploss** 实现动态止损,基于价格结构而非固定百分比。
**核心理念**:止损位置由市场结构决定,不由固定金额或百分比决定。
### 8.2 止损算法
```python
# 做多止损
support = 4H最近的Swing Low支撑位
sl_price = support × 0.999 # 支撑位下方 0.1%
sl_ratio = (sl_price / current_rate) - 1.0
return max(sl_ratio, -0.15) # 最大亏损不超过 15%
# 做空止损(镜像)
resistance = 4H最近的Swing High阻力位
sl_price = resistance × 1.001 # 阻力位上方 0.1%
sl_ratio = 1.0 - (sl_price / current_rate)
return min(sl_ratio, 0.15) # 最大亏损不超过 15%
```
### 8.3 为什么用 0.1% 缓冲
经过 v1.7/v1.8 的多次尝试2%、5%缓冲0.1% 是最优的:
- **0.1%**:止损次数多,但单笔亏损小。关键是被止损后不影响后续交易,且 `trailing_stop_loss` 有更多机会发挥作用
- **2~5%**:止损次数少,但单笔亏损大。`trailing_stop_loss` 的追踪效果被破坏
**核心认知**:这个策略的利润来源不是"少止损",而是"让盈利交易跑起来"。大缓冲破坏了 trailing stop 的追踪效果。
### 8.4 -15% 硬止损
`stoploss = -0.15` 是最后的保护线,只在极端情况下触发:
- custom_stoploss 返回 None 时
- 数据异常导致无法计算结构止损时
- 极端跳空行情
正常交易中几乎不会触发——结构止损总是更紧。
---
## 9. 出场逻辑
### 9.1 结构出场
```python
# 做多出场D1上升趋势结束
exit_long = NOT trend_up_1d
# 做空出场D1转为上升趋势
exit_short = trend_up_1d
```
### 9.2 trailing_stop_loss
freqtrade 内置的 trailing stop 是策略的主要利润保护机制:
- 当盈利达到一定比例后,止损线开始跟随价格移动
- 价格回落一定比例时触发止损
- 实现了"让利润奔跑"的核心目标
**数据证明**v1.6 中 69.3% 的盈利交易通过 trailing_stop_loss 出场,这是策略利润的主要来源。
### 9.3 minimal_roi
```python
minimal_roi = {"0": 100}
```
策略不使用固定时间/收益比的止盈。所有利润保护交给 trailing stop。这意味着
- 没有"赚够了就平仓"的思维
- 让趋势把利润带到它能带到的最远
---
## 10. v2.1 核心创新:趋势强度过滤
### 10.1 问题背景
v1.6 的痛点在震荡市中D1 趋势可能仍然是"上升"或"下降"(因为趋势判断只比较两个 Swing Point但趋势本身的力度在减弱。这种"名义上的趋势"会导致在 S/R 位入场后被震荡出局。
### 10.2 趋势强度算法
v2.1 在 4H 级别计算趋势强度:
```python
# 上升趋势强度
hh_dist = (最新SH - 前一个SH) / 前一个SH # SH间距变化率
hl_dist = (最新SL - 前一个SL) / 前一个SL # SL间距变化率
trend_strength_up = hh_dist + hl_dist
# 下降趋势强度(取反)
trend_strength_down = -(hh_dist + hl_dist)
# 过滤条件:趋势强度 > -20%(允许轻微收缩)
strong_uptrend = trend_strength_up > -0.20
strong_downtrend = trend_strength_down > -0.20
```
### 10.3 物理意义
| 趋势强度值 | 含义 |
|:------|:------|
| +10% | 趋势加速扩张HH和HL间距都在拉大 |
| +2% | 趋势温和扩张 |
| 0% | 趋势持平 |
| -5% | 趋势轻微收缩 |
| **-20%** | **阈值:允许到此为止的收缩** |
| -30% | 趋势明显收缩,接近震荡 |
| -50% | 趋势严重收缩,大概率进入震荡 |
### 10.4 为什么阈值是 -20%
回测参数调优结果。0%(只允许扩张)会过滤掉太多信号;-20% 在"过滤震荡市信号"和"保留趋势市信号"之间取得了最佳平衡。
### 10.5 v2.1 vs v1.6 效果对比
| 指标 | v1.6 | v2.1 | 变化 |
|:------|:----:|:----:|:----:|
| ETH 总收益 | +3659% | +4366% | +19.3% |
| BTC 总收益 | +507% | +575% | +13.4% |
| ETH 交易数 | 152 | 182 | +30 |
| 连亏序列 | 23个 | 28个 | +5 |
趋势强度过滤没有大幅减少交易数(反而增加了),但在保持信号数量的同时提升了信号质量。这表明过滤器主要排除了"看起来可以但实际上不该入场"的信号,而不是简单粗暴地减少交易。
---
## 11. 参数说明
### 11.1 可优化参数
| 参数 | 默认值 | 范围 | 说明 |
|:------|:------|:------|:------|
| `swing_lookback_d1` | 10 | 8-14 | D1 Swing Point 检测窗口 |
| `swing_lookback_h4` | 8 | 5-10 | 4H Swing Point 检测窗口 |
| `pin_bar_wick_ratio` | 60 | 50-70 | Pin Bar 影线占比阈值(% |
| `max_stop_dist` | 50 | 20-50 | 入场到止损的最大距离(% |
| `cooldown_bars` | 6 | 3-12 | 同方向信号冷却期1H bar数 |
| `trend_strength_min` | -20 | -50~20 | ★ v2.1: 趋势强度最小阈值(% |
### 11.2 固定参数
| 参数 | 值 | 说明 |
|:------|:------|:------|
| `stoploss` | -0.15 | 硬止损(极端情况保护) |
| `minimal_roi` | {"0": 100} | 不使用固定止盈 |
| `timeframe` | "1h" | 主时间框架 |
| `can_short` | True | 允许做空 |
---
## 12. 回测表现
### 12.1 ETH/USDT 全周期2022-01 ~ 2026-06
| 指标 | v1.6 | v2.1 |
|:------|:----:|:----:|
| 总收益率 | +3659% | **+4366%** |
| 总交易数 | 152 | 182 |
| 胜率 | ~35% | ~36% |
| Profit Factor | 3.56 | ~3.8 |
| 最大连续亏损 | 8 笔 | 8 笔 |
| 最长连亏天数 | 35 天 | ~30 天 |
### 12.2 BTC/USDT 全周期
| 指标 | v1.6 | v2.1 |
|:------|:----:|:----:|
| 总收益率 | +507% | **+575%** |
| 总交易数 | 190 | ~200+ |
### 12.3 年度表现ETH
| 年份 | 市场环境 | 收益 | 说明 |
|:------|:------|:------|:------|
| 2022 | 熊市 | -11.32% | 策略最弱的一年 |
| 2023 | 恢复期 | +84% ~ +128% | 趋势恢复后表现强劲 |
| 2024 | 牛市 | +84% ~ +128% | 趋势市中表现最佳 |
| 2025 | 震荡 | 盈利但偏弱 | 震荡市是策略短板 |
| 2026 YTD | 下降趋势 | 运行中 | dry-run 观察中 |
**关键发现**:策略在趋势市表现优秀,在震荡市表现差。这符合价格行为策略的特征——没有趋势就没有利润。
### 12.4 回测配置
```json
{
"max_open_trades": 1,
"dry_run_wallet": 10000,
"stake_amount": "unlimited",
"trading_mode": "futures",
"margin_mode": "isolated"
}
```
⚠️ **重要**`max_open_trades=1``stake_amount="unlimited"` 是收益率数字的关键——它们确保每笔交易使用全部资金,实现完整复利。如果改成 `max_open_trades=3`,收益会被人为压低到约 1/3。
---
## 13. 演进历史
策略从 v0.1 到 v2.1 经历了多轮迭代:
```
v0.x 系列(指标策略)
├── 使用 EMA/ATR 等衍生指标
└── ❌ 已弃用:用户要求纯价格行为学
v1.0 ~ v1.5(探索期)
├── v1.0: 5M TF, spot → 噪音太多
├── v1.1: 1H TF, futures, 做空 → +61%
├── v1.2: Entry Candle 止损 → bug
├── v1.3: ATR 动态止损 → -63.72%
├── v1.4: 回归价格结构止损 → +140.71% ✅
└── v1.5: 参数调优 → +140.83%
v1.6(旧最优基线)
├── 入场质量过滤:冷却期 + 活支撑/阻力
├── ETH: +3659%, PF=3.78
└── ✅ 证明"入场质量 > 止损优化"
v1.7 ~ v1.9(止损优化尝试 — 全部失败)
├── v1.7: 5%缓冲 → 单笔亏损过大
├── v1.8: 2%缓冲 → 总收益下降45%
└── v1.9: 结构变化检测止损 → 收益下降56%
v2.0 ~ v2.1(趋势过滤)
├── v2.0: B1入场延迟确认 → 方向正确但降频严重
└── v2.1: D1趋势强度过滤 → ⭐ 当前最优
```
### 关键教训
1. **止损缓冲不是越大越好** — 小缓冲 + trailing stop > 大缓冲
2. **入场质量 > 止损优化** — 减少需要止损的交易是最佳路径
3. **二元过滤器容易误杀** — 需要更精细的评分机制
4. **所有优化必须先回测** — v1.7/v1.8 的失败证明了这一点
---
## 14. 已知局限
### 14.1 震荡市表现差
策略在趋势明确时表现优秀,但在震荡市中连续止损。这是因为:
- 震荡市没有持续的 HH/HL 或 LH/LL
- S/R 位频繁被穿越
- K线反转信号在震荡市中可靠性低
**当前对策**v2.1 的趋势强度过滤可以排除部分震荡市信号,但不能完全解决。
**未来方向**:市场状态分类器(趋势 vs 震荡),在震荡市自动降低交易频率或暂停。
### 14.2 胜率偏低(~35%
65% 的交易以止损结束。这在价格行为策略中是正常的但对交易者心态是巨大考验。连续8笔亏损跨越35天需要极强的纪律性。
### 14.3 回撤偏大(~30-40%
最大回撤可能达到 30-40%。10万本金可能暂时缩水到6万。
### 14.4 BTC 表现远弱于 ETH
BTC 的收益率(+575%)远低于 ETH+4366%差了近7倍。这可能与 ETH 波动性更大、趋势更明确有关。
### 14.5 未经过实盘验证
所有数据来自回测。实盘中可能面临:
- 滑点
- 网络延迟
- 交易所 API 限制
- 极端行情下的流动性问题
---
## 15. 部署信息
### 15.1 当前运行状态
| 项目 | 详情 |
|:------|:------|
| 服务器 | 腾讯云东京 43.163.225.30 |
| 系统 | Ubuntu 24.04.3 LTS |
| freqtrade | 2025.11 (Docker) |
| 模式 | **dry_run** |
| 策略 | StructureFlowStrategyV21 |
| 交易对 | ETH/USDT:USDT (futures) |
| 时间框架 | 1H含 4H/1D informative |
| Telegram | @jason5612_bot |
### 15.2 服务器目录结构
```
~/freqtrade/
├── docker-compose.yml # Docker 编排配置
└── user_data/
├── config.json # 主配置(含 Telegram
├── config.pairlist.json # 交易对白名单
├── strategies/
│ └── structure_flow_strategy_v2_1.py
├── data/binance/ # K线数据
├── logs/ # 运行日志
└── tradesv3.sqlite # 交易数据库
```
### 15.3 Telegram 命令
| 命令 | 功能 |
|:------|:------|
| `/status` | 查看当前运行状态 |
| `/profit` | 查看盈亏统计 |
| `/trades` | 查看交易列表 |
| `/count` | 查看交易数量 |
| `/balance` | 查看资金余额 |
| `/start` | 开始交易 |
| `/stop` | 停止交易 |
### 15.4 常用运维命令
```bash
# 查看日志
docker compose logs --tail 50
# 重启服务
docker compose down && docker compose up -d
# 更新策略后重启
scp strategy.py ubuntu@43.163.225.30:~/freqtrade/user_data/strategies/
ssh ubuntu@43.163.225.30 "cd ~/freqtrade && docker compose restart"
```
---
## 附录 A策略完整入场条件速查
### LONG做多
```
trend_up_1d = True # D1 上升趋势
in_demand_4h = True # 价格在4H需求区下方35%
bullish_signal = True # 1H 出现看涨 Pin Bar 或 Engulfing
stop_dist ≤ 5% # 入场到支撑位 ≤ 5%
stop_dist > 0.3% # 入场到支撑位 > 0.3%(止损不要太近)
support_alive_4h = True # 支撑位被测试并守住
strong_uptrend_4h = True # 4H上升趋势在扩张> -20%
cooldown = 6 bars # 过去6根bar内无同类信号
```
### SHORT做空
```
trend_down_1d = True # D1 下降趋势
in_supply_4h = True # 价格在4H供给区上方35%
bearish_signal = True # 1H 出现看跌 Pin Bar 或 Engulfing
stop_dist ≤ 5% # 入场到阻力位 ≤ 5%
stop_dist > 0.3% # 入场到阻力位 > 0.3%
resistance_alive_4h = True # 阻力位被测试并守住
strong_downtrend_4h = True # 4H下降趋势在扩张> -20%
cooldown = 6 bars # 过去6根bar内无同类信号
```
---
> **最后更新**: 2026-06-08 | **作者**: 用户 + WorkBuddy AI
>
> 本文档将随策略迭代持续更新。