
Strategi ini ialah strategi dagangan swing yang menggabungkan penunjuk RSI dan saluran Bollinger Bands. Ia membuat keputusan perdagangan dengan mengenal pasti keadaan pasaran terlebih beli dan terlebih jual dan menggabungkannya dengan kedudukan harga dalam Bollinger Bands. Strategi ini menggunakan tetapan ambang RSI yang agak longgar (60 untuk terlebih beli dan 40 untuk terlebih jual), dan menggabungkan trek atas dan bawah Bollinger Bands untuk menentukan masa masuk dan keluar, sambil menyediakan mekanisme keluar keuntungan 2%.
Logik teras strategi adalah berdasarkan komponen utama berikut:
Syarat membeli:
Syarat jualan:
Risiko pasaran yang tidak menentu: Dagangan yang kerap mungkin berlaku dalam pasaran yang mendatar dan tidak menentu. Penyelesaian: Anda boleh menambah penapis purata bergerak atau menambah mekanisme pengesahan arah aliran.
Risiko pecahan palsu: Penembusan ringkas Bollinger Bands mengikut harga boleh mencetuskan isyarat palsu. Penyelesaian: Anda boleh menambah tempoh pengesahan atau meningkatkan keperluan amplitud terobosan.
Pergantungan persekitaran pasaran: Prestasi strategi mungkin berbeza dalam kitaran pasaran yang berbeza. Penyelesaian: Laraskan parameter secara dinamik berdasarkan ciri pasaran yang berbeza.
Strategi ini membina sistem dagangan swing yang agak mantap melalui sinergi RSI dan Bollinger Bands. Ciri utama strategi adalah untuk mengawal risiko melalui mekanisme pengesahan berganda sambil mengekalkan peluang dagangan. Walaupun terdapat beberapa risiko yang berpotensi, kestabilan dan kebolehpercayaan strategi boleh dipertingkatkan lagi dengan mengoptimumkan parameter dan menambah keadaan penapisan. Strategi ini sesuai untuk digunakan dalam pasaran dengan turun naik yang lebih besar, tetapi pelarasan parameter yang sepadan perlu dibuat berdasarkan ciri pasaran 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))