Ini adalah strategi perdagangan kuantitatif yang didasarkan pada pengesahan dua kali momentum break-through dalam indikator William (Williams %R) dan indeks relative strength (RSI). Strategi ini mengkonfirmasi sinyal perdagangan dengan mengamati cross-breaks dari dua indikator momentum, yang secara efektif mengurangi risiko yang ditimbulkan oleh false breaks. Strategi ini mencari peluang perdagangan di zona overbought dan oversold untuk meningkatkan akurasi perdagangan dengan pengesahan bersama dari dua indikator.
Strategi ini menggunakan Williams %R pada 30 siklus dan RSI pada 7 siklus sebagai indikator utama. Ketika Williams %R naik ke atas 80 dan RSI naik ke atas pada saat yang sama, sinyal multisignal dipicu; Ketika Williams %R turun ke bawah 20 dan RSI turun ke bawah pada saat yang sama, sinyal kosong dipicu.
Strategi ini membangun sistem perdagangan yang stabil melalui sinergi antara Williams %R dan RSI. Efektifnya, mekanisme konfirmasi volume ganda mengurangi risiko sinyal palsu, dan perdagangan di zona overbought dan oversold memiliki potensi keuntungan yang baik. Dengan kontrol risiko yang masuk akal dan pengoptimalan berkelanjutan, strategi ini dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
/*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)