返回博客列表

Strategy001 - 谐波背离策略使用指南

trade
Freqtrade量化交易背离策略技术分析

⚠️ 免责声明:本文内容仅供技术学习与研究参考,不构成任何投资建议。请读者独立思考,谨慎决策。

Strategy001 - 谐波背离策略使用指南

一套基于多指标背离识别的量化交易策略,通过捕捉价格与动量指标之间的分歧来发现潜在的反转机会。

目录


策略概述

策略定位

Strategy001 是一套趋势反转捕捉策略,其核心理念源于经典的技术分析理论——背离是趋势反转的先行信号。当价格走势与技术指标走势出现分歧时,往往预示着当前趋势即将结束,新的趋势即将开始。

适用场景

场景适用性说明
震荡行情⭐⭐⭐⭐⭐最佳适用场景,背离信号在震荡中最为可靠
趋势行情⭐⭐⭐需配合趋势过滤器使用,避免逆势交易
高波动市场⭐⭐⭐⭐通道突破条件可有效过滤假信号
低波动市场⭐⭐信号较少,需耐心等待

时间周期

策略默认使用 1小时周期 (1h),这个周期既能捕捉到足够的价格波动形成有效的背离信号,又能过滤掉短周期中的噪音干扰。


核心原理

什么是背离?

背离是指价格走势与技术指标走势出现不一致的现象。在技术分析中,背离被视为趋势可能反转的重要预警信号。

看涨背离(底背离)

价格:  低点1 → 低点2(更低)  ↘️
指标:  低点1 → 低点2(更高)  ↗️

含义:价格创出新低,但动量指标未能创出新低,说明下跌动能正在衰竭,可能即将反转上涨。

看跌背离(顶背离)

价格:  高点1 → 高点2(更高)  ↗️
指标:  高点1 → 高点2(更低)  ↘️

含义:价格创出新高,但动量指标未能创出新高,说明上涨动能正在衰竭,可能即将反转下跌。

枢轴点识别

策略使用滑动窗口算法来识别价格的枢轴点(极值点):

# 枢轴点识别逻辑
窗口大小 = 3  # 左右各需要 3 根 K 线确认

枢轴高点:中心 K 线的高点 > 左侧 3 根 K 线高点 且 > 右侧 3 根 K 线高点
枢轴低点:中心 K 线的低点 < 左侧 3 根 K 线低点 且 < 右侧 3 根 K 线低点

重要特性:枢轴点识别采用延迟确认机制,确保不会使用未来数据,避免回测中的"未来函数"问题。

多指标共振

策略同时监测 11 个技术指标 的背离情况,只有当多个指标同时出现背离时才会触发交易信号:

指标类型背离特点
RSI动量震荡经典背离指标,反应灵敏
Stochastic动量震荡对超买超卖区域背离特别有效
ROC变动率衡量价格变化速度
Ultimate Oscillator综合震荡结合多周期,减少假信号
Awesome Oscillator动量Bill Williams 经典指标
MACD趋势动量零轴附近背离最有效
CCI通道指标超过 ±100 时背离有效
CMF资金流量结合量价的背离分析
OBV成交量量价背离的典型指标
MFI资金流量结合价格和成交量的震荡
ADX趋势强度趋势转折时的背离信号

技术指标详解

1. 枢轴点计算

枢轴点是背离检测的基础,策略通过以下方式识别:

def compute_pivot_points(dataframe, window=3):
    """
    延迟确认版本的枢轴点计算
    
    原理:
    - 枢轴点需要左右各 window 根 K 线确认
    - 在 index 位置,只能确认 index - window 位置的枢轴点
    - 延迟了 window 根 K 线,但完全无未来函数
    """

示例(window=3):

  • 在 i=10 时,确认 i=7 位置的枢轴点(需要 i=4-6 和 i=8-10 的数据)
  • 这确保了信号的真实性和可交易性

2. 背离检测算法

def detect_divergences(dataframe, indicator_name, pivot_window=3):
    """
    核心背离检测逻辑
    
    关键点:
    1. 只遍历极值点,不遍历所有 K 线(性能优化)
    2. 在确认极值点的同一根 K 线完成背离检测
    3. 信号记录在 index + pivot_window 位置(延迟确认)
    4. 支持多指标同时背离的累加计数
    """

