Ini adalah strategi perdagangan kuantitatif berdasarkan pengesahan pergerakan dua kali ganda dalam WILLIAMS %R dan RSI yang agak kuat. Strategi ini mengesahkan isyarat perdagangan dengan mengamati pergerakan silang kedua-dua indikator dinamik, yang secara berkesan mengurangkan risiko yang disebabkan oleh pelanggaran palsu. Strategi ini mencari peluang perdagangan di kawasan yang lebih banyak dibeli dan dijual, meningkatkan ketepatan perdagangan dengan pengesahan bersama kedua-dua indikator.
Strategi ini menggunakan Williams %R pada 30 kitaran dan RSI pada 7 kitaran sebagai indikator utama. Apabila Williams %R naik ke atas 80 dan RSI pada masa yang sama naik ke atas 20, ia mencetuskan isyarat berganda; apabila Williams %R turun ke bawah 20 dan RSI pada masa yang sama turun ke bawah 80, ia mencetuskan isyarat kosong.
Strategi ini membina sistem perdagangan yang stabil melalui kerja sama Williams %R dan RSI. Mekanisme pengesahan dua kali ganda berkesan mengurangkan risiko isyarat palsu, perdagangan di kawasan overbought dan oversold mempunyai potensi keuntungan yang baik. Dengan kawalan risiko yang munasabah dan pengoptimuman berterusan, strategi ini dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.
/*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)