
Đây là một chiến lược giao dịch định lượng dựa trên xác nhận đợt phá vỡ động lực kép của chỉ số Williams (Williams %R) và chỉ số tương đối mạnh (RSI). Chiến lược này xác nhận tín hiệu giao dịch bằng cách quan sát đợt phá vỡ chéo của hai chỉ số động lực, giảm hiệu quả nguy cơ phá vỡ giả. Chiến lược tìm kiếm cơ hội giao dịch ở khu vực quá mua quá bán, tăng độ chính xác của giao dịch bằng cách xác nhận chung của hai chỉ số.
Chiến lược sử dụng 30 chu kỳ của Williams % R và 7 chu kỳ của RSI như là chỉ số chính. Khi Williams % R vượt lên 80 và RSI cùng lúc vượt lên 20, kích hoạt nhiều tín hiệu; Khi Williams % R vượt xuống 20 và RSI cùng lúc vượt xuống 80, kích hoạt tín hiệu trống.
Chiến lược này xây dựng một hệ thống giao dịch vững chắc thông qua sự phối hợp của Williams % R và RSI. Cơ chế xác nhận động lượng kép có hiệu quả trong việc giảm nguy cơ tín hiệu sai, giao dịch trong khu vực mua quá mức có tiềm năng lợi nhuận tốt. Bằng cách kiểm soát rủi ro hợp lý và tối ưu hóa liên tục, chiến lược có thể duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*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)