背离判定条件

# 看涨背离(底背离)
if (price_curr < price_prev and ind_curr > ind_prev) or \
   (price_curr > price_prev and ind_curr < ind_prev):
    return 看涨背离信号

# 看跌背离(顶背离)
if (price_curr < price_prev and ind_curr > ind_prev) or \
   (price_curr > price_prev and ind_curr < ind_prev):
    return 看跌背离信号

3. 通道指标

策略使用 Keltner 通道Bollinger 带 双重通道系统:

# Keltner 通道(基于 ATR)
中轨 = EMA(20)
上轨 = EMA(20) + ATR(10)
下轨 = EMA(20) - ATR(10)

# Bollinger 带(基于标准差)
中轨 = SMA(20)
上轨 = SMA(20) + 2 * StdDev(20)
下轨 = SMA(20) - 2 * StdDev(20)

通道作用

  • 过滤假背离信号
  • 确认价格处于极端位置
  • 提供额外的支撑/阻力参考

信号生成逻辑

入场信号

做多条件

入场做多 = (
    看涨背离计数 > 0  AND
    价格穿透通道(Keltner 或 Bollinger) AND
    成交量 > 0
)

信号解读

  1. 看涨背离:至少有一个指标出现底背离,预示下跌动能衰竭
  2. 通道穿透:价格触及或穿透通道下轨,确认价格处于极端位置
  3. 成交量确认:确保有足够的市场参与

做空条件

入场做空 = (
    看跌背离计数 > 0  AND
    价格穿透通道(Keltner 或 Bollinger) AND
    成交量 > 0
)

信号解读

  1. 看跌背离:至少有一个指标出现顶背离,预示上涨动能衰竭
  2. 通道穿透:价格触及或穿透通道上轨,确认价格处于极端位置
  3. 成交量确认:确保有足够的市场参与

滚动窗口确认

策略使用 3 根 K 线滚动窗口 来确认信号:

# 检查最近 3 根 K 线是否有任意一根满足所有条件
long_condition = long_condition_base.rolling(window=3, min_periods=1).max() > 0

目的:避免单根 K 线的噪音干扰,提高信号可靠性。

出场信号

# 平多条件:出现多个看跌背离
exit_long = 看跌背离计数 > 2

# 平空条件:出现多个看涨背离
exit_short = 看涨背离计数 > 2

出场逻辑:当出现多个反向背离信号时,认为趋势可能已经反转,及时止盈/止损出场。


风险管理

止损策略

策略采用动态止损系统,根据盈利情况自动调整止损位置:

┌─────────────────────────────────────────────────────────────┐
│                    动态止损阶梯                              │
├─────────────────────────────────────────────────────────────┤
│  亏损阶段 (<0%)     │  固定 5% 止损                         │
│  微利阶段 (0-3%)    │  保本止损(保护 70% 利润)             │
│  盈利阶段 (3-8%)    │  保护 70% 利润                        │
│  较高盈利 (8-15%)   │  保护 70% 利润                        │
│  高盈利 (>15%)      │  保护 80% 利润                        │
└─────────────────────────────────────────────────────────────┘

止损计算示例

# 假设入场价 100,当前价格 110,盈利 10%
# 保护 70% 利润 = 保护 7% 盈利
# 止损价位 = 100 + (110-100) * 0.7 = 107
# 实际止损 = (107 - 110) / 110 = -2.73%

ROI 止盈表

策略配置了分阶段止盈,让利润有足够空间奔跑:

时间(分钟)止盈目标说明
025%极强行情立即止盈
3018%30分钟内达到18%止盈
6012%1小时内达到12%止盈
1208%2小时内达到8%止盈
3005%5小时内达到5%止盈
6002%10小时后保底止盈

仓位管理

def custom_stake_amount(self, pair, current_time, current_rate, 
                        proposed_stake, min_stake, max_stake, ...):
    max_limit = 10000.0  # 最大仓位限制
    return min(proposed_stake, max_limit)

