Momentum Oscillator Bollinger Band RSI Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2023-09-18 14:07:51
Tag:

Gambaran umum

Strategi ini menggabungkan Bollinger Bands dan indikator Relative Strength Index (RSI) untuk memprediksi volatilitas harga dan menentukan titik masuk yang optimal. Logika sederhana - kita melihat harga penutupan yang menyentuh band bawah Bollinger, setelah itu ada dua skenario yang mungkin terjadi: baik harga melompat kembali dari band bawah Bollinger, atau terus turun. Untuk mengkonfirmasi pergerakan harga, kita menggunakan indikator kedua, RSI, untuk menyelidiki tren lebih lanjut. Misalnya, jika harga mencapai band Bollinger yang lebih rendah tetapi nilai RSI tidak berada di wilayah oversold, kita dapat menyimpulkan harga akan terus turun. Jika nilai RSI oversold, kita dapat menggunakan area ini sebagai titik masuk kita.

Stop loss diperlukan untuk menghindari kehilangan modal yang terlalu banyak jika RSI terlalu lama berada di wilayah oversold.

Area mengambil keuntungan terbaik adalah ketika harga bangkit kembali di atas Bollinger middle band/upper band atau ketika RSI mencapai tingkat overbought, mana yang terjadi lebih awal.

Entri panjang:

RSI < 30 dan harga penutupan < Bollinger lower band

Keluar jauh:

RSI > 70

Logika Strategi

Strategi ini pertama-tama menghitung indikator RSI dan menetapkan batas atas/bawah untuk menentukan tingkat overbought/oversold. Kemudian menghitung band tengah, atas dan bawah Bollinger. Ketika harga penutupan menyentuh band bawah dan RSI di bawah 30, pergi panjang. Ketika RSI di atas 70, tutup posisi.

Setelah masuk panjang, tetapkan stop loss dan ambil keuntungan poin. mengambil keuntungan ditetapkan pada harga masuk * (1 + persentase tetap), stop loss ditetapkan pada harga masuk * (1 - persentase tetap).

Hal ini memungkinkan kita untuk membeli di Bollinger band bawah ketika RSI rendah dan menjual ketika RSI tinggi, mendapatkan keuntungan dari pembalikan.

Analisis Keuntungan

  • Bollinger Bands menentukan titik pembalikan dengan akurat
  • RSI menyaring keluar breakout palsu, memastikan masuk yang andal
  • Stop loss and take profit mengelola risiko perdagangan secara efektif
  • Backtesting yang luas dan optimasi parameter memastikan profitabilitas yang stabil

Analisis Risiko

  • Bollinger Bands tidak secara sempurna memprediksi pembalikan, beberapa kegagalan terjadi
  • RSI juga bisa memberikan sinyal palsu
  • Stop loss terlalu dekat tidak dapat mempertahankan posisi, terlalu longgar meningkatkan risiko

Risiko dapat dikurangi dengan menyesuaikan parameter Bollinger, menggunakan indikator lain, dan memperluas stop loss dengan tepat.

Arahan Optimasi

  • Pertimbangkan untuk menggabungkan dengan indikator lain seperti KD, MACD untuk menyaring entri
  • Mengatur secara dinamis persentase stop loss/take profit
  • Mengoptimalkan parameter Bollinger
  • Uji ketahanan pada produk yang berbeda

Kesimpulan

Profil risiko / imbalan keseluruhan dari strategi ini seimbang dan hasil backtest baik. Perbaikan lebih lanjut dapat dilakukan melalui optimasi parameter dan peningkatan indikator. Konsep perdagangan pembalikan berdasarkan Bollinger Bands sederhana dan dapat diandalkan, menjamin penelitian dan penyempurnaan lebih lanjut.

[/trans]


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Lebih banyak