Strategi Dagangan Adaptive Bollinger Band ATR Trailing Stop

ATR BB SMA STDDEV TSL
Tarikh penciptaan: 2025-02-19 11:00:57 Akhirnya diubah suai: 2025-02-19 11:00:57
Salin: 5 Bilangan klik: 705
1
fokus pada
1617
Pengikut

Strategi Dagangan Adaptive Bollinger Band ATR Trailing Stop

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang menyesuaikan diri yang menggabungkan Bollinger Bands dan ATR Tracking Stop. Strategi ini menentukan isyarat masuk melalui terobosan Bollinger Bands ke bawah, sambil menggunakan Tracking Stop yang dinamik berdasarkan ATR untuk menguruskan risiko dan menentukan masa keluar. Strategi ini dapat menangkap peluang tren apabila trend pasaran jelas, sambil memberikan perlindungan di pasaran goyah.

Prinsip Strategi

Strategi ini mempunyai dua bahagian utama:

  1. Sistem isyarat masuk: menggunakan Brinband ((BB) sebagai penunjuk utama, menghasilkan isyarat melakukan lebih banyak apabila harga menembusi laluan bawah, menghasilkan isyarat kosong apabila ia menembusi laluan atas. Parameter Brinband ditetapkan sebagai purata bergerak 20 kitaran sebagai laluan tengah, dengan kelipatan standard 2.0
  2. Sistem Pengurusan Hentian: Menggunakan ATR 14 kitaran sebagai rujukan kadar turun naik, dengan kelipatan 3.0. Apabila memegang kedudukan berbilang kepala, garis hentian akan bergerak ke atas apabila harga naik, dan sebaliknya.

Kelebihan Strategik

  1. Adaptif: Brinband dan ATR adalah penunjuk berdasarkan pengiraan turun naik pasaran sebenar, yang dapat menyesuaikan diri secara automatik dengan keadaan pasaran yang berbeza.
  2. Kawalan risiko yang sempurna: Dengan menghentikan kerugian dinamik melalui ATR, anda dapat menghentikan kerugian tepat pada masanya dan tidak akan keluar dari trend yang kuat terlalu awal.
  3. Isyarat jelas: isyarat masuk dan keluar adalah berdasarkan penembusan harga yang jelas, tanpa penilaian subjektif.
  4. Tingkat visibiliti yang tinggi: Strategi menandai semua titik isyarat dengan jelas pada carta untuk memudahkan analisis dan pengoptimuman.

Risiko Strategik

  1. Risiko pasaran goyah: Dalam pasaran yang tidak mempunyai trend yang jelas, ia mungkin sering menghasilkan isyarat pecah palsu yang menyebabkan kerugian berturut-turut.
  2. Risiko slippage: Dalam keadaan pasaran yang tidak menentu, harga transaksi sebenar mungkin jauh berbeza dengan harga isyarat teori.
  3. Sensitiviti parameter: Kesan strategi lebih sensitif kepada tetapan parameter Brinbelt dan ATR, yang memerlukan pengoptimuman untuk keadaan pasaran yang berbeza.

Arah pengoptimuman strategi

  1. Tambah penapis trend: penambahan indikator penilaian trend tambahan, hanya membuka kedudukan apabila trend jelas, mengurangkan isyarat palsu pasaran goyah.
  2. Optimumkan parameter hentian: anda boleh menyesuaikan ATR secara dinamik mengikut keadaan pasaran yang berbeza, menggunakan hentian yang lebih longgar apabila kadar turun naiknya tinggi.
  3. Pengenalan pengurusan kedudukan: Sistem kedudukan dinamik boleh direka berdasarkan ATR, secara automatik menyesuaikan skala kedudukan terbuka dalam persekitaran turun naik yang berbeza.
  4. Menambah penapis masa: untuk mengelakkan transaksi pada masa-masa yang bergelombang seperti pengumuman data ekonomi penting.

ringkaskan

Strategi ini, dengan menggabungkan Brinband dan ATR Tracking Stop Loss, membina sistem perdagangan yang mempunyai keupayaan untuk menangkap trend dan mengawal risiko. Sifat penyesuaian strategi membolehkan ia kekal stabil dalam pelbagai keadaan pasaran, dan sistem isyarat yang jelas menyediakan asas perdagangan yang objektif. Dengan arah pengoptimuman yang disyorkan, strategi ini masih mempunyai ruang untuk peningkatan lebih lanjut.

Kod sumber strategi
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ATR Trailing Stop Loss with Bollinger Bands", overlay=true)

// Input parameters for Bollinger Bands
bb_length = input.int(20, title="Bollinger Bands Length")
bb_stddev = input.float(2.0, title="Bollinger Bands Std Dev")

// Input parameters for ATR Trailing Stop Loss
atr_length = input.int(14, title="ATR Length")
atr_multiplier = input.float(3.0, title="ATR Multiplier")

// Calculate Bollinger Bands
basis = ta.sma(close, bb_length)
upper_band = ta.sma(close, bb_length) + ta.stdev(close, bb_length) * bb_stddev
lower_band = ta.sma(close, bb_length) - ta.stdev(close, bb_length) * bb_stddev

// Calculate ATR
atr = ta.atr(atr_length)

// Trailing Stop Loss Calculation
var float long_stop = na  // Explicitly define as float type
var float short_stop = na // Explicitly define as float type

if (strategy.position_size > 0)
    long_stop := close - atr * atr_multiplier
    long_stop := math.max(long_stop, nz(long_stop[1], long_stop))
else
    long_stop := na

if (strategy.position_size < 0)
    short_stop := close + atr * atr_multiplier
    short_stop := math.min(short_stop, nz(short_stop[1], short_stop))
else
    short_stop := na

// Entry and Exit Conditions
long_condition = ta.crossover(close, lower_band)  // Enter long when price crosses above lower band
short_condition = ta.crossunder(close, upper_band)  // Enter short when price crosses below upper band

exit_long_condition = ta.crossunder(close, long_stop)  // Exit long when price crosses below trailing stop
exit_short_condition = ta.crossover(close, short_stop)  // Exit short when price crosses above trailing stop

// Execute Trades
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

if (exit_long_condition)
    strategy.close("Long")

if (exit_short_condition)
    strategy.close("Short")

// Plot Bollinger Bands
plot(basis, color=color.blue, title="Basis")
plot(upper_band, color=color.red, title="Upper Band")
plot(lower_band, color=color.green, title="Lower Band")

// Plot Trailing Stop Loss
plot(strategy.position_size > 0 ? long_stop : na, color=color.orange, title="Long Trailing Stop")
plot(strategy.position_size < 0 ? short_stop : na, color=color.purple, title="Short Trailing Stop")

// Labels for Entry and Exit
if (long_condition)
    label.new(bar_index, low, text="Entry Long", style=label.style_circle, color=color.green, textcolor=color.white, size=size.small)

if (short_condition)
    label.new(bar_index, high, text="Entry Short", style=label.style_circle, color=color.red, textcolor=color.white, size=size.small)

if (exit_long_condition)
    label.new(bar_index, low, text="Exit Long", style=label.style_circle, color=color.blue, textcolor=color.white, size=size.small)

if (exit_short_condition)
    label.new(bar_index, high, text="Exit Short", style=label.style_circle, color=color.orange, textcolor=color.white, size=size.small)