Strategi Konsolidasi Bollinger Bands

Penulis:ChaoZhang, Tanggal: 2024-02-22 13:43:14
Tag:

img

Gambaran umum

Strategi konsolidasi Bollinger Bands adalah strategi terobosan yang mengidentifikasi fase konsolidasi volatilitas rendah menggunakan Bollinger Bands. Ketika pasar memasuki periode rentang, Bollinger Bands akan konvergen, menandakan kesempatan untuk memasuki pasar.

Logika Strategi

Strategi ini terutama bergantung pada Bollinger Bands untuk mendeteksi ketika harga memasuki fase konsolidasi volatilitas rendah. Band tengah Bollinger Bands adalah rata-rata pergerakan harga penutupan. Band atas dan bawah diimbangi oleh dua deviasi standar di atas dan di bawah band tengah. Ketika volatilitas menurun, jarak antara band atas dan bawah menyempit secara nyata.

Untuk lebih membuktikan penurunan volatilitas, kita memeriksa apakah rata-rata pergerakan nilai ATR memiliki tren menurun. Penurunan rata-rata ATR juga mengkonfirmasi dari sisi bahwa volatilitas menurun. Ketika kedua kondisi terpenuhi secara bersamaan, kita menentukan Bollinger Bands telah menunjukkan konvergensi yang signifikan, yang merupakan peluang pembelian yang sangat baik.

Setelah membeli, kita mengaktifkan strategi stop loss bergerak dengan jarak stop loss dua kali nilai ATR. Ini secara efektif mengendalikan kerugian.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah dapat menentukan dengan akurat kapan pasar memasuki fase konsolidasi volatilitas rendah dan mengidentifikasi peluang pembelian terbaik.

Selain itu, strategi ini juga menggunakan stop loss bergerak untuk secara aktif mengendalikan risiko. Ini memaksimalkan pengurangan kerugian bahkan ketika sentimen pasar tidak menguntungkan. Banyak strategi jangka panjang tidak memiliki ini.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa indikator Bollinger Bands tidak dapat secara akurat menentukan perubahan volatilitas harga 100% dari waktu. Ketika Bollinger Bands salah menilai bahwa volatilitas telah menurun, waktu masuk kita mungkin tidak menguntungkan. Pada titik ini, stop loss bergerak memainkan peran penting dan dapat keluar dari perdagangan secepat mungkin.

Selain itu, pengaturan berbagai parameter dalam strategi juga akan mempengaruhi hasilnya.

Arahan Optimasi

Kami dapat mempertimbangkan untuk menambahkan indikator lain untuk mengkonfirmasi tanda-tanda perubahan pada indikator tren ketika Bollinger Bands konvergen. Misalnya, ketika Bollinger Bands konvergen, kami juga memerlukan bahwa perbedaan MACD telah berubah dari positif menjadi negatif, atau RSI telah menarik diri dari zona overbought. Ini dapat lebih meningkatkan keakuratan sinyal pembelian.

Arah lain adalah untuk menguji dampak dari pengaturan parameter yang berbeda pada hasil, seperti periode Bollinger Bands, ATR dan pengganda stop loss bergerak.

Kesimpulan

Strategi konsolidasi Bollinger Bands menggunakan Bollinger Bands untuk menentukan waktu penurunan volatilitas harga dan menggunakan stop loss bergerak untuk mengontrol risiko secara efektif. Ini adalah strategi breakout jangka panjang yang relatif stabil.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © DojiEmoji

//@version=4
strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1)

// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }

// Indicator: BOLL bands {
BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)")
BOLL_src = close
BOLL_center = sma(BOLL_src, BOLL_length)
BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_center + BOLL_sDEV_x2
BOLL_lower = BOLL_center - BOLL_sDEV_x2
plot(BOLL_center, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// ATR and volatility Indicator {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_volat = sma(ATR_x2, BOLL_length)
//}

// Trailing stop loss {
var entry_price = float(0)
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
trail_profit_line_color = color.green
UPDATE_ATR_TSL = false
if strategy.position_size == 0 or not within_timeframe // make TSL line less visible
    trail_profit_line_color := color.black
    stop_loss_price := close - trailing_SL_buffer
else if strategy.position_size > 0
    if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer
        trailing_SL_buffer := ATR_x2
    stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer)
plot(stop_loss_price,color=trail_profit_line_color)
// }


IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)")
IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)")
// Main:
if within_timeframe
    // ENTRY:
    if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY)
        if strategy.position_size == 0
            entry_price := close
            trailing_SL_buffer := ATR_x2
            stop_loss_price := close - ATR_x2
            strategy.entry("Long",strategy.long, comment="enter")
        if strategy.position_size > 0
            strategy.entry("Long",strategy.long, comment="+")

    // EXIT:
    if strategy.position_size > 0
        if low <= stop_loss_price
            if close > entry_price
                strategy.close("Long", comment="take profit")
            else if low <= entry_price
                strategy.close("Long", comment="stop loss")
    
            if strategy.position_size == 0
                entry_price := 0
                

Lebih banyak