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
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.
Risiko dapat dikurangi dengan menyesuaikan parameter Bollinger, menggunakan indikator lain, dan memperluas stop loss dengan tepat.
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)