这是一个结合了VWAP(成交量加权平均价格)偏差和OBV(能量潮指标)RSI的复合均值回归交易策略。该策略通过监控价格相对于VWAP的偏离程度,以及OBV-RSI指标的超买超卖状态,在市场出现极端状态时进行交易。当价格偏离VWAP达到特定程度,同时OBV-RSI指标显示超买或超卖状态时,策略会发出交易信号,并在价格回归至VWAP时平仓。
策略主要基于两个核心指标: 1. VWAP偏差指标:使用60周期的加权移动平均(WMA)计算VWAP基准线,并通过标准差计算上下2倍标准差通道。这个通道用于识别价格的极端偏离。 2. OBV-RSI指标:将传统RSI应用于OBV,计算14周期的相对强弱。OBV通过累积成交量来反映价格运动的强度,而RSI则用于识别OBV的超买超卖状态。
开仓条件: - 做多:当OBV-RSI <= 30(超卖)且价格低于下轨时 - 做空:当OBV-RSI >= 70(超买)且价格高于上轨时
平仓条件: - 当价格回归至VWAP基准线时 - 设置0.6%的止损以控制风险
该策略通过结合VWAP偏差和OBV-RSI指标,构建了一个稳健的均值回归交易系统。策略在极端市场状态下寻找交易机会,并通过多重风险控制机制保护资金安全。虽然存在一定的风险,但通过持续优化和完善,策略有望在不同市场环境下保持稳定表现。建议交易者在实盘使用前进行充分的回测和参数优化,并根据具体市场特征调整策略参数。
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy('[Hoss] Combined Strategy', overlay=true)
// Indikator 1: [Hoss] VWAP Deviation
indicator_vwap = input.bool(true, title="Show VWAP Deviation Indicator", group="Visibility")
length = input.int(60, title="VWAP Length", group="VWAP Settings")
src = input(close, title="Source", group="VWAP Settings")
// Berechnungen für VWAP
vwmean = ta.wma(src, length)
dev = ta.stdev(src, length)
basis = vwmean
upper_dev2 = vwmean + dev * 2
lower_dev2 = vwmean - dev * 2
// Plotting VWAP Deviation
plot(indicator_vwap ? basis : na, color=color.gray, title='Basis', linewidth=2)
plot1 = plot(indicator_vwap ? upper_dev2 : na, color=color.red, title='Upper Dev 2', linewidth=2)
plot2 = plot(indicator_vwap ? lower_dev2 : na, color=color.green, title='Lower Dev 2', linewidth=2)
fill(plot1, plot2, color=color.new(color.green, 80), title='Deviation Band')
// Indikator 2: [Hoss] OBV RSI
indicator_obv_rsi = input.bool(true, title="Show OBV RSI Indicator", group="Visibility")
len = input.int(14, title="RSI Length", group="OBV RSI Settings")
obv = ta.cum(ta.change(src) > 0 ? volume : ta.change(src) < 0 ? -volume : 0)
rsi = ta.rsi(obv, len)
// Plotting OBV RSI
plot(indicator_obv_rsi ? rsi : na, color=color.blue, title="OBV RSI", linewidth=2)
hline(70, title="Overbought", color=color.red, linestyle=hline.style_dashed)
hline(30, title="Oversold", color=color.green, linestyle=hline.style_dashed)
// Strategie: Kauf- und Verkaufssignale
long_condition = not na(rsi) and rsi <= 30 and close <= lower_dev2
short_condition = not na(rsi) and rsi >= 70 and close >= upper_dev2
if (long_condition)
strategy.entry("Long", strategy.long, stop=close * 0.994) // Stop-Loss bei 0.6%
if (short_condition)
strategy.entry("Short", strategy.short, stop=close * 1.006) // Stop-Loss bei 0.6%
// Flash Close beim Erreichen des VWAP
if (strategy.position_size > 0 and close >= basis)
strategy.close("Long")
if (strategy.position_size < 0 and close <= basis)
strategy.close("Short")