Strategi perdagangan kuantitatif terobosan pita Bollinger deviasi standar rangkap tiga dikombinasikan dengan pengoptimalan rata-rata pergerakan 100 hari

MA BB SMA SD
Tanggal Pembuatan: 2024-12-13 11:20:13 Akhirnya memodifikasi: 2024-12-13 11:20:13
menyalin: 3 Jumlah klik: 483
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif terobosan pita Bollinger deviasi standar rangkap tiga dikombinasikan dengan pengoptimalan rata-rata pergerakan 100 hari

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada Brin Belt Breakout, menggunakan uptrend 3 kali standar deviasi dan downtrend 1 kali standar deviasi, sambil menggabungkan 100 hari moving average sebagai midtrend. Strategi ini terutama menangkap tren jangka panjang dengan mendeteksi harga yang menerobos uptrend, dan menggunakan downtrend sebagai sinyal stop loss.

Prinsip Strategi

Prinsip inti dari strategi ini adalah berdasarkan pada karakteristik statistik Brin Belt. Dengan menggunakan 3 kali standar deviasi di atas, yang berarti bahwa dalam asumsi distribusi normal, probabilitas harga untuk menembus tren hanya 0,15%, sehingga ketika terjadi penembusan, seringkali menunjukkan tren yang signifikan. Dengan menggunakan rata-rata bergerak 100 hari di tengah, siklus ini cukup panjang untuk menyaring kebisingan pasar jangka pendek secara efektif. Dengan menggunakan 1 kali standar deviasi di bawah, sebagai garis stop loss, pengaturan ini relatif konservatif dan membantu menghentikan kerugian tepat waktu.

Keunggulan Strategis

  1. Kemampuan menangkap tren yang kuat: Dengan setelan standar deviasi 3x, peluang terobosan tren yang penting dapat ditangkap secara efektif.
  2. Pengendalian risiko masuk akal: Menggunakan 1 kali standar deviasi sebagai garis stop loss, lebih konservatif dalam pengendalian risiko.
  3. Parameter dapat disesuaikan: Standar deviasi ganda dan siklus rata-rata bergerak naik turun dapat disesuaikan sesuai dengan karakteristik pasar yang berbeda.
  4. Sistematis: Strategi logis yang jelas, fitur pengembalian yang baik, dapat akurat statistik kinerja perdagangan.
  5. Adaptasi luas: dapat diterapkan di berbagai bidang seperti pasar saham dan pasar cryptocurrency.

Risiko Strategis

  1. Risiko False Breakthrough: Pasar mungkin mengalami penurunan cepat setelah terobosan jangka pendek, yang menyebabkan sinyal palsu.
  2. Penarikan yang lebih besar: Penarikan yang lebih besar dapat terjadi di pasar yang sangat berfluktuasi.
  3. Resiko keterlambatan: 100 hari rata-rata garis memiliki keterlambatan tertentu, mungkin kehilangan beberapa tren cepat.
  4. Ketergantungan pada kondisi pasar: mungkin sering masuk dan keluar di pasar yang bergejolak, yang menghasilkan biaya transaksi yang berlebihan.

Arah optimasi strategi

  1. Pengenalan Konfirmasi Transmisi: Mekanisme Konfirmasi Penembusan Transmisi dapat ditambahkan untuk meningkatkan keandalan sinyal.
  2. Optimalkan mekanisme stop loss: Anda dapat mempertimbangkan untuk memperkenalkan stop loss tracking atau stop loss dinamis ATR untuk meningkatkan fleksibilitas stop loss.
  3. Tambahkan filter tren: Anda dapat menambahkan indikator untuk menilai tren jangka panjang, hanya berdagang di arah tren utama.
  4. Optimalkan manajemen posisi: Anda dapat menyesuaikan ukuran posisi Anda sesuai dengan dinamika kekuatan terobosan.
  5. Tambahkan filter waktu: Anda dapat menghindari perdagangan pada waktu pasar tertentu.

Meringkaskan

Ini adalah strategi pelacakan tren yang dirancang dengan logika yang jelas dan logis. Dengan fitur pelacakan tren dari statistik dan rata-rata bergerak dari Brin Belt, Anda dapat secara efektif menangkap peluang terobosan penting di pasar. Meskipun ada beberapa risiko penarikan, Anda masih memiliki nilai praktis yang baik dengan pengaturan dan pengendalian risiko yang masuk akal.

Kode Sumber Strategi
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MounirTrades007

// @version=6
strategy("Bollinger Bands", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Get user input
var g_bb        = "Bollinger Band Settings"
upperBandSD     = input.float(title="Upper Band Std Dev", defval=3.0, tooltip="Upper band's standard deviation multiplier", group=g_bb)
lowerBandSD     = input.float(title="Lower Band Std Dev", defval=1.0, tooltip="Lower band's standard deviation multiplier", group=g_bb)
maPeriod        = input.int(title="Middle Band MA Length", defval=100, tooltip="Middle band's SMA period length", group=g_bb)
var g_tester    = "Backtester Settings"
drawTester      = input.bool(title="Draw Backtester", defval=true, group=g_tester, tooltip="Turn on/off inbuilt backtester display")

// Get Bollinger Bands
[bbIgnore1, bbHigh, bbIgnore2] = ta.bb(close, maPeriod, upperBandSD)
[bbMid, bbIgnore3, bbLow]      = ta.bb(close, maPeriod, lowerBandSD)

// Prepare trade persistent variables
drawEntry   = false
drawExit    = false

// Detect bollinger breakout
if close > bbHigh and barstate.isconfirmed and strategy.position_size == 0
    drawEntry := true
    strategy.entry(id="Trade", direction=strategy.long)
    alert("Bollinger Breakout Detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Detect bollinger sell signal
if close < bbLow and barstate.isconfirmed and strategy.position_size != 0
    drawExit := true
    strategy.close(id="Trade")
    alert("Bollinger Exit detected for " + syminfo.ticker, alert.freq_once_per_bar_close)

// Draw bollinger bands
plot(bbMid, color=color.blue, title="Middle SMA")
plot(bbHigh, color=color.green, title="Upper Band")
plot(bbLow, color=color.red, title="Lower Band")

// Draw signals
plotshape(drawEntry, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.normal, title="Buy Signal")
plotshape(drawExit, style=shape.xcross, color=color.red, location=location.belowbar, size=size.normal, title="Sell Signal")

// // =============================================================================
// // START BACKTEST CODE
// // =============================================================================

// // Prepare stats table
// var table testTable = table.new(position.top_right, 2, 2, border_width=1)
// f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) =>
//     _cellText = _title + "\n" + _value
//     table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor)

// // Draw stats table
// var bgcolor = color.black
// if barstate.islastconfirmedhistory
//     if drawTester
//         dollarReturn = strategy.equity - strategy.initial_capital
//         f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white)
//         f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(strategy.wintrades / strategy.closedtrades * 100, "##.##") + "%", bgcolor, color.white)
//         f_fillCell(testTable, 1, 0, "Equity:", "$" + str.tostring(strategy.equity, "###,###.##"), bgcolor, color.white)
//         f_fillCell(testTable, 1, 1, "Return:", str.tostring((strategy.netprofit / strategy.initial_capital) * 100, "##.##") + "%", dollarReturn > 0 ? color.green : color.red, color.white)

// // =============================================================================
// // END BACKTEST CODE
// // =============================================================================