Strategi breakout bullish berdasarkan Bollinger Bands dan VWAP


Tanggal Pembuatan: 2024-02-06 14:36:26 Akhirnya memodifikasi: 2024-02-06 14:36:26
menyalin: 1 Jumlah klik: 885
1
fokus pada
1617
Pengikut

Strategi breakout bullish berdasarkan Bollinger Bands dan VWAP

Ringkasan

Strategi ini menggunakan indikator Burin untuk melacak VWAP, memutuskan bahwa VWAP naik menerobos lintasan tengah Burin dan mengambil strategi multihead; dan memutuskan bahwa VWAP turun menerobos lintasan bawah Burin dan memastikan posisi kosong, dan keluar dari lapangan. Strategi ini juga memperkenalkan Pivot Point sebagai penunjang penilaian utama untuk sinyal masuk, sehingga dapat menyaring beberapa terobosan palsu.

Prinsip Strategi

  1. Menghitung nilai VWAP.
  2. Untuk menghitung VWAP, band Brin terdiri dari jalur atas, tengah, dan bawah.
  3. Periksa apakah VWAP akan menembus Brin Belt Mid-Trail ke atas, dan jika demikian, maka harga akan berada di atas Pivot Point yang merupakan dukungan utama, dan masuk dengan strategi multi-head.
  4. Stop loss ditetapkan sebesar 5%.
  5. Jika VWAP menembus Brin ke bawah, maka kepala kosong dianggap telah dikonfirmasi, dan posisi kosong akan dihilangkan; jika stop loss dipicu, maka posisi kosong akan dihilangkan.

Analisis Keunggulan

  1. VWAP memiliki kemampuan pelacakan tren yang sangat kuat, yang dikombinasikan dengan pembukaan Brinks untuk menilai tren secara akurat.
  2. Menambahkan Pivot Point sebagai kondisi tambahan, dapat menyaring banyak terobosan palsu dan menghindari kerugian yang tidak perlu.
  3. Mengadopsi strategi keluar sebagian, dapat mengunci sebagian keuntungan, mengendalikan risiko.
  4. Hasil pengamatan menunjukkan bahwa strategi ini bekerja dengan baik di pasar bullish dan memiliki stabilitas yang lebih tinggi.

Analisis risiko

  1. Dalam situasi gempa bumi, kemungkinan terjadi penembusan palsu yang mengakibatkan kerugian.
  2. Pivot Point tidak dapat sepenuhnya menghindari penembusan palsu, perlu menggabungkan lebih banyak indikator filter sinyal.
  3. Sebagian dari mereka telah meninggalkan pasar untuk meningkatkan frekuensi operasi dan meningkatkan biaya transaksi.
  4. Di pasar beruang, tidak ada efek yang optimal, dan perlu dilakukan pengendalian risiko yang baik.

Arah optimasi

  1. Dapat dikombinasikan dengan MACD, KDJ dan indikator lainnya untuk membantu memfilter sinyal masuk dan keluar.
  2. Kombinasi parameter yang optimal dapat ditemukan dengan mengoptimalkan panjang dan standar deviasi pita Brin.
  3. Algoritma pembelajaran mesin dapat diperkenalkan untuk mengoptimalkan parameter Brin secara dinamis.
  4. Anda dapat menguji berbagai tingkat penghentian untuk menemukan titik penghentian yang optimal.
  5. Adaptive Exit Mechanism (AEM) dapat disertakan untuk menyesuaikan target profit dengan volatilitas pasar.

Meringkaskan

Strategi ini secara keseluruhan adalah sistem terobosan yang stabil. Cara pengoperasiannya adalah standar, parameter optimasi ruang yang besar, cocok untuk perdagangan kuantitatif. Selain itu, perlu juga memperhatikan pengendalian risiko, pencegahan kerugian yang disebabkan oleh perilaku yang tidak biasa. Secara keseluruhan, ini adalah strategi terobosan yang layak untuk diteliti secara mendalam dan terus dioptimalkan.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ediks123

//@version=4
strategy("BBofVWAP with entry at Pivot Point", overlay=false, pyramiding=1,   default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

// Function outputs 1 when it's the first bar of the D/W/M/Y
is_newbar(res) =>
    ch = 0
    if(res == 'Y')
        t  = year(time('D'))
        ch := change(t) != 0 ? 1 : 0
    else
        t = time(res)
        ch := change(t) != 0 ? 1 : 0
    ch


//variables BEGIN
//smaLength=input(200,title="Slow MA Length")

bbLength=input(50,title="BB Length")  
//bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

pp_period = input(title = "Pivot Period", type=input.string, defval="Week", options = ['Day', 'Week'])

pp_res = pp_period == 'Day' ? 'D' : pp_period == 'Week' ? 'W' : pp_period == 'Month' ? 'M' : 'Y' 

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)



//sma200=sma(close,smaLength)
//plot(sma200, title="SMA 200", color=color.orange)

myVwap=vwap(hlc3)

//bollinger calculation
basis = sma(myVwap, bbLength)
dev = mult * stdev(myVwap, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)

plot(myVwap, title="VWAP", color=color.purple)


//pivot points 


// Calc High
high_cur = 0.0
high_cur := is_newbar(pp_res) ? high : max(high_cur[1], high)

phigh = 0.0
phigh := is_newbar(pp_res) ? high_cur[1] : phigh[1]

// Calc Low
low_cur = 0.0
low_cur := is_newbar(pp_res) ? low : min(low_cur[1], low)

plow = 0.0
plow := is_newbar(pp_res) ? low_cur[1] : plow[1]

// Calc Close
pclose = 0.0
pclose := is_newbar(pp_res) ? close[1] : pclose[1]


vPP = (phigh + plow + pclose) / 3

//pivot points


//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="BB_VWAP_PP",long=true, qty=qty1, when=   crossover(myVwap,basis)  and close>=vPP  )

bgcolor(strategy.position_size>=1?color.blue:na, transp=75)
barcolor(strategy.position_size>=1?color.green:na)

stopLossVal=  strategy.position_size>=1 ?  close * (1 - (stopLoss*0.01) ) : 0.00

//partial exit
//strategy.close(id="BBofVwap", qty=strategy.position_size/3, when=crossunder(myVwap,upperBand) and strategy.position_size>=1 )  //and close>strategy.position_avg_price)



//exit on lowerband or stoploss 
strategy.close(id="BB_VWAP_PP", comment="P" , qty=strategy.position_size/3, when= crossunder(myVwap,upperBand) and strategy.position_size>=1 and close>strategy.position_avg_price)  //
strategy.close(id="BB_VWAP_PP", comment="Exit All", when=crossunder(myVwap,lowerBand) and strategy.position_size>=1 )
//strategy.close(id="BBofVwapWithFibPivot", comment="Exit All", when=crossunder(close,vPP) and strategy.position_size>=1 )

strategy.close(id="BB_VWAP_PP", comment="Stop Loss Exit", when=crossunder(close,stopLossVal) and strategy.position_size>=1 )