
Strategi ini ialah sistem perdagangan pembalikan momentum yang menggabungkan penunjuk teknikal dua RSI dan Bollinger Bands untuk berdagang dengan mengenal pasti kawasan terlebih beli dan terlebih jual. Strategi ini menggunakan nisbah pulangan risiko 1:2 dan menggabungkan stop loss bergerak untuk kawalan risiko. Logik teras adalah untuk berdagang apabila kedua-dua RSI dan Bollinger Bands menunjukkan isyarat terlebih beli atau terlebih jual pada masa yang sama, dan untuk melindungi dana melalui pengurusan risiko yang ketat.
Strategi ini menggunakan RSI 14 tempoh dan Bollinger Band 20 tempoh sebagai penunjuk utama. Syarat belian mesti dipenuhi serentak: RSI di bawah 30 (terlebih jual) dan harga menyentuh atau jatuh di bawah Bollinger Band yang lebih rendah. Syarat jualan mesti dipenuhi pada masa yang sama: RSI melebihi 70 (terlebih beli) dan harga menyentuh atau melebihi Bollinger Band atas. Sistem ini menggunakan titik tertinggi/terendah 5 garisan K sebagai henti rugi bergerak, dan kedudukan ambil untung ialah dua kali jarak henti rugi, melaksanakan nisbah pulangan risiko 1:2 dengan ketat.
Ini ialah strategi perdagangan pembalikan yang tersusun dengan baik yang menggunakan penunjuk teknikal dua untuk meningkatkan ketepatan dan menggunakan pengurusan risiko yang ketat. Walaupun strategi ini mudah dan intuitif, ia mengandungi elemen utama yang diperlukan untuk sistem perdagangan yang matang. Melalui arahan pengoptimuman yang dicadangkan, strategi ini mempunyai ruang untuk penambahbaikan selanjutnya. Dalam perdagangan sebenar, adalah disyorkan untuk menjalankan ujian belakang yang mencukupi dan pengoptimuman parameter terlebih dahulu.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI + Bollinger Bands with 1:2 Risk/Reward", overlay=true)
// Define Inputs
length_rsi = input.int(14, title="RSI Period")
oversold_level = input.int(30, title="RSI Oversold Level")
overbought_level = input.int(70, title="RSI Overbought Level")
length_bb = input.int(20, title="Bollinger Bands Period")
src = close
risk_to_reward = input.float(2.0, title="Risk-to-Reward Ratio", minval=1.0, step=0.1)
// Calculate Indicators
rsi_value = ta.rsi(src, length_rsi)
basis = ta.sma(src, length_bb)
dev = ta.stdev(src, length_bb)
upper_band = basis + 2 * dev
lower_band = basis - 2 * dev
// Define Buy and Sell Conditions
rsi_buy_condition = rsi_value < oversold_level // RSI below 30 (buy signal)
bollinger_buy_condition = close <= lower_band // Price at or near lower Bollinger Band (buy signal)
rsi_sell_condition = rsi_value > overbought_level // RSI above 70 (sell signal)
bollinger_sell_condition = close >= upper_band // Price at or near upper Bollinger Band (sell signal)
// Combine Buy and Sell Conditions
buy_condition = rsi_buy_condition and bollinger_buy_condition
sell_condition = rsi_sell_condition and bollinger_sell_condition
// Plot Buy and Sell Signals with white text and green/red boxes
plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", textcolor=color.white, size=size.small)
plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", textcolor=color.white, size=size.small)
// Calculate Swing Points (for Stop Loss)
swing_low = ta.lowest(low, 5) // Last 5 bars' low
swing_high = ta.highest(high, 5) // Last 5 bars' high
// Calculate Risk (Distance from Entry to SL)
long_risk = close - swing_low
short_risk = swing_high - close
// Calculate Take Profit using 1:2 Risk-to-Reward Ratio
take_profit_long = close + 2 * long_risk
take_profit_short = close - 2 * short_risk
// Strategy Execution: Enter Buy/Sell Positions
if buy_condition
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit", "Buy", limit=take_profit_long, stop=swing_low) // Set TP and SL for Buy
if sell_condition
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit", "Sell", limit=take_profit_short, stop=swing_high) // Set TP and SL for Sell
// Plotting the Indicators for Visualization (Optional - comment out if not needed)
plot(rsi_value, color=color.blue, title="RSI", linewidth=2, display=display.none)
plot(upper_band, color=color.red, title="Upper BB", display=display.none)
plot(lower_band, color=color.green, title="Lower BB", display=display.none)