Strategi perdagangan Bollinger band dengan banyak filter


Tanggal Pembuatan: 2024-01-17 15:12:57 Akhirnya memodifikasi: 2024-01-17 15:12:57
menyalin: 1 Jumlah klik: 592
1
fokus pada
1617
Pengikut

Strategi perdagangan Bollinger band dengan banyak filter

Ringkasan

Strategi perdagangan Bollinger Bands pilihan ganda adalah strategi perdagangan kuantitatif yang menggabungkan indikator Bollinger Bands, indikator garis rata-rata, indikator RSI, dan karakteristik grafik K-line untuk memfilter beberapa kondisi dan mengirimkan sinyal perdagangan ketika kondisi terpenuhi. Ini adalah strategi pelacakan tren khas untuk mendapatkan keuntungan dengan menangkap pergerakan tren harga di garis tengah dan panjang.

Prinsip Strategi

Perhitungan indikator

Strategi ini menggunakan tiga indikator utama, yaitu Brin Belt, Average Line, dan RSI. Di antaranya, Brin Belt mid-trail adalah harga n-day Simple Moving Average, up-trail dan down-trail adalah mid-trail + 2x standar deviasi dan mid-trail - 2x standar deviasi. RSI adalah nilai antara 0 ~ 100 yang dihitung berdasarkan kenaikan dan penurunan selama periode tertentu.

Sinyal perdagangan

Strategi ini menghasilkan sinyal perdagangan berdasarkan tiga kriteria utama:

(1) Brin membawa terobosan ke bawah & entitas garis K membantah. Lakukan lebih banyak ketika harga penutupan berada di bawah dan entitas garis K berwarna berlawanan dengan arah tren saat ini.

(2) Brin band terbalik & entitas garis K terbalik. Bila entitas garis K terbalik di bawah harga penutupan, dan warna entitas garis K berlawanan dengan arah tren saat ini, kosongkan.

(3) Entitas garis K berbalik. Jika arah memegang posisi sesuai dengan warna entitas garis K berbalik, maka posisi kosong.

Selain itu, kebijakan ini juga menyiapkan filter seragam, filter entitas K-line, dan filter RSI untuk mengontrol masuk secara ketat.

Analisis Keunggulan

  • Kontrol ketat terhadap kondisi ganda untuk mengurangi risiko penembusan palsu
  • Menggunakan metode trend tracking untuk mengurangi frekuensi transaksi
  • RSI membantu menghindari perangkap reversal

Analisis risiko

  • Setting parameter Brinband yang tidak tepat dapat menyebabkan sinyal yang kurang
  • Kegagalan untuk menerobos bisa menyebabkan kerugian yang lebih besar.
  • Frekuensi transaksi yang rendah, kemungkinan kehilangan beberapa peluang perdagangan

Risiko dapat dikurangi dengan mengadaptasi parameter Brin dengan kontrol yang ketat terhadap stop loss.

Arah optimasi

  • Anda dapat menguji kinerja strategi di bawah parameter yang berbeda untuk mencari parameter yang optimal
  • Anda dapat menambahkan algoritma pembelajaran mesin untuk membuat strategi mengoptimalkan parameter secara otomatis
  • Lebih banyak faktor dan filter dapat ditambahkan untuk meningkatkan stabilitas strategi

Meringkaskan

Strategi ini secara keseluruhan adalah strategi pelacakan tren garis tengah yang khas. Dengan memfilter kondisi ganda, mengendalikan waktu masuk dan keluar dengan ketat, menggunakan metode perdagangan tren, dapat mengurangi perdagangan yang tidak perlu, menangkap tren garis tengah pasar. Strategi ini memiliki ruang yang besar untuk dioptimalkan, dengan penyesuaian parameter, menambahkan lebih banyak alat bantu, dan lain-lain.

Kode Sumber Strategi
/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.4", shorttitle = "Bollinger str 1.4", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(1, defval = 1, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

usebf = input(true, defval = true, title = "Use body-filter")
usecf = input(true, defval = true, title = "Use color-filter")
userf = input(true, defval = true, title = "Use RSI-filter")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebf == false

//Color filter
bar = close > open ? 1 : close < open ? -1 : 0 
gb = bar == 1 or usecf == false
rb = bar == -1 or usecf == false

//RSI Filter
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
ursi = rsi > 70 or userf == false
drsi = rsi < 30 or userf == false

//Signals
up = close <= lower and rb and body and drsi and (close < strategy.position_avg_price or strategy.position_size == 0)
dn = close >= upper and gb and body and ursi and (close > strategy.position_avg_price or strategy.position_size == 0)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if  exit
    strategy.close_all()