
Strategi ini adalah sistem perdagangan trend-tracking berdasarkan indikator relatif lemah ((RSI) dan indikator relatif lemah ((Stochastic RSI) secara rawak. Strategi ini melakukan perdagangan dengan memantau tahap overbought dan oversold RSI dan Stochastic RSI apabila terdapat isyarat overbought atau oversold di pasaran.
Strategi ini berdasarkan kepada dua indikator teknikal: RSI dan RSI Stokastik. RSI digunakan untuk mengukur kelajuan dan ketinggian pergerakan harga, manakala RSI Stokastik digunakan untuk mengira nilai RSI secara rawak, memberikan isyarat jual beli yang lebih sensitif di pasaran. Isyarat beli dicetuskan apabila RSI berada di bawah 35 dan nilai K RSI Stokastik berada di bawah 20, menunjukkan bahawa pasaran berada dalam keadaan jual beli. Isyarat jual dicetuskan apabila RSI berada di atas 70 dan nilai K RSI Stokastik berada di atas 80, menunjukkan bahawa pasaran berada dalam keadaan jual beli.
Strategi ini membina sistem perdagangan yang agak dipercayai dengan menggabungkan kelebihan RSI dan Stochastic RSI. Walaupun terdapat beberapa batasan, strategi ini mempunyai nilai praktikal yang baik dengan pengurusan risiko yang munasabah dan pengoptimuman berterusan.
/*backtest
start: 2023-12-20 00:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC Buy & Sell Strategy (RSI & Stoch RSI)", overlay=true)
// Input Parameters
rsi_length = input.int(14, title="RSI Length")
stoch_length = input.int(14, title="Stochastic Length")
stoch_smooth_k = input.int(3, title="Stochastic %K Smoothing")
stoch_smooth_d = input.int(3, title="Stochastic %D Smoothing")
// Threshold Inputs
rsi_buy_threshold = input.float(35, title="RSI Buy Threshold")
stoch_buy_threshold = input.float(20, title="Stochastic RSI Buy Threshold")
rsi_sell_threshold = input.float(70, title="RSI Sell Threshold")
stoch_sell_threshold = input.float(80, title="Stochastic RSI Sell Threshold")
use_weekly_data = input.bool(false, title="Use Weekly Data", tooltip="Enable to use weekly timeframe for calculations.")
// Timeframe Configuration
timeframe = use_weekly_data ? "W" : timeframe.period
// Calculate RSI and Stochastic RSI
rsi_value = request.security(syminfo.tickerid, timeframe, ta.rsi(close, rsi_length))
stoch_rsi_k_raw = request.security(syminfo.tickerid, timeframe, ta.stoch(close, high, low, stoch_length))
stoch_rsi_k = ta.sma(stoch_rsi_k_raw, stoch_smooth_k)
stoch_rsi_d = ta.sma(stoch_rsi_k, stoch_smooth_d)
// Define Buy and Sell Conditions
buy_signal = (rsi_value < rsi_buy_threshold) and (stoch_rsi_k < stoch_buy_threshold)
sell_signal = (rsi_value > rsi_sell_threshold) and (stoch_rsi_k > stoch_sell_threshold)
// Strategy Execution
if buy_signal
strategy.entry("Long", strategy.long, comment="Buy Signal")
if sell_signal
strategy.close("Long", comment="Sell Signal")
// Plot Buy and Sell Signals
plotshape(buy_signal, style=shape.labelup, location=location.belowbar, color=color.green, title="Buy Signal", size=size.small, text="BUY")
plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, color=color.red, title="Sell Signal", size=size.small, text="SELL")
// Plot RSI and Stochastic RSI for Visualization
hline(rsi_buy_threshold, "RSI Buy Threshold", color=color.green)
hline(rsi_sell_threshold, "RSI Sell Threshold", color=color.red)
plot(rsi_value, color=color.blue, linewidth=2, title="RSI Value")
plot(stoch_rsi_k, color=color.purple, linewidth=2, title="Stochastic RSI K")
plot(stoch_rsi_d, color=color.orange, linewidth=1, title="Stochastic RSI D")