Strategi mengikuti tren multi-indikator yang menggabungkan tiga supertrend dan Bollinger band

Boll ST ATR SMA BB MA
Tanggal Pembuatan: 2024-12-20 14:28:58 Akhirnya memodifikasi: 2024-12-20 14:28:58
menyalin: 0 Jumlah klik: 460
1
fokus pada
1617
Pengikut

Strategi mengikuti tren multi-indikator yang menggabungkan tiga supertrend dan Bollinger band

Ringkasan

Strategi ini menggunakan kombinasi antara Brin Band dan Triple Overtrend Indicator untuk melakukan perdagangan. Dengan penilaian jangkauan fluktuasi Brin Band dan pengesahan tren Triple Overtrend, membentuk sistem pelacakan tren yang kuat. Brin Band digunakan untuk mengidentifikasi fluktuasi ekstrim harga, sedangkan Triple Overtrend memberikan pengesahan arah tren secara ganda melalui pengaturan parameter yang berbeda.

Prinsip Strategi

Logika inti dari strategi ini mencakup bagian-bagian utama berikut:

  1. Blinking band dengan 20 siklus, standar deviasi ganda 2.0, digunakan untuk menilai pergerakan harga
  2. Siapkan tiga garis supertrend, masing-masing berperiode 10, dengan parameter masing-masing 3,0, 4,0 dan 5,0
  3. Kondisi masuk multihead: harga menembus Brin Belt dan tiga garis supertrend menunjukkan tren naik
  4. Kondisi masuk kosong: harga turun di bawah Brin Belt dan tiga garis supertrend menunjukkan tren turun
  5. Bila salah satu garis supertrend berubah arah, maka posisi saat ini adalah posisi yang terdegradasi.
  6. Garis harga tengah digunakan sebagai referensi pengisian untuk meningkatkan efek visual

Keunggulan Strategis

  1. Multiple confirmation mechanism: Mengurangi sinyal palsu secara signifikan melalui kombinasi Brin Belt dan Triple Overtrend
  2. Trending Tracking: Pengaturan parameter progresif untuk indikator supertrend yang efektif menangkap tren di berbagai tingkatan
  3. Pengendalian risiko yang sempurna: cepat melonggarkan posisi, mengendalikan penarikan ketika ada tanda-tanda perubahan tren
  4. Parameter yang dapat disesuaikan: parameter indikator dapat dioptimalkan sesuai dengan karakteristik pasar yang berbeda
  5. Tingkat otomatisasi yang tinggi: logika strategi yang jelas, mudah untuk diterapkan secara sistematis

Risiko Strategis

  1. Risiko pasar bergoyang: Sering terjadi sinyal palsu di pasar bergoyang horizontal
  2. Efek slippage: kemungkinan kehilangan slippage yang lebih besar selama periode fluktuasi yang kuat
  3. Risiko penundaan: mekanisme konfirmasi ganda dapat menyebabkan keterlambatan waktu masuk
  4. Sensitivitas parameter: Kombinasi parameter yang berbeda dapat menyebabkan perbedaan besar dalam kinerja strategi
  5. Ketergantungan pada kondisi pasar: strategi yang lebih baik di pasar yang terlihat tren

Arah optimasi strategi

  1. Memperkenalkan indikator volume transaksi: validitas terobosan harga dikonfirmasi oleh volume transaksi
  2. Optimalkan mekanisme stop loss: Anda dapat menambahkan stop loss bergerak atau stop loss dinamis berbasis ATR
  3. Menambahkan filter waktu: melarang perdagangan pada periode waktu tertentu untuk menghindari fluktuasi yang tidak efisien
  4. Tambahkan filter volatilitas: menyesuaikan posisi atau menghentikan perdagangan selama periode fluktuasi yang berlebihan
  5. Mekanisme penyesuaian parameter pengembangan: penyesuaian parameter berdasarkan kondisi pasar yang dinamis

Meringkaskan

Ini adalah strategi pelacakan tren yang menggabungkan pita Brin dan triple overtrend untuk meningkatkan keandalan perdagangan dengan konfirmasi beberapa indikator teknis. Strategi ini memiliki kemampuan menangkap tren yang kuat dan kemampuan mengendalikan risiko, tetapi juga perlu memperhatikan dampak lingkungan pasar pada kinerja strategi. Dengan terus-menerus mengoptimalkan dan menyempurnakan, strategi diharapkan dapat mempertahankan kinerja yang stabil di berbagai kondisi pasar.

Kode 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")