参数配置

可优化参数

策略支持通过 Hyperopt 进行参数优化:

参数范围默认值说明
trailing_stop_positive8%-15%10%追踪止损激活点
trailing_stop_positive_offset10%-20%15%追踪止损偏移量

固定参数

参数说明
timeframe1h时间周期
startup_candle_count100启动所需 K 线数
stoploss-5%硬止损
PIVOT_WINDOW3枢轴点窗口大小

Hyperopt 优化示例

# 优化止损参数
freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss \
    --strategy Strategy001 \
    --epochs 100 \
    --spaces sell

# 优化入场参数
freqtrade hyperopt --hyperopt-loss WinRatioLoss \
    --strategy Strategy001 \
    --epochs 100 \
    --spaces buy

使用建议

回测建议

# 下载历史数据
freqtrade download-data --exchange binance \
    --pairs BTC/USDT ETH/USDT \
    --timeframe 1h \
    --timerange 20230101-20240101

# 运行回测
freqtrade backtesting --strategy Strategy001 \
    --timeframe 1h \
    --timerange 20230101-20240101

实盘建议

  1. 资金管理

    • 单笔交易不超过总资金的 2%-5%
    • 同时持仓不超过 3-5 个交易对
    • 预留足够的保证金应对波动
  2. 交易对选择

    • 选择流动性好的主流币种
    • 避免选择波动过大的小币种
    • 建议从 BTC/USDT、ETH/USDT 开始
  3. 监控要点

    • 关注背离信号的强度(计数越高越可靠)
    • 注意通道穿透的有效性
    • 观察成交量是否配合

策略组合建议

Strategy001 可以与其他策略组合使用:

组合策略效果
趋势跟踪策略背离策略负责反转,趋势策略负责顺势
网格策略背离信号触发网格启动/停止
套利策略背离信号作为入场时机参考

常见问题

Q1: 为什么信号出现后没有立即成交?

A: 策略使用延迟确认机制,枢轴点需要等待 3 根 K 线确认。这是为了避免使用未来数据,确保信号的真实可交易性。

Q2: 背离信号准确率如何?

A: 背离信号在震荡行情中准确率较高,但在强趋势行情中可能出现连续背离。建议:

  • 配合趋势过滤器使用
  • 等待多个指标共振
  • 结合通道穿透确认

Q3: 如何调整信号敏感度?

A: 可以通过以下方式调整:

# 方法1:调整枢轴点窗口
check_window = 3  # 增大窗口减少信号,减小窗口增加信号

# 方法2:调整出场阈值
exit_long = 看跌背离计数 > 2  # 增大阈值减少出场,减小阈值增加出场

# 方法3:调整通道条件
# 当前:穿透任一通道即可
# 可改为:必须同时穿透两个通道

Q4: 策略支持哪些交易所?

A: 策略基于 Freqtrade 框架,支持所有主流交易所:

  • Binance(推荐)
  • Bybit
  • OKX
  • Kraken
  • Gate.io
  • Hyperliquid

Q5: 如何查看策略的可视化分析?

A: 使用 Freqtrade 的绘图功能:

# 生成图表
freqtrade plot-dataframe --strategy Strategy001 \
    --pairs BTC/USDT \
    --timerange 20240101-20240201

图表将显示:

  • K 线和通道指标
  • EMA 均线
  • 背离信号标记(绿色钻石=看涨,红色钻石=看跌)
  • 背离计数和指标名称

总结

Strategy001 是一套经过精心设计的谐波背离策略,其核心优势在于:

  1. 多指标共振:同时监测 11 个技术指标,提高信号可靠性
  2. 无未来函数:采用延迟确认机制,确保回测结果真实可信
  3. 动态风控:根据盈利情况自动调整止损,平衡风险与收益
  4. 可视化支持:提供完整的图表标记,便于分析和优化

策略适合有一定交易经验的用户,建议在实盘前进行充分的回测验证,并根据个人风险偏好调整参数。


免责声明:本策略仅供学习和研究使用,不构成任何投资建议。市场风险较高,请谨慎投资,风险自担。