Aliran berbilang penunjuk mengikut strategi yang menggabungkan tiga aliran super dan Bollinger Bands

Boll ST ATR SMA BB MA
Tarikh penciptaan: 2024-12-20 14:28:58 Akhirnya diubah suai: 2024-12-20 14:28:58
Salin: 0 Bilangan klik: 460
1
fokus pada
1617
Pengikut

Aliran berbilang penunjuk mengikut strategi yang menggabungkan tiga aliran super dan Bollinger Bands

Gambaran keseluruhan

Strategi ini menggunakan kombinasi antara Brinband dan Triple Overtrend Indicator untuk berdagang. Dengan penilaian antara-antara pergerakan Brinband dan pengesahan trend Triple Overtrend, ia membentuk sistem pengesanan trend yang mantap. Brinband digunakan untuk mengenal pasti turun naik harga yang melampau, sementara Triple Overtrend memberikan pengesahan arah trend secara berganda melalui pengaturan parameter yang berbeza.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Menggunakan 20 kitaran pita Brin, perkalian standard deviasi 2.0, untuk menilai turun naik harga
  2. Tetapkan tiga garis super trend dengan tempoh 10 dan parameter masing-masing 3.0, 4.0 dan 5.0
  3. Syarat kemasukan berbilang mata: harga menembusi Brin Belt dan tiga garis super trend menunjukkan trend ke atas
  4. Syarat kemasukan kosong: harga jatuh di bawah jalur Brin dan tiga garis super menunjukkan trend menurun
  5. Apabila mana-mana garisan trend yang melampau berubah arah, kedudukan terhad kini memegang kedudukan
  6. Garis harga tengah digunakan sebagai rujukan pengisian untuk meningkatkan kesan visual

Kelebihan Strategik

  1. Mekanisme pengesahan berganda: mengurangkan isyarat palsu dengan gabungan Brin Belt dan triple overtrend
  2. Keupayaan untuk mengesan trend yang kuat: Tetapan parameter berturut-turut untuk penunjuk supertrend, yang dapat menangkap trend di pelbagai peringkat dengan berkesan
  3. Pengendalian risiko yang sempurna: cepat melonggarkan kedudukan, mengawal penarikan balik apabila trend menunjukkan tanda-tanda perubahan
  4. Parameter yang boleh disesuaikan: parameter indikator boleh dioptimumkan mengikut ciri-ciri pasaran yang berbeza
  5. Tingkat automasi yang tinggi: strategi logik yang jelas, mudah untuk dilaksanakan secara sistematik

Risiko Strategik

  1. Risiko pasaran yang bergolak: pasaran yang bergolak boleh sering menghasilkan isyarat pecah palsu
  2. Kesan slippage: mungkin mengalami kehilangan slippage yang lebih besar pada masa-masa yang bergelombang
  3. Risiko penangguhan: mekanisme pengesahan berganda boleh menyebabkan kemasukan lewat
  4. Kepekaan parameter: Kombinasi parameter yang berbeza boleh membawa kepada perbezaan besar dalam prestasi strategi
  5. Kepercayaan kepada keadaan pasaran: strategi yang lebih baik di pasaran yang menunjukkan trend

Arah pengoptimuman strategi

  1. Pengenalan penunjuk kuantiti urus niaga: kesahihan penembusan harga melalui kuantiti urus niaga
  2. Mekanisme penangguhan yang dioptimumkan: penangguhan bergerak atau penangguhan dinamik berasaskan ATR boleh ditambah
  3. Menambah penapisan masa: melarang perdagangan dalam tempoh masa tertentu untuk mengelakkan turun naik yang tidak cekap
  4. Tambah penapis kadar turun naik: sesuaikan kedudukan atau hentikan dagangan semasa turun naik yang berlebihan
  5. Mekanisme penyesuaian parameter pembangunan: penyesuaian parameter secara dinamik mengikut keadaan pasaran

ringkaskan

Ini adalah strategi pengesanan trend yang menggabungkan Brin Belt dan Triple Overtrend untuk meningkatkan kebolehpercayaan perdagangan melalui pengesahan pelbagai petunjuk teknikal. Strategi ini mempunyai keupayaan untuk menangkap trend yang kuat dan keupayaan untuk mengawal risiko, tetapi juga perlu memperhatikan kesan persekitaran pasaran terhadap prestasi strategi. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi diharapkan dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.

Kod sumber strategi
//@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")