本策略是一个结合了抛物线SAR指标、SuperTrend指标和成交量震荡器(Volume Oscillator)的综合交易系统。该策略主要通过多维度的技术指标来确认市场趋势,通过指标间的相互验证来提高交易信号的可靠性。策略设计的核心思想是在趋势、动量和成交量三个维度上进行信号确认,只有当三个维度都出现一致信号时才进行交易。
策略运用了三个核心指标: 1. 抛物线SAR(起始值0.02,加速因子0.02,最大值0.2):用于识别价格趋势的反转点,当价格位于SAR点之上时看涨,反之看跌。 2. SuperTrend(周期10,乘数3):结合ATR波动率指标,生成动态的趋势通道。当价格突破上轨时产生做多信号,突破下轨时产生做空信号。 3. 成交量震荡器(短期14,长期28):通过对比成交量的短期和长期移动平均线来衡量交易活跃度,正值表示成交量增加,负值表示成交量减少。
交易信号生成逻辑: - 做多条件:价格在SAR之上 + SuperTrend看涨(价格在下轨之上) + 成交量震荡器为正 - 平仓条件:价格在SAR之下 + SuperTrend看跌(价格在上轨之下) + 成交量震荡器为负
该策略通过结合趋势跟踪和成交量分析,构建了一个相对完整的交易系统。策略的主要特点是使用多重指标确认来提高交易的可靠性,同时通过可视化设计为交易者提供直观的决策参考。虽然存在一定的滞后性和参数敏感性问题,但通过合理的优化和风险控制措施,该策略具有良好的实用价值。建议交易者在实盘使用时,先通过回测找到适合自己的参数组合,并结合市场经验进行灵活调整。
//@version=5
strategy("Parabolic SAR + SuperTrend + Volume Oscillator Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// --- Parabolic SAR Parameters ---
sar_start = 0.02
sar_increment = 0.02
sar_max = 0.2
sar = ta.sar(sar_start, sar_increment, sar_max)
plot(sar, color=color.red, style=plot.style_cross, title="Parabolic SAR")
// --- SuperTrend Parameters ---
st_length = 10
st_multiplier = 3
[st_upper, st_lower] = ta.supertrend(st_length, st_multiplier)
st_color = close > st_upper ? color.green : color.red
plot(st_upper, color=color.new(st_color, 0), title="SuperTrend Upper")
plot(st_lower, color=color.new(st_color, 0), title="SuperTrend Lower")
fill(plot(st_upper), plot(st_lower), color=color.new(st_color, 90), title="SuperTrend Cloud")
// --- Volume Oscillator Parameters ---
vo_short_length = 14
vo_long_length = 28
vo = ta.ema(volume, vo_short_length) - ta.ema(volume, vo_long_length)
plot(vo, color=color.blue, title="Volume Oscillator")
// --- Buy and Sell Conditions ---
// Buy Condition:
// - Price is above Parabolic SAR
// - SuperTrend is bullish (price above SuperTrend lower line)
// - Volume Oscillator is positive (indicating increasing volume)
buyCondition = close > sar and close > st_lower and vo > 0
// Sell Condition:
// - Price is below Parabolic SAR
// - SuperTrend is bearish (price below SuperTrend upper line)
// - Volume Oscillator is negative (indicating decreasing volume)
sellCondition = close < sar and close < st_upper and vo < 0
// Plot Buy/Sell Signals
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// --- Execute Trades ---
if (buyCondition)
strategy.entry("Long", strategy.long)
if (sellCondition)
strategy.close("Long")