Sumber dimuat naik... memuat...

Triple Supertrend dan Bollinger Bands Multi-Indikator Trend Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-12-20 14:28:58
Tag:BollSTATRSMABBMA

img

Ringkasan

Strategi ini menggabungkan Bollinger Bands dengan penunjuk Triple Supertrend untuk perdagangan. Ia mewujudkan sistem trend berikut yang kukuh dengan menggunakan Bollinger Bands untuk penilaian julat turun naik dan Triple Supertrend untuk pengesahan trend. Bollinger Bands mengenal pasti pergerakan harga yang melampau, sementara Triple Supertrend menyediakan pelbagai pengesahan arah trend melalui tetapan parameter yang berbeza. Dagangan dilaksanakan hanya apabila semua isyarat sejajar, mengurangkan risiko isyarat palsu. Gabungan ini mengekalkan kelebihan trend berikut sambil meningkatkan kebolehpercayaan perdagangan.

Prinsip Strategi

Logik teras merangkumi komponen utama berikut:

  1. Menggunakan Bollinger Band 20 tempoh dengan pengganda penyimpangan standard 2.0 untuk penilaian turun naik
  2. Melaksanakan tiga garis Supertrend dengan tempoh 10 dan faktor 3.0, 4.0 dan 5.0
  3. Syarat kemasukan panjang: harga pecah di atas Bollinger Band atas dan ketiga-tiga garis Supertrend menunjukkan trend menaik
  4. Syarat kemasukan pendek: harga pecah di bawah Bollinger Band bawah dan ketiga-tiga garis Supertrend menunjukkan trend menurun
  5. Posisi ditutup apabila mana-mana garis Supertrend menukar arah
  6. Menggunakan barisan harga tengah sebagai rujukan isi untuk visualisasi yang lebih baik

Kelebihan Strategi

  1. Mekanisme pengesahan berganda: Gabungan Bollinger Bands dan Triple Supertrend mengurangkan isyarat palsu dengan ketara
  2. Keupayaan trend yang kuat: Parameter Supertrend progresif menangkap trend secara berkesan pada tahap yang berbeza
  3. Kawalan risiko yang komprehensif: Penutupan kedudukan yang cepat apabila tanda-tanda pembalikan trend muncul
  4. Kebolehsesuaian parameter yang tinggi: Semua parameter penunjuk boleh dioptimumkan untuk ciri pasaran yang berbeza
  5. Tahap automatik yang tinggi: Logik strategi yang jelas memudahkan pelaksanaan sistematik

Risiko Strategi

  1. Risiko pasaran bergelora: Boleh menghasilkan isyarat pecah palsu yang kerap di pasaran sampingan
  2. Kesan slippage: Boleh menghadapi kerugian slippage yang besar semasa tempoh tidak menentu
  3. Risiko kelewatan: Mekanisme pengesahan berganda boleh menyebabkan penyerahan tertunda
  4. Sensitiviti parameter: Gabungan parameter yang berbeza boleh mengakibatkan prestasi strategi yang berbeza
  5. Kebergantungan persekitaran pasaran: Strategi lebih baik dalam pasaran trend

Arahan Pengoptimuman Strategi

  1. Menggabungkan penunjuk jumlah: mengesahkan kesahihan harga pecah melalui analisis jumlah
  2. Mengoptimumkan mekanisme stop-loss: Tambah trailing stop atau stop dinamik berasaskan ATR
  3. Tambah penapis masa: Batasi perdagangan dalam tempoh tertentu untuk mengelakkan turun naik yang tidak cekap
  4. Melaksanakan penapis turun naik: Sesuaikan saiz kedudukan atau hentikan perdagangan semasa turun naik yang berlebihan
  5. Membangunkan mekanisme penyesuaian parameter: Sesuaikan parameter secara dinamik berdasarkan keadaan pasaran

Ringkasan

Ini adalah strategi trend-mengikuti menggabungkan Bollinger Bands dan Triple Supertrend, meningkatkan kebolehpercayaan perdagangan melalui pelbagai pengesahan penunjuk teknikal. Strategi ini menunjukkan keupayaan menangkap trend yang kuat dan kawalan risiko, tetapi keadaan pasaran memberi kesan yang ketara terhadap prestasi. Melalui pengoptimuman dan penyempurnaan yang berterusan, strategi ini dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.


//@version=5
strategy("Demo GPT - Bollinger + Triple Supertrend Combo", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// -------------------------------
// User Input for Date Range
// -------------------------------
startDate = input(title="Start Date", defval=timestamp("2018-01-01 00:00:00"))
endDate   = input(title="End Date",   defval=timestamp("2069-12-31 23:59:59"))

// -------------------------------
// Bollinger Band Inputs
// -------------------------------
lengthBB = input.int(20, "Bollinger Length")
multBB   = input.float(2.0, "Bollinger Multiplier")

// -------------------------------
// Supertrend Inputs for 3 lines
// -------------------------------
// Line 1
atrPeriod1 = input.int(10, "ATR Length (Line 1)", minval = 1)
factor1    = input.float(3.0, "Factor (Line 1)", minval = 0.01, step = 0.01)

// Line 2
atrPeriod2 = input.int(10, "ATR Length (Line 2)", minval = 1)
factor2    = input.float(4.0, "Factor (Line 2)", minval = 0.01, step = 0.01)

// Line 3
atrPeriod3 = input.int(10, "ATR Length (Line 3)", minval = 1)
factor3    = input.float(5.0, "Factor (Line 3)", minval = 0.01, step = 0.01)

// -------------------------------
// Bollinger Band Calculation
// -------------------------------
basis = ta.sma(close, lengthBB)
dev   = multBB * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Plot Bollinger Bands
plot(upperBand, "Upper BB", color=color.new(color.blue, 0))
plot(basis,     "Basis",    color=color.new(color.gray, 0))
plot(lowerBand, "Lower BB", color=color.new(color.blue, 0))

// -------------------------------
// Supertrend Calculation Line 1
// -------------------------------
[supertrendLine1, direction1] = ta.supertrend(factor1, atrPeriod1)
supertrendLine1 := barstate.isfirst ? na : supertrendLine1

upTrend1   = plot(direction1 < 0 ? supertrendLine1 : na, "Up Trend 1",   color = color.green, style = plot.style_linebr)
downTrend1 = plot(direction1 < 0 ? na : supertrendLine1, "Down Trend 1", color = color.red,   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 2
// -------------------------------
[supertrendLine2, direction2] = ta.supertrend(factor2, atrPeriod2)
supertrendLine2 := barstate.isfirst ? na : supertrendLine2

upTrend2   = plot(direction2 < 0 ? supertrendLine2 : na, "Up Trend 2",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend2 = plot(direction2 < 0 ? na : supertrendLine2, "Down Trend 2", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 3
// -------------------------------
[supertrendLine3, direction3] = ta.supertrend(factor3, atrPeriod3)
supertrendLine3 := barstate.isfirst ? na : supertrendLine3

upTrend3   = plot(direction3 < 0 ? supertrendLine3 : na, "Up Trend 3",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend3 = plot(direction3 < 0 ? na : supertrendLine3, "Down Trend 3", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Middle line for fill (used as a reference line)
// -------------------------------
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle", display = display.none)

// Fill areas for each supertrend line
fill(bodyMiddle, upTrend1,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend1, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend2,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend2, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend3,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend3, color.new(color.red,   90), fillgaps = false)

// Alerts for the first line only (as an example)
alertcondition(direction1[1] > direction1, title='Downtrend to Uptrend (Line 1)', message='Supertrend Line 1 switched from Downtrend to Uptrend')
alertcondition(direction1[1] < direction1, title='Uptrend to Downtrend (Line 1)', message='Supertrend Line 1 switched from Uptrend to Downtrend')
alertcondition(direction1[1] != direction1, title='Trend Change (Line 1)', message='Supertrend Line 1 switched trend')

// -------------------------------
// Strategy Logic
// -------------------------------
inDateRange = true

// Long Conditions
longEntryCondition = inDateRange and close > upperBand and direction1 < 0 and direction2 < 0 and direction3 < 0
longExitCondition = direction1 > 0 or direction2 > 0 or direction3 > 0

// Short Conditions
shortEntryCondition = inDateRange and close < lowerBand and direction1 > 0 and direction2 > 0 and direction3 > 0
shortExitCondition = direction1 < 0 or direction2 < 0 or direction3 < 0

// Execute Long Trades
if longEntryCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and longExitCondition
    strategy.close("Long")

// Execute Short Trades
if shortEntryCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)

if strategy.position_size < 0 and shortExitCondition
    strategy.close("Short")


Berkaitan

Lebih lanjut