Strategi Dagangan Bollinger Bands Multi-Indikator

Penulis:ChaoZhang, Tarikh: 2023-11-15 15:30:43
Tag:

img

Ringkasan

Strategi ini menggabungkan pelbagai penunjuk teknikal seperti Bollinger Bands, RSI dan MACD untuk membuat keputusan perdagangan. Ia mula-mula memetakan Bollinger Bands pada carta dan menggunakan penembusan band untuk isyarat kemasukan. RSI dan MACD kemudian digunakan sebagai penapis tambahan untuk kemasukan. Strategi ini juga menetapkan peraturan stop loss berdasarkan band dan penunjuk untuk mengawal risiko. Secara keseluruhan, ini adalah strategi komprehensif yang menggunakan kekuatan pelbagai penunjuk.

Logika Strategi

  1. Gambar 34-period Bollinger Bands dengan garis tengah, 1 std dev dan 2 std dev bands.

  2. Masuk panjang apabila dekat pecah di atas jalur atas, masuk pendek apabila dekat pecah di bawah jalur bawah.

  3. Tutup kedudukan panjang apabila dekat melintasi di bawah garisan pusat, tutup kedudukan pendek apabila dekat melintasi di atas garisan pusat.

  4. Gunakan RSI>70 sebagai pengesahan tambahan untuk panjang, RSI<30 sebagai pengesahan untuk pendek.

  5. Tutup kedudukan pendek apabila RSI melintasi di atas 50, tutup kedudukan panjang apabila RSI melintasi di bawah 50.

  6. Gunakan crossover MACD sebagai penapis tambahan untuk entri, crossover MACD untuk panjang, crossunder MACD untuk pendek.

  7. Tutup kedudukan panjang pada crossover MACD, tutup kedudukan pendek pada crossunder MACD.

  8. Memerlukan semua 3 penunjuk untuk menyelaraskan sebelum memasuki perdagangan, pelbagai penapis mengurangkan isyarat palsu.

Kelebihan

Menggabungkan isyarat dari pelbagai penunjuk mengurangkan isyarat palsu dan meningkatkan keuntungan. Bollinger Bands memberikan isyarat harga, RSI mengelakkan kawasan overbought / oversold, MACD menangkap perubahan trend.

Peraturan stop loss yang ketat berdasarkan band dan penunjuk mengehadkan kerugian pada setiap perdagangan. Ini menghasilkan keuntungan yang lebih tinggi, kadar kemenangan dan pengeluaran maksimum yang lebih rendah.

Berbanding dengan strategi satu penunjuk, menggabungkan penunjuk meningkatkan prestasi. Pelbagai penapis menghilangkan isyarat buruk. Mekanisme hentian kerugian mengawal kesan kerugian.

Secara keseluruhan strategi ini cemerlang di pasaran trend, menangkap pergerakan utama sambil mengelakkan whipsaws menggunakan butiran penunjuk. kawalan risiko membolehkan menggunakan leverage yang lebih tinggi dengan selamat.

Risiko

Risiko utama ialah:

  1. Kemungkinan isyarat palsu dari penunjuk. Pengoptimuman parameter boleh mengurangkan tetapi tidak menghilangkan isyarat palsu.

  2. Ketidakupayaan untuk mendapat keuntungan dari pasaran terikat julat. Stop loss boleh mencetuskan yang mengakibatkan kerugian semasa penyatuan. Peraturan stop loss boleh dicabut untuk memegang perdagangan lebih lama.

  3. Indikator yang tertinggal menyebabkan peluang masuk yang hilang. Indikator utama yang lebih maju dapat membantu menangkap belokan lebih awal.

  4. Menggunakan penangguhan berhenti atau purata ke bawah boleh mengawal kerugian dengan lebih baik.

  5. Parameter tetap mungkin memerlukan penyesuaian untuk pasaran yang berbeza. Pembelajaran mesin dapat membolehkan pengoptimuman parameter automatik.

  6. Pengujian yang tidak mencukupi yang mengakibatkan terlalu sesuai. Strategi perlu diuji pada set data yang lebih besar di seluruh pasaran untuk memastikan ketahanan.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dengan beberapa cara:

  1. Mengoptimumkan parameter penunjuk untuk mencari kombinasi terbaik yang meminimumkan isyarat palsu.

  2. Menggabungkan stop loss adaptif dan bukannya stop band tengah tetap.

  3. Menggunakan pembelajaran mesin untuk pengoptimuman parameter adaptif dalam keadaan yang berubah, contohnya pembelajaran penguat.

  4. Tambah peraturan pengesanan trend untuk menggunakan taktik yang berbeza untuk fasa pasaran yang berbeza.

  5. Menggabungkan sentimen, data media sosial untuk peningkatan ramalan pelbagai faktor dan penunjuk utama.

  6. Menggunakan penggabungan untuk skala saiz kedudukan berdasarkan saiz akaun yang semakin meningkat untuk pertumbuhan eksponensial.

  7. Mengoptimumkan kombinasi dengan strategi yang tidak berkaitan untuk mengurangkan turun naik portfolio melalui kepelbagaian.

Kesimpulan

Strategi ini menggabungkan beberapa penunjuk untuk isyarat masuk dan keluar yang kukuh dan menguatkuasakan disiplin kehilangan berhenti yang ketat. Menggunakan beberapa penunjuk mengurangkan isyarat palsu sementara berhenti mengawal besar kerugian. Ia berfungsi dengan baik untuk pasaran yang menonjol yang memberikan pulangan yang mantap. Parameter penyuntingan halus dan meningkatkan daya adaptasi dapat meningkatkan prestasi. Secara keseluruhan ia adalah sistem perdagangan yang boleh dipercayai, stabil dan cekap.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Lebih lanjut