QMC与QM结合AO背离多层级时间框架量化交易策略

AO QMC QM ATR RR SL TP 背离 多层级时间框架
创建日期: 2025-07-15 09:38:19 最后修改: 2025-07-15 09:38:19
复制: 0 点击次数: 55
avatar of ianzeng123 ianzeng123
2
关注
82
关注者

QMC与QM结合AO背离多层级时间框架量化交易策略 QMC与QM结合AO背离多层级时间框架量化交易策略

概述

QMC与QM结合AO背离多层级时间框架量化交易策略是一个基于技术分析的量化交易系统,该策略结合了量化市场类别(QMC)、量化移动(QM)以及神奇震荡指标(Awesome Oscillator, AO)的背离信号来识别潜在的交易机会。该策略特别设计用于H4和H1时间框架,并应用了1:3的风险回报比率,这意味着潜在收益是潜在损失的三倍。该策略的核心思路是通过识别价格高点/低点与动量指标之间的背离,结合突破性价格形态来捕捉市场趋势反转点。

策略原理

该策略的运作原理基于三个主要组成部分:

  1. 神奇震荡指标(AO):AO是一个动量指标,通过计算价格中点(HL2)的5周期和34周期简单移动平均线之间的差值得出。策略利用AO来识别市场动量的变化。

  2. 量化移动(QM)水平检测:策略使用5根K线的枢轴高点和低点来识别关键价格水平。当出现以下情况时会生成QM信号:

    • 牛市QM信号:当形成枢轴低点且当前收盘价高于前一根K线的最高价
    • 熊市QM信号:当形成枢轴高点且当前收盘价低于前一根K线的最低价
  3. AO背离检测

    • 看涨背离:当价格创新低但AO指标走高时
    • 看跌背离:当价格创新高但AO指标走低时

策略的入场条件是QM信号与AO背离的结合: - 多头入场:牛市QM信号与看涨AO背离同时出现 - 空头入场:熊市QM信号与看跌AO背离同时出现

止损设置基于QM水平并加上0.2倍ATR(平均真实波幅)的缓冲,而止盈目标则设为入场价格与止损水平差距的3倍,从而实现1:3的风险回报比。

策略优势

  1. 多重确认机制:该策略结合了价格形态(QMC和QM)与动量指标(AO),提供了更可靠的交易信号。多重确认减少了假信号的风险,提高了交易成功率。

  2. 背离识别能力:策略能够识别价格与动量指标之间的背离,这通常是市场趋势即将反转的强烈信号。这种提前识别反转点的能力可以让交易者抢先于大多数市场参与者建立仓位。

  3. 风险管理优化:1:3的风险回报比率意味着即使胜率仅为30%,该策略从长期来看仍可能盈利。这种保守的风险管理方法有助于保护账户资金。

  4. 基于市场结构的止损:止损位设置在关键QM水平附近,这些水平代表了市场结构中的重要支撑或阻力区域,而不是随机选择的价格点,这提高了止损位的有效性。

  5. 自动化交易能力:该策略完全编程化,可以实现自动执行交易,减少了情绪干扰,确保了交易纪律的严格执行。

策略风险

  1. 假背离信号:在震荡市场中,AO背离可能会产生假信号,导致不必要的交易损失。市场噪音可能导致指标出现短期背离,但价格可能并不会如预期那样反转。

  2. 市场剧烈波动风险:在重大新闻发布或黑天鹅事件期间,价格可能迅速突破止损位,导致实际损失超过预期。

  3. 参数敏感性:策略使用固定的参数(如5和34周期的移动平均线,5根K线的枢轴点,0.2ATR的缓冲),这些参数在不同市场环境或不同交易品种中可能需要调整。

  4. 延迟信号风险:由于需要形成枢轴点和确认背离,交易信号可能会出现一定延迟,错过最佳入场时机。

  5. 资金管理问题:策略使用固定的10%账户资金比例进行交易,这可能不适合所有市场条件或账户规模。

解决方法: - 结合更多的过滤条件,如趋势过滤器或波动率过滤器,减少假信号 - 实施动态仓位管理,根据市场波动性调整资金比例 - 在重大经济数据发布前暂停策略运行 - 进行广泛的回测,找到不同市场环境的最佳参数设置

策略优化方向

  1. 添加趋势过滤器:引入更长周期(如日线或周线)的趋势指标,只在大趋势方向上交易。这可以提高胜率,因为顺势交易通常比逆势交易更成功。可以考虑添加如下代码:
longTermTrend = ta.sma(close, 200) > ta.sma(close, 200)[20]
longCond := longCond and longTermTrend
shortCond := shortCond and not longTermTrend
  1. 动态止损和风险比率:根据市场波动性动态调整止损距离和风险回报比。在波动性较高的市场,可能需要更宽的止损和更小的风险回报比。可以使用ATR的倍数来动态设置:
volMultiplier = ta.atr(14) / ta.atr(14)[20]
slDistance = atr * 0.2 * math.min(2, math.max(0.5, volMultiplier))
  1. 增加交易时段过滤:某些时段(如市场开盘或重要数据发布前后)波动性较大,可能不适合该策略。添加时段过滤可以避免在这些高风险时段交易。

  2. 优化入场时机:当前策略在信号出现的第一根K线入场,可以考虑等待回调或确认K线再入场,以获得更好的入场价格。

  3. 多层级止盈策略:不是简单地设置单一止盈目标,可以分阶段止盈,例如在达到1:1风险回报时移动止损至入场价,在达到1:2时平掉部分仓位,剩余仓位追求更高收益。

这些优化方向的目的是提高策略的稳定性和盈利能力,减少大幅回撤的可能性,同时更好地适应不同的市场环境。

总结

QMC与QM结合AO背离多层级时间框架量化交易策略是一个融合了价格结构分析和动量指标的高级交易系统。通过寻找QM突破形态与AO背离的共振点,该策略旨在捕捉潜在的趋势反转机会。1:3的风险回报设置体现了该策略的保守风险管理理念,即使在胜率较低的情况下也能保持长期盈利能力。

该策略的核心优势在于其多重确认机制和基于市场结构的止损设置,但也面临假信号和参数敏感性等风险。通过添加趋势过滤器、动态调整风险参数以及优化入场时机等方式,该策略有很大的改进空间。

对于量化交易者而言,这个策略提供了一个坚实的框架,可以根据个人交易风格和风险偏好进行进一步定制和优化。无论是作为独立交易系统使用,还是作为更大交易策略组合的一部分,该策略都展示了技术分析在量化交易中的有效应用。

策略源码
/*backtest
start: 2024-07-15 00:00:00
end: 2025-07-12 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT","balance":200000}]
*/

//@version=5
strategy("QMC + QM + AO Divergence Strategy | 1:3 RR | H4-H1", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === AO (Awesome Oscillator) ===
ao = ta.sma(hl2, 5) - ta.sma(hl2, 34)
plot(ao, title="AO", color=ao >= 0 ? color.green : color.red, style=plot.style_columns)

// === QMC & QM Level Detection (Simplified) ===
pivotHigh = ta.pivothigh(high, 5, 5)
pivotLow  = ta.pivotlow(low, 5, 5)

plotshape(pivotHigh, location=location.abovebar, style=shape.triangledown, color=color.red)
plotshape(pivotLow, location=location.belowbar, style=shape.triangleup, color=color.green)

var float qmLevel = na
var float qmHighLevel = na
var float qmLowLevel = na

qmBull = pivotLow and close > high[1]
qmBear = pivotHigh and close < low[1]

if qmBull
    qmLevel := low[5]
    qmLowLevel := low[5]

if qmBear
    qmLevel := high[5]
    qmHighLevel := high[5]

// === AO Divergence Detection ===
bullDiv = low < low[1] and ao > ao[1]
bearDiv = high > high[1] and ao < ao[1]

// === Entry Conditions ===
longCond = qmBull and bullDiv
shortCond = qmBear and bearDiv

// === TP/SL Settings (RR = 1:3, SL QM baş seviyesine göre) ===
atr = ta.atr(14)

longSL  = qmLowLevel - atr * 0.2
longTP  = close + 3 * (close - longSL)

shortSL = qmHighLevel + atr * 0.2
shortTP = close - 3 * (shortSL - close)

// === Execute Trades ===
if longCond
    strategy.entry("Long", strategy.long)
    strategy.exit("TP/SL Long", from_entry="Long", limit=longTP, stop=longSL)
    alert("📈 QMC + QM Long Signal (AO Divergence)", alert.freq_once_per_bar)

if shortCond
    strategy.entry("Short", strategy.short)
    strategy.exit("TP/SL Short", from_entry="Short", limit=shortTP, stop=shortSL)
    alert("📉 QMC + QM Short Signal (AO Divergence)", alert.freq_once_per_bar)
相关推荐