流动性扫荡与趋势跟踪量化交易策略

SMA ATR 流动性扫荡 趋势跟踪 止损止盈 波动率 高低点突破 移动平均线
创建日期: 2025-08-19 11:48:02 最后修改: 2025-08-19 11:48:02
复制: 0 点击次数: 383
avatar of ianzeng123 ianzeng123
2
关注
319
关注者

流动性扫荡与趋势跟踪量化交易策略 流动性扫荡与趋势跟踪量化交易策略

概述

流动性扫荡与趋势跟踪量化交易策略是一种结合市场流动性扫荡和趋势跟踪的双重技术分析方法。该策略主要通过识别价格对近期高低点的突破(流动性扫荡)以及与移动平均线的相对位置(趋势确认)来确定入场信号。策略使用简单移动平均线(SMA)作为趋势判断工具,并采用平均真实范围(ATR)动态设置止损和止盈水平,以适应市场波动性的变化。

策略原理

该策略的核心原理基于两个关键市场行为:流动性扫荡和趋势方向。

  1. 流动性扫荡识别:

    • 策略使用swingLookback参数(默认为3)定义近期高低点的回溯周期
    • 当价格突破近期高点时,被识别为看涨流动性扫荡(bullSweep)
    • 当价格突破近期低点时,被识别为看跌流动性扫荡(bearSweep)
  2. 趋势方向确认:

    • 使用简单移动平均线(默认周期为20)作为趋势参考
    • 收盘价高于移动平均线被视为上升趋势
    • 收盘价低于移动平均线被视为下降趋势
  3. 入场信号:

    • 多头入场:价格突破近期高点(流动性扫荡)且处于上升趋势
    • 空头入场:价格突破近期低点(流动性扫荡)且处于下降趋势
  4. 风险管理:

    • 动态止损:基于ATR(默认周期为14)设置,默认为1.5倍ATR
    • 动态止盈:同样基于ATR设置,默认为3倍ATR,提供2:1的风险回报比
  5. 可视化组件:

    • 趋势移动平均线显示
    • 流动性扫荡标记
    • 趋势背景色
    • 买卖信号提醒

策略优势

  1. 市场结构与趋势结合:通过结合流动性扫荡(市场结构)和移动平均线(趋势),该策略能够捕捉更可靠的交易信号,避免假突破。

  2. 动态风险管理:使用ATR调整止损和止盈水平,使风险管理能够自适应市场波动性,在波动性高的市场中提供更宽松的止损,在波动性低的市场中提供更严格的止损。

  3. 简单而有效的参数:策略仅使用少量关键参数,如移动平均线周期、ATR周期、止损乘数、止盈乘数和回溯周期,使策略易于理解和优化。

  4. 视觉反馈丰富:策略提供直观的视觉指示,包括趋势背景色、流动性扫荡标记和移动平均线,帮助交易者快速评估市场状况。

  5. 内置提醒功能:策略集成了买卖信号提醒,方便交易者及时获取交易机会通知。

  6. 资金管理集成:策略使用账户权益百分比进行头寸管理,默认为10%,确保随着账户增长,头寸规模也相应调整。

策略风险

  1. 假突破风险:尽管结合了趋势确认,流动性扫荡仍可能导致假突破信号,特别是在市场波动剧烈或横盘整理时。解决方法:可以考虑增加额外的过滤条件,如成交量确认或波动率过滤。

  2. 过度交易风险:当swingLookback参数设置过小(如默认的3)时,可能产生过多交易信号。解决方法:根据交易品种的特性和时间框架调整该参数,或增加信号确认机制。

  3. 止损太紧/太宽风险:固定的ATR乘数可能在某些市场条件下不够灵活。解决方法:考虑根据市场状态(如波动率变化或趋势强度)动态调整ATR乘数。

  4. 趋势反转风险:移动平均线作为滞后指标,在趋势反转时可能反应不够迅速。解决方法:考虑使用更敏感的指标如ALMA或双EMA交叉来判断趋势。

  5. 固定风险回报比限制:策略使用固定的ATR乘数(默认止损1.5倍,止盈3倍),不考虑市场结构中的支撑阻力位。解决方法:可以改进为根据市场结构动态调整目标价位。

策略优化方向

  1. 多重时间框架分析:引入更高时间框架的趋势确认,可以显著提高策略可靠性。例如,在较大时间框架趋势方向一致的情况下才进行交易,可以减少逆势交易的风险。

  2. 动态参数调整:基于市场波动率或交易量变化动态调整swingLookback、止损和止盈乘数。例如,在波动性高的市场中增加回溯周期,减少误报信号。

  3. 增加成交量确认:将成交量作为确认指标,仅在流动性扫荡伴随成交量增加时才确认信号,这可以显著减少假突破交易。

  4. 引入市场结构识别:增强策略对价格结构的理解,如识别更高的高点/更低的低点形态,或者识别支撑/阻力区域,从而优化入场点和目标价位。

  5. 自适应移动平均线:考虑使用自适应移动平均线(如KAMA或ALMA)替代简单移动平均线,以更好地适应不同的市场条件。

  6. 时间过滤器:添加时间过滤器避开已知的低效率交易时段,如亚洲盘中的横盘期或重要经济数据发布前后的高波动期。

  7. 头寸管理优化:目前策略使用固定的权益百分比(10%),可以考虑基于波动率或风险模型动态调整头寸大小,或实施金字塔加仓策略。

总结

流动性扫荡与趋势跟踪量化交易策略是一种结合技术分析和风险管理的全面交易系统。通过识别市场中的流动性扫荡行为并结合趋势确认,该策略旨在捕捉高概率的交易机会。其动态风险管理机制使用ATR来适应市场波动性,提供自适应的止损和止盈水平。

该策略的主要优势在于其简单而有效的参数设置和丰富的视觉反馈,使其适合各类交易者使用。然而,策略也存在假突破风险和过度交易的可能性,可通过增加额外的过滤条件和多时间框架分析来优化。

未来优化方向包括多时间框架分析、动态参数调整、成交量确认和增强市场结构识别等。通过这些优化,可以进一步提高策略的可靠性和盈利能力,减少假信号和不必要的交易频率。

对于寻求结合市场结构和趋势跟踪方法的交易者,这一策略提供了一个坚实的基础框架,可以根据个人风险偏好和交易风格进行定制和扩展。

策略源码
/*backtest
start: 2025-01-01 00:00:00
end: 2025-02-07 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT","balance":5000}]
*/

//@version=5
strategy("Liquidity Sweep & Trend Following BTCUSD (Signals Visible)", overlay=true)

// ==== Inputs ====
length = input.int(20, "Trend MA Length")
atrLength = input.int(14, "ATR Length")
stopLossATR = input.float(1.5, "Stop Loss ATR Multiplier")
takeProfitATR = input.float(3, "Take Profit ATR Multiplier")
swingLookback = input.int(3, "Recent High/Low Lookback") // shorter for more signals

// ==== Indicators ====
ma = ta.sma(close, length)
atr = ta.atr(atrLength)

// ==== Trend Detection ====
trendUp = close > ma
trendDown = close < ma

// ==== Detect Liquidity Sweeps ====
// Relaxed condition
recentHigh = ta.highest(high, swingLookback)
recentLow = ta.lowest(low, swingLookback)

bullSweep = high >= recentHigh
bearSweep = low <= recentLow

// ==== Entry Rules ====
longCondition = bullSweep and trendUp
shortCondition = bearSweep and trendDown

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// ==== Exit Rules ====
strategy.exit("Exit Long", "Long", stop=close - atr*stopLossATR, limit=close + atr*takeProfitATR)
strategy.exit("Exit Short", "Short", stop=close + atr*stopLossATR, limit=close - atr*takeProfitATR)

// ==== Plot Trend MA ====
plot(ma, color=color.yellow, linewidth=2, title="Trend MA")

// ==== Plot Sweep Markers ====
plotshape(bullSweep, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.small, title="Bull Sweep Marker")
plotshape(bearSweep, style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, title="Bear Sweep Marker")

// ==== Background Trend Color ====
bgcolor(trendUp ? color.new(color.green, 85) : trendDown ? color.new(color.red, 85) : na)

// ==== Alert Conditions ====
alertcondition(longCondition, title="Buy Signal", message="BTCUSD Buy Signal – Liquidity Sweep + Trend")
alertcondition(shortCondition, title="Sell Signal", message="BTCUSD Sell Signal – Liquidity Sweep + Trend")
相关推荐