这是一个基于威廉指标(Williams %R)和相对强弱指数(RSI)双重动量突破确认的量化交易策略。该策略通过观察两个动量指标的交叉突破来确认交易信号,有效降低了假突破带来的风险。策略在超买超卖区域寻找交易机会,通过两个指标的共同确认来提高交易的准确性。
策略使用30周期的Williams %R和7周期的RSI作为主要指标。当Williams %R向上突破-80且RSI同时向上突破20时,触发做多信号;当Williams %R向下突破-20且RSI同时向下突破80时,触发做空信号。这种双重确认机制能够有效过滤掉单一指标可能产生的虚假信号。策略在编程实现上采用了手动计算Williams %R的方式,通过计算周期内的最高价和最低价来得到更精确的指标值。
该策略通过Williams %R和RSI的协同作用,构建了一个稳健的交易系统。双重动量确认机制有效降低了假信号风险,超买超卖区域的交易具有良好的盈利潜力。通过合理的风险控制和持续优化,策略可以在不同市场环境下保持稳定表现。
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Williams %R + RSI Strategy", overlay=true)
// Inputs for Williams %R
wpr_length = input.int(30, title="Williams %R Length", minval=1)
wpr_upper = input.int(-20, title="Williams %R Upper Band", minval=-100, maxval=0)
wpr_lower = input.int(-80, title="Williams %R Lower Band", minval=-100, maxval=0)
// Inputs for RSI
rsi_length = input.int(7, title="RSI Length", minval=1)
rsi_upper = input.int(80, title="RSI Upper Band", minval=0, maxval=100)
rsi_lower = input.int(20, title="RSI Lower Band", minval=0, maxval=100)
// Calculate Williams %R Manually
highest_high = ta.highest(high, wpr_length)
lowest_low = ta.lowest(low, wpr_length)
wpr = ((highest_high - close) / (highest_high - lowest_low)) * -100
// Calculate RSI
rsi = ta.rsi(close, rsi_length)
// Entry and Exit Conditions
longCondition = ta.crossover(wpr, wpr_lower) and ta.crossover(rsi, rsi_lower)
shortCondition = ta.crossunder(wpr, wpr_upper) and ta.crossunder(rsi, rsi_upper)
// Plot Buy/Sell Signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy Entry and Exit
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)