Strategi detrending berdasarkan penunjuk peratusan Bollinger Bands


Tarikh penciptaan: 2023-12-06 14:43:39 Akhirnya diubah suai: 2023-12-06 14:43:39
Salin: 0 Bilangan klik: 651
1
fokus pada
1619
Pengikut

Strategi detrending berdasarkan penunjuk peratusan Bollinger Bands

Gambaran keseluruhan

Strategi ini adalah berdasarkan pada peratusan Bollinger Bands yang digabungkan dengan RSI dan MFI, dengan mengesan harga produk kewangan yang menembusi Bollinger Bands ke arah bawah, digabungkan dengan RSI oversold overbought dan MFI oversold overbought isyarat, membuat keputusan untuk melakukan lebih banyak shorting.

Prinsip Strategi

  1. Hitung peratusan Brin Belt ((BB%) BB% menunjukkan perbezaan piawai harga berbanding Brin Belt, menilai arah pasaran melalui Brin Belt Channel
  2. Menggabungkan RSI dan MFI untuk menilai overbought dan oversold. RSI menilai overbought dan oversold dengan membandingkan kenaikan dan penurunan purata dalam jangka masa tertentu. MFI menilai overbought dan oversold dengan membandingkan peningkatan dan penurunan jumlah transaksi.
  3. Apabila harga dari bawah ke atas menembusi Bollinger Bands ke bawah, buat lebih banyak; apabila harga dari atas ke bawah menembusi Bollinger Bands ke atas, buat kosong.

Kelebihan Strategik

  1. Berdagang mengikut trend, mengelakkan pergerakan pasaran, dan mengurangkan turun naik pendapatan.
  2. Ia juga boleh digunakan untuk menyaring isyarat dari pelbagai indikator untuk meningkatkan ketepatan keputusan.
  3. Tetapan parameter fleksibel dan boleh disesuaikan dengan ciri risiko dan keuntungan strategi.
  4. Ia berlaku untuk komoditi, mata wang asing, mata wang kripto dan lain-lain yang mempunyai nilai yang tinggi.

Risiko dan penyelesaian

  1. Kesempatan yang lebih besar untuk penembusan tali pinggang Brin menghasilkan isyarat palsu, yang memerlukan penapisan gabungan pelbagai indikator.
  2. Ia perlu diberi kelonggaran yang sesuai untuk menilai isyarat penembusan dan mengelakkan kehilangan peluang yang baik.
  3. Menyesuaikan parameter yang ditetapkan untuk mengawal risiko, seperti menyesuaikan saiz kedudukan, menaikkan garis berhenti, dan sebagainya.

Arah pengoptimuman

  1. Menambah mekanisme penangguhan berdasarkan kadar turun naik, seperti ATR.
  2. Memperkenalkan model pembelajaran mesin untuk membantu menilai kualiti isyarat penembusan.
  3. Mengoptimumkan mekanisme pemilihan varieti yang terlibat, menyesuaikan secara dinamik sasaran yang terlibat.
  4. Menggabungkan faktor-faktor lain seperti penunjuk emosi, berita, dan lain-lain untuk menyempurnakan sistem keputusan.

ringkaskan

Strategi ini digunakan terutamanya untuk varieti bukan trend yang bergelombang tinggi, dan perdagangan non-trend dapat dicapai melalui penilaian gabungan saluran Brin dan indikator. Dengan menyesuaikan parameter, ciri-ciri keuntungan risiko dapat dikendalikan. Kemudian, lebih banyak indikator dan model tambahan dapat diperkenalkan untuk mengoptimumkan kualiti keputusan, yang akan memberikan prestasi strategi yang lebih baik.

Kod 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()