Strategi Penguncian Osilasi Pita Lebar


Tanggal Pembuatan: 2024-02-22 13:43:14 Akhirnya memodifikasi: 2024-02-22 13:43:14
menyalin: 0 Jumlah klik: 443
1
fokus pada
1224
Pengikut

Strategi Penguncian Osilasi Pita Lebar

Ringkasan

Strategi penutupan gelombang lebar adalah strategi penembusan garis panjang yang didasarkan pada indikator Burin untuk menentukan apakah volatilitas pasar telah berkurang. Ketika pasar memasuki tahap penyusunan gelombang, Burin akan berada di bawah rel, dan pada saat itu kami menilai peluang masuk ke dalam. Kami juga mengkombinasikan indikator rata-rata rentang fluktuasi nyata untuk mengkonfirmasi penurunan volatilitas harga.

Prinsip Strategi

Strategi ini terutama bergantung pada indikator Brin untuk menentukan apakah harga memasuki periode getaran rendah. Garis tengah Brin adalah rata-rata bergerak dari harga penutupan, dengan dua selisih standar di atas dan di bawah masing-masing selisih yang bergeser ke atas dan ke bawah. Ketika volatilitas harga berkurang, selisih selisih di atas dan di bawah akan menjadi lebih jelas.

Untuk lebih mengkonfirmasi turunnya volatilitas, kami memeriksa apakah rata-rata bergerak nilai ATR menunjukkan tren turun. Penurunan nilai ATR rata-rata juga merupakan bukti dari sisi bahwa volatilitas sedang menurun. Ketika kedua kondisi di atas terpenuhi, kami menilai bahwa Bollinger Bands telah menunjukkan konvergensi yang jelas, dan ini adalah waktu yang tepat untuk membeli.

Setelah kita membeli, kita akan mengaktifkan strategi stop loss mobile dengan dua kali nilai ATR sebagai jarak stop loss.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah kemampuan untuk secara akurat menilai pasar memasuki periode penyusunan getaran yang rendah, sehingga menentukan waktu pembelian yang optimal. Dibandingkan dengan strategi garis panjang lainnya, peluang keuntungan yang lebih tinggi dari strategi penutupan getaran broadband.

Kedua, strategi ini juga menggunakan stop loss bergerak untuk mengontrol risiko secara aktif. Hal ini memungkinkan untuk meminimalkan kerugian bahkan dalam situasi yang tidak menguntungkan. Ini adalah sesuatu yang kurang dari banyak strategi lini panjang.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa indikator Bollinger Bands tidak dapat 100 persen menentukan perubahan volatilitas harga. Ketika volatilitas Bollinger Bands turun, kita mungkin membeli pada waktu yang tidak menguntungkan. Pada saat ini, stop loss bergerak memainkan peran penting untuk menghentikan kerugian dan keluar secepat mungkin.

Selain itu, pengaturan berbagai parameter dalam strategi juga dapat mempengaruhi hasil. Kita perlu mengoptimalkan parameter dengan banyak umpan balik untuk membuat strategi lebih kuat.

Arah optimasi

Kita dapat mempertimbangkan untuk menambahkan indikator lain untuk mengkonfirmasi bahwa indikator tren juga menunjukkan tanda-tanda pergeseran. Misalnya, ketika Brin berkurang, kita juga meminta bahwa MACD telah bergeser positif, atau RSI telah terdeteksi oleh zona overbought. Ini dapat meningkatkan akurasi waktu pembelian lebih lanjut.

Cara lain adalah dengan menguji efek dari berbagai parameter pada hasil, seperti pengaturan siklus Brin, siklus ATR, dan pengganda stop loss bergerak. Kita perlu menggunakan optimasi stepwise untuk menemukan kombinasi parameter yang optimal.

Meringkaskan

Broadband Shake Locking Strategy adalah strategi yang relatif stabil untuk menembus garis panjang dengan menggunakan indikator Brin Band untuk menentukan kapan turunnya volatilitas harga, dan menggunakan Stop Loss Mobile untuk mengontrol risiko secara efektif. Kami masih perlu mengoptimalkan parameter lebih lanjut dan menggabungkan indikator lain untuk meningkatkan kehandalan strategi.

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