Strategi Dagangan RSI Bollinger Band Momentum Oscillator

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

Ringkasan

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

Logika Strategi

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.

Analisis Kelebihan

  • Bollinger Bands menentukan titik pembalikan dengan tepat
  • RSI menapis keluar pecah palsu, memastikan kemasukan yang boleh dipercayai
  • Hentikan kerugian dan ambil keuntungan menguruskan risiko perdagangan dengan berkesan
  • Ujian balik yang meluas dan pengoptimuman parameter memastikan keuntungan yang stabil

Analisis Risiko

  • Bollinger Bands tidak meramalkan pembalikan dengan sempurna, beberapa kegagalan berlaku
  • RSI juga boleh memberikan isyarat palsu
  • Stop loss terlalu dekat tidak dapat memegang kedudukan, terlalu longgar meningkatkan risiko

Risiko boleh dikurangkan dengan menyesuaikan parameter Bollinger, menggunakan penunjuk lain, dan memperluaskan stop loss dengan sewajarnya.

Arahan pengoptimuman

  • Pertimbangkan untuk menggabungkan dengan penunjuk lain seperti KD, MACD untuk menapis entri
  • Sesuaikan peratusan stop loss/take profit secara dinamik
  • Mengoptimumkan parameter Bollinger
  • Uji ketahanan di seluruh produk yang berbeza

Kesimpulan

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)


Lebih lanjut