Strategi Mengikuti Tren Penembusan Bollinger Band


Tanggal Pembuatan: 2023-09-22 14:31:17 Akhirnya memodifikasi: 2023-09-22 14:31:17
menyalin: 1 Jumlah klik: 678
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini adalah strategi pelacakan tren yang didasarkan pada indikator Bollinger Bands. Strategi ini menggunakan Bollinger Bands breakdown untuk menentukan arah tren dan membuka posisi di arah yang sesuai. Ketika harga mulai turun, stop loss pelacakan dengan interval dinamis digunakan untuk keluar dari posisi dan menghasilkan keuntungan.

Prinsip Strategi

Strategi ini menggunakan indikator Brin Belt untuk menentukan arah tren. Brin Belt membangun uptrend dengan menghitung standar deviasi harga. Ketika harga menembus uptrend, dianggap bahwa tren dimulai ke atas; Ketika harga menembus downtrend, dianggap bahwa tren dimulai ke bawah.

Logika transaksi adalah sebagai berikut:

  1. Perhitungan rel tengah, rel atas dan rel bawah di sabuk Brin.

  2. Ketika harga menembus tren naik, buka lebih banyak; Ketika harga menembus tren turun, buka kosong.

  3. Menggunakan tracking stop loss untuk mengendalikan risiko, dan stop loss ketika harga mulai turun.

  4. Pada saat menembus kembali orbit Brin, kembali masuk ke tren.

Menggunakan Brinband untuk menentukan arah tren, dan bekerja dengan stop loss pelacakan dinamis, dapat secara efektif mengendalikan risiko.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan indikator Brin untuk menilai tren, sederhana dan efektif.

  2. Kombinasi dari breakout entry dan trailing stop loss yang dinamis, dengan trend capture dan kontrol risiko.

  3. Struktur kodenya jelas dan ringkas, mudah dipahami dan dimodifikasi.

  4. Parameter yang lebih sedikit, lebih mudah untuk dioptimalkan.

  5. Cocok untuk berbagai varietas, fleksibel.

  6. Hasil pengamatan yang baik, ruang untuk keuntungan yang besar.

Analisis risiko

Risiko utama dari strategi ini adalah:

  1. Beringin hanya didasarkan pada karakteristik statistik dan memiliki risiko pada fit-the-curve.

  2. Tidak dapat membedakan antara ekspansi dan tren yang sebenarnya, dan mungkin salah persepsi.

  3. Stop loss point terlalu padat, mungkin akan terganggu oleh pergerakan harga normal.

  4. Tidak mempertimbangkan dampak biaya transaksi.

  5. Waktu yang dibutuhkan untuk melakukan deteksi terbatas, mungkin terlalu banyak.

Solusi yang sesuai:

  1. Optimalkan parameter atau masukkan sinyal validasi indikator lainnya.

  2. Meningkatkan identifikasi getaran dan saluran.

  3. Berdasarkan indikator ATR, stop loss disesuaikan secara dinamis.

  4. Tambahkan biaya, perhitungan titik slip.

  5. Meningkatkan jangka waktu pengujian ulang, multi-pasar verifikasi.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Uji efek kombinasi dari berbagai indikator.

  2. Meningkatkan identifikasi terhadap tren yang bergejolak.

  3. Masukkan parameter pengoptimalan dinamis dari metode pembelajaran mesin.

  4. Optimalkan strategi stop loss berdasarkan feedback.

  5. Evaluasi dan penambahan biaya transaksi.

  6. Optimalkan parameter spasial untuk mencari parameter optimal Settings。

  7. Meningkatkan manajemen uang untuk mengendalikan risiko posisi.

Meringkaskan

Strategi ini menilai arah tren melalui indikator Brinband dan dilengkapi dengan tracking stop loss untuk mengendalikan risiko. Logika perdagangan keseluruhan sederhana dan jelas. Strategi ini memiliki efek menangkap tren yang baik, tetapi dapat ditingkatkan dengan memperkenalkan lebih banyak indikator teknis, parameter optimasi, dan menambahkan perhitungan biaya untuk membuat strategi lebih stabil dan dapat diandalkan.

Kode Sumber Strategi
/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)

// Inputs //

sma = input(20,  minval=1)
mult   = input(1.2, minval=0.001, maxval=50)
src = input(close)

// alert msg  //

message_long_entry  = input("long entry")
message_short_entry = input("short entry")

// Calculations //

basis = sma(close, sma)
dev   = mult * stdev(close, sma)

upper = basis + dev
lower = basis - dev

// Backtest //
fromyear = input(2019, defval = 2019, 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(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

leverage = input(1, "Leverage")

term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

// PLOT //

plot(basis, color = color.gray,  linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red,   linewidth = 2)

fill(lu, ll, color = color.gray)

// Signals //

long  = crossover(close, upper)
short = crossunder(close, lower)

// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
    strategy.entry("long",  strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
    
if (short and term)
    strategy.entry("short",  strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)

// strategy exit //

strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)