Strategi detrending berdasarkan indikator persentase Bollinger Bands


Tanggal Pembuatan: 2023-12-06 14:43:39 Akhirnya memodifikasi: 2023-12-06 14:43:39
menyalin: 0 Jumlah klik: 654
1
fokus pada
1621
Pengikut

Strategi detrending berdasarkan indikator persentase Bollinger Bands

Ringkasan

Strategi ini didasarkan pada indikator persentase Bollinger Bands yang digabungkan dengan indikator RSI dan MFI, dengan mendeteksi harga produk keuangan yang menerobos Bollinger Bands ke bawah, dengan digabungkan dengan sinyal RSI oversold overbought dan MFI oversold overbought, membuat keputusan untuk melakukan lebih banyak shorting.

Prinsip Strategi

  1. Perhitungan persentase Brin Belt ((BB%) BB% menunjukkan perbedaan standar harga relatif terhadap Brin Belt, dengan arah pasar yang ditentukan oleh Brin Belt Channel
  2. Kombinasi indikator RSI dan MFI untuk menilai overbought dan oversold. RSI menilai overbought dan oversold dengan membandingkan kenaikan rata-rata dan penurunan rata-rata dalam jangka waktu tertentu. MFI menilai overbought dan oversold dengan membandingkan kenaikan volume transaksi dan penurunan volume transaksi.
  3. Ketika harga dari bawah ke atas menerobos Bollinger Bands down, lakukan over; ketika harga dari atas ke bawah menerobos Bollinger Bands up, lakukan short.

Keunggulan Strategis

  1. Berdagang dengan tren, menghindari tren pasar, dan mengurangi fluktuasi pendapatan.
  2. Ini adalah salah satu metode yang paling populer untuk memfilter data dari berbagai indikator, dan meningkatkan akurasi pengambilan keputusan.
  3. Pengaturan parameter fleksibel, dapat disesuaikan dengan karakteristik risiko dan keuntungan strategi.
  4. Ini berlaku untuk komoditas, mata uang asing, mata uang kripto, dan indikator volatilitas tinggi.

Risiko dan Solusi

  1. Penembusan pita Brin memiliki probabilitas yang lebih tinggi untuk menghasilkan sinyal palsu, yang memerlukan kombinasi filter dari beberapa indikator.
  2. Penghakiman terhadap sinyal terobosan membutuhkan kelonggaran yang tepat untuk menghindari kehilangan kesempatan yang baik.
  3. Mengatur pengaturan parameter untuk mengontrol risiko, seperti mengubah ukuran posisi, meningkatkan Stop Loss Line, dll.

Arah optimasi

  1. Menambahkan mekanisme stop loss berdasarkan volatilitas, seperti indikator ATR.
  2. Masukkan model pembelajaran mesin untuk membantu menilai kualitas sinyal penembusan.
  3. Mengoptimalkan mekanisme pemilihan varietas yang berpartisipasi, dan secara dinamis menyesuaikan kriteria partisipasi.
  4. Ini adalah salah satu metode yang digunakan untuk mengevaluasi dan mengevaluasi keputusan.

Meringkaskan

Strategi ini terutama diterapkan pada varietas non-trend yang berfluktuasi tinggi, dan trading off-trend dapat dilakukan dengan menilai kombinasi jalur Brin dan indikator. Risiko dan karakteristik keuntungan dapat dikontrol dengan menyesuaikan parameter.

Kode Sumber Strategi
/*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()