BB Percent Index Trend Fading Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-06 14:43:39
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indeks persentase BB dikombinasikan dengan indikator RSI dan MFI. Strategi ini membuat keputusan panjang dan pendek dengan mendeteksi price breakout dari Bollinger Bands upper dan lower rail, bersama dengan sinyal oversold/overbought RSI dan sinyal oversold/overbought MFI.

Logika Strategi

  1. Hitung Bollinger Band Percentage (BB%). BB% mewakili standar deviasi harga relatif terhadap Bollinger middle band, yang menilai arah pasar melalui saluran Bollinger.
  2. Menggabungkan indikator RSI dan MFI untuk menentukan kondisi overbought dan oversold. RSI membandingkan keuntungan rata-rata dan kerugian rata-rata selama periode waktu untuk menentukan tingkat overbought dan oversold. MFI membandingkan volume dan volume turun untuk menentukan tingkat overbought dan oversold.
  3. Ketika harga menembus Bollinger lower rail ke atas, pergi panjang; ketika harga menembus Bollinger upper rail ke bawah, pergi pendek. Pada saat yang sama, gunakan sinyal oversold / overbought dari indikator RSI dan MFI untuk penyaringan.

Keuntungan

  1. Trading trend fading menghindari tren pasar dan mengurangi fluktuasi laba.
  2. Kombinasi dari beberapa indikator menyaring sinyal dan meningkatkan akurasi keputusan.
  3. Pengaturan parameter fleksibel untuk menyesuaikan karakteristik risiko-pengembalian strategi.
  4. Terapkan pada instrumen yang sangat fluktuatif seperti komoditas, forex, cryptocurrency, dll.

Risiko dan Solusi

  1. Ada kemungkinan tinggi sinyal palsu dari Bollinger breakout, yang membutuhkan kombinasi dari beberapa indikator untuk penyaringan.
  2. Penghakiman sinyal breakout membutuhkan kriteria yang cukup santai untuk menghindari kehilangan peluang yang baik.
  3. Sesuaikan pengaturan parameter untuk mengendalikan risiko, seperti ukuran posisi, menaikkan garis stop loss, dll.

Arahan Optimasi

  1. Menggabungkan mekanisme stop loss berbasis volatilitas seperti indikator ATR.
  2. Memperkenalkan model pembelajaran mesin untuk membantu menilai kualitas sinyal.
  3. Mengoptimalkan mekanisme pemilihan instrumen untuk menyesuaikan instrumen yang berpartisipasi secara dinamis.
  4. Masukkan lebih banyak faktor seperti indikator sentimen, berita, dll untuk meningkatkan kerangka keputusan.

Kesimpulan

Strategi ini terutama diterapkan pada instrumen non-trending volatilitas tinggi. Strategi ini menerapkan perdagangan trend fading melalui kombinasi saluran Bollinger dan indikator. Karakteristik risiko-pengembalian dapat dikendalikan dengan menyesuaikan parameter. Perbaikan lebih lanjut dapat dilakukan dengan memperkenalkan lebih banyak indikator dan model tambahan untuk mengoptimalkan kualitas keputusan, sehingga mencapai kinerja strategi yang lebih baik.


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

//Noro
//2018

//@version=2
strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
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")

source = hlc3
length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period")
DrawRSI_f=input(true, title="Draw RSI?", type=bool)
DrawMFI_f=input(false, title="Draw MFI?", type=bool)
HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool)

DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f
DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f
// RSI
rsi_s = DrawRSI ? rsi(source, length) : na
plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2)

// MFI
upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na
lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na
mf = DrawMFI ? rsi(upper_s, lower_s) : na
plot(DrawMFI ? mf : na, color=green, linewidth=2)

// Draw BB on indices
bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na
basis = sma(bb_s, length)
dev = mult * stdev(bb_s, bblength)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1,p2, blue)

b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na
bgcolor(HighlightBreaches ? b_color : na, transp = 0)

//Signals
up = bb_s < lower and close < open
dn = bb_s > upper and close > open
size = strategy.position_size
lp = size > 0 and close > open
sp = size < 0 and close < open
exit = (up == false and dn == false) and (lp or sp)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih banyak