Strategi ini menggabungkan Bollinger Bands dan Indeks Kekuatan Relatif (RSI) penunjuk untuk meramalkan turun naik harga dan menentukan titik kemasukan yang optimum. Logiknya mudah - kita melihat harga penutupan yang menyentuh band bawah Bollinger, selepas itu terdapat dua senario yang mungkin: sama ada harga melantun kembali dari band bawah Bollinger, atau ia terus jatuh. Untuk mengesahkan pergerakan harga, kita menggunakan penunjuk kedua, RSI, untuk menyiasat lagi trend. Sebagai contoh, jika harga mencapai band Bollinger yang lebih rendah tetapi nilai RSI tidak berada di wilayah oversold, kita boleh menyimpulkan harga akan terus turun. Jika nilai RSI oversold, kita boleh menggunakan kawasan ini sebagai titik kemasukan kita.
Stop loss diperlukan untuk mengelakkan kehilangan modal yang terlalu banyak jika RSI terlalu lama berada di wilayah oversold.
Kawasan mengambil keuntungan yang terbaik adalah apabila harga melonjak kembali di atas Bollinger Middle Band / Upper Band atau apabila RSI mencapai tahap overbought, mana yang lebih awal.
Entri panjang:
RSI < 30 dan harga penutupan < Bollinger lower band
Keluar jauh:
RSI > 70
Strategi ini mula-mula mengira penunjuk RSI dan menetapkan sempadan atas / bawah untuk menentukan tahap overbought / oversold. Kemudian ia mengira jalur tengah, atas dan bawah Bollinger. Apabila harga penutupan menyentuh jalur bawah dan RSI di bawah 30, pergi panjang. Apabila RSI di atas 70, tutup kedudukan.
Apabila memasuki panjang, tetapkan titik stop loss dan mengambil keuntungan.
Ini membolehkan kita membeli pada band Bollinger yang lebih rendah apabila RSI rendah dan menjual apabila RSI tinggi, mendapat keuntungan daripada pembalikan.
Risiko boleh dikurangkan dengan menyesuaikan parameter Bollinger, menggunakan penunjuk lain, dan memperluaskan stop loss dengan sewajarnya.
Profil risiko / ganjaran keseluruhan strategi ini seimbang dan hasil backtest baik. Penambahbaikan lanjut boleh dibuat melalui pengoptimuman parameter dan peningkatan penunjuk. Konsep perdagangan pembalikan berdasarkan Bollinger Bands adalah mudah dan boleh dipercayai, menjamin penyelidikan dan penyempurnaan 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)