Berbagai Strategi Moving Average Bollinger Band


Tanggal Pembuatan: 2024-02-06 15:08:26 Akhirnya memodifikasi: 2024-02-06 15:08:26
menyalin: 4 Jumlah klik: 632
1
fokus pada
1617
Pengikut

Berbagai Strategi Moving Average Bollinger Band

Ringkasan

Strategi ini membangun Brinks dengan memasukkan berbagai jenis Moving Average untuk mengeksplorasi lebih banyak peluang trading. Ini menawarkan 12 jenis Moving Average yang dapat dikombinasikan secara fleksibel untuk mendapatkan parameter terbaik.

Prinsip Strategi

Inti dari strategi ini adalah memanfaatkan 12 jenis rata-rata bergerak yang dimasukkan oleh pengguna, termasuk SMA, EMA, WMA, DEMA, TMA, VAR, WWMA, ZLEMA, TSF, HULL, TILL, dan lain-lain, untuk membentuk sinyal perdagangan. Rata-rata bergerak yang dipilih oleh garis tengah Brin Belt, masing-masing di atas dan di bawah garis tengah adalah negatif satu selisih standar.

Kode ini terdiri dari:

  1. Definisi fungsi perhitungan dari 12 jenis moving average, termasuk SMA, EMA, WMA, dan lain-lain.
  2. Fungsi getMA, berdasarkan parameter masukan mav, mengembalikan moving average yang sesuai.
  3. Hitung garis tengah, garis atas, dan garis bawah dari jalur Brin. Garis tengah menggunakan fungsi getMA sebagai rata-rata bergerak.
  4. Menggambar Brin Belt
  5. Sinyal pertumbuhan dan sinyal kosong. Harga menerobos tren naik dengan kepala kosong, dan menerobos tren turun dengan kepala banyak.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah menyediakan berbagai jenis rata-rata bergerak. Dalam berbagai kondisi pasar, rata-rata bergerak bereaksi dengan kecepatan yang berbeda. Penggunaan berbagai jenis rata-rata bergerak dapat secara signifikan meningkatkan kemampuan strategi untuk beradaptasi. Selain itu, strategi ini dapat mengoptimalkan parameter panjang rata-rata bergerak untuk mencari kombinasi terbaik, sehingga mendapatkan sinyal perdagangan yang lebih akurat.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa pergerakan rata-rata itu sendiri bercampur dengan sinyal yang bercampur dengan kemungkinan adanya beberapa false breakout. Selain itu, indikator Bollinger Bands juga sangat sensitif terhadap perubahan harga yang drastis, dan garis tengah tidak dapat secara efektif melacak harga. Ini memerlukan jenis pergerakan rata-rata yang lebih stabil dan menyesuaikan parameter dengan tepat.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Uji kombinasi rata-rata bergerak yang berbeda untuk mencari parameter optimal dan meningkatkan stabilitas sinyal.
  2. Menambahkan strategi stop loss untuk memastikan pengendalian kerugian dari sinyal yang salah secara individual.
  3. Bergabung dengan indikator lain untuk memfilter sinyal, menghindari perdagangan yang sering. Misalnya MACD, KD, dll.
  4. Optimalkan pengelolaan dana dan penyesuaian posisi.

Meringkaskan

Strategi ini sangat inovatif secara keseluruhan, memberikan aplikasi yang lebih kaya untuk segmen indikator Brin-band. Dengan menyesuaikan portofolio moving average, sinyal yang lebih akurat dan stabil dapat diperoleh. Ini juga memberikan ide-ide baru untuk optimasi strategi Brin-band. Dengan penyesuaian dan pengoptimalan parameter, strategi ini dapat menjadi alat perdagangan yang sangat praktis.

Kode Sumber Strategi
/*backtest
start: 2023-01-30 00:00:00
end: 2023-10-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands Strategy (MA type)", overlay=true)
src = input(close, title="Source")
length = input(20,step=10, minval=1)
mult = input(1,type=input.float, minval=0.001, maxval=50, title="StdDev")

length1=input(26, "Long Moving Average Length", minval=1)
length2=input(9, "Trigger Length", minval=1)
T3a1 = input(0.7, "TILLSON T3 Volume Factor", step=0.1)
////////////
mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "DEMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF", "HULL", "TILL"])
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
DEMA = ( 2 * ema(src,length)) - (ema(ema(src,length),length) )
Wwma_Func(src,length)=>
    wwalpha = 1/ length
    WWMA = 0.0
    WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1])
WWMA=Wwma_Func(src,length)
Zlema_Func(src,length)=>
    zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2
    zxEMAData = (src + (src - src[zxLag]))
    ZLEMA = ema(zxEMAData, length)
ZLEMA=Zlema_Func(src,length)
Tsf_Func(src,length)=>
    lrc = linreg(src, length, 0)
    lrc1 = linreg(src,length,1)
    lrs = (lrc-lrc1)
    TSF = linreg(src, length, 0)+lrs
TSF=Tsf_Func(src,length)
HMA = wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))
T3e1=ema(src, length)
T3e2=ema(T3e1,length)
T3e3=ema(T3e2,length)
T3e4=ema(T3e3,length)
T3e5=ema(T3e4,length)
T3e6=ema(T3e5,length)
T3c1=-T3a1*T3a1*T3a1
T3c2=3*T3a1*T3a1+3*T3a1*T3a1*T3a1
T3c3=-6*T3a1*T3a1-3*T3a1-3*T3a1*T3a1*T3a1
T3c4=1+3*T3a1+T3a1*T3a1*T3a1+3*T3a1*T3a1
T3=T3c1*T3e6+T3c2*T3e5+T3c3*T3e4+T3c4*T3e3


getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma

    if mav == "DEMA"
        ma := DEMA
        ma

    if mav == "TMA"
        ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1)
        ma

    if mav == "VAR"
        ma := VAR
        ma

    if mav == "WWMA"
        ma := WWMA
        ma

    if mav == "ZLEMA"
        ma := ZLEMA
        ma

    if mav == "TSF"
        ma := TSF
        ma

    if mav == "HULL"
        ma := HMA
        ma

    if mav == "TILL"
        ma := T3
        ma
    ma
    
//////////
basis = getMA(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset",minval = -500, maxval = 500)
plot(basis, "Basis",color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
/////////
buyEntry = crossover(src, lower)
sellEntry = crossunder(src, upper)
if (crossover(src, lower))
	strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
	strategy.cancel(id="BBandLE")
if (crossunder(src, upper))
	strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
	strategy.cancel(id="BBandSE")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)