
Strategi ini adalah strategi perdagangan ayunan yang menggabungkan indikator RSI dan saluran Bollinger Bands. Ia membuat keputusan perdagangan dengan mengidentifikasi kondisi pasar yang jenuh beli dan jenuh jual dan menggabungkannya dengan posisi harga di Bollinger Bands. Strategi ini menggunakan pengaturan ambang batas RSI yang relatif longgar (60 untuk jenuh beli dan 40 untuk jenuh jual), dan menggabungkan jalur atas dan bawah Bollinger Bands untuk menentukan waktu masuk dan keluar, sekaligus menyiapkan mekanisme keluar dengan laba sebesar 2%.
Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:
Kondisi pembelian:
Kondisi penjualan:
Risiko pasar yang fluktuatif: Perdagangan dapat terjadi secara sering di pasar yang bergerak menyamping dan fluktuatif. Solusi: Anda dapat menambahkan filter rata-rata bergerak atau menambahkan mekanisme konfirmasi tren.
Risiko penembusan palsu: Penembusan singkat Bollinger Bands pada harga dapat memicu sinyal palsu. Solusi: Anda dapat menambahkan periode konfirmasi atau meningkatkan persyaratan amplitudo terobosan.
Ketergantungan lingkungan pasar: Kinerja strategi dapat bervariasi dalam siklus pasar yang berbeda. Solusi: Sesuaikan parameter secara dinamis berdasarkan karakteristik pasar yang berbeda.
Strategi ini membangun sistem perdagangan ayunan yang relatif kuat melalui sinergi RSI dan Bollinger Bands. Fitur utama strategi ini adalah mengendalikan risiko melalui berbagai mekanisme konfirmasi sambil mempertahankan peluang perdagangan. Meskipun ada beberapa risiko potensial, stabilitas dan keandalan strategi dapat lebih ditingkatkan dengan mengoptimalkan parameter dan menambahkan kondisi penyaringan. Strategi ini cocok digunakan di pasar dengan volatilitas yang lebih besar, tetapi penyesuaian parameter yang sesuai perlu dilakukan berdasarkan karakteristik pasar tertentu.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Demo GPT - Adjusted Swing Trading for SBI", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// Input Parameters
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiOverbought = input.int(60, minval=50, maxval=100, title="RSI Overbought Level") // Relaxed level
rsiOversold = input.int(40, minval=0, maxval=50, title="RSI Oversold Level") // Relaxed level
bbLength = input.int(20, minval=1, title="Bollinger Bands Length")
bbMult = input.float(2.0, minval=0.1, maxval=5, title="Bollinger Bands StdDev Multiplier")
maLength = input.int(50, minval=1, title="Moving Average Length")
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
// Bollinger Bands Calculation
bbBasis = ta.sma(close, bbLength)
bbDev = bbMult * ta.stdev(close, bbLength)
bbUpper = bbBasis + bbDev
bbLower = bbBasis - bbDev
// Moving Average
ma = ta.sma(close, maLength)
// Buy Signal: Price near or below lower Bollinger Band AND RSI below oversold level
buySignal = (close <= bbLower * 1.01) and (rsi < rsiOversold)
// Sell Signal: Price near or above upper Bollinger Band OR RSI above overbought level
sellSignal = (close >= bbUpper * 0.99) or (rsi > rsiOverbought)
// Date Range Inputs
startDate = input(timestamp("2018-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2069-12-31 23:59"), title="End Date")
inDateRange = true
// Strategy Logic
if buySignal and inDateRange
strategy.entry("Swing Long SBI", strategy.long)
if strategy.position_size > 0 and (sellSignal or close >= strategy.position_avg_price * 1.02)
strategy.close("Swing Long SBI")
// Plotting
plot(bbBasis, title="Bollinger Bands Basis", color=color.blue)
plot(bbUpper, title="Bollinger Bands Upper", color=color.red)
plot(bbLower, title="Bollinger Bands Lower", color=color.green)
plot(ma, title="Moving Average", color=color.orange)
hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
plot(rsi, title="RSI", color=color.purple)
// Fill Bollinger Bands for Visualization
fill(plot(bbUpper), plot(bbLower), title="Bollinger Bands Background", color=color.rgb(33, 150, 243, 95))