Strategi pelacakan tren volatilitas dinamis berdasarkan indikator DI yang dikombinasikan dengan sistem stop-profit dan stop-loss ATR

DI DMI ATR SMA MA
Tanggal Pembuatan: 2025-01-06 16:18:01 Akhirnya memodifikasi: 2025-01-06 16:18:01
menyalin: 1 Jumlah klik: 383
1
fokus pada
1617
Pengikut

Strategi pelacakan tren volatilitas dinamis berdasarkan indikator DI yang dikombinasikan dengan sistem stop-profit dan stop-loss ATR

Ringkasan

Strategi ini adalah sistem mengikuti tren yang menggabungkan Directional Movement Index (DMI) dan Average True Range (ATR). Inti dari strategi ini adalah mengidentifikasi arah dan kekuatan tren pasar melalui indikator DI+ dan DI-, dan menggunakan ATR untuk menyesuaikan posisi take-profit dan stop-loss secara dinamis. Dengan memperkenalkan rata-rata pergerakan yang difilter tren sebagai konfirmasi tambahan, keandalan sinyal perdagangan lebih ditingkatkan. Desain strategi sepenuhnya mempertimbangkan volatilitas pasar dan memiliki kemampuan beradaptasi yang baik.

Prinsip Strategi

Strategi ini beroperasi berdasarkan mekanisme inti berikut:

  1. Gunakan indikator DI+ dan DI- untuk mengukur arah dan kekuatan tren. Bila DI+ lebih tinggi daripada DI- dan selisihnya melampaui ambang batas, ini mengindikasikan tren kenaikan tengah terjadi; jika tidak, tren penurunan tengah terjadi.
  2. Perkenalkan rata-rata pergerakan yang disaring tren (SMA) sebagai alat konfirmasi tren. Sinyal akan dipicu hanya ketika harga dan posisi rata-rata pergerakan saling mengonfirmasi.
  3. Gunakan indikator ATR untuk menghitung stop loss dan posisi take profit secara dinamis guna memastikan bahwa manajemen risiko dapat beradaptasi dengan berbagai lingkungan pasar.
  4. Patuhi batasan waktu secara ketat saat melakukan transaksi dan hindari berdagang terlalu sering.

Keunggulan Strategis

  1. Kemampuan penyesuaian dinamis yang kuat - Adaptasi terhadap fluktuasi pasar dicapai melalui ATR.
  2. Peningkatan pengendalian risiko - mekanisme stop-loss dan take-profit dinamis berdasarkan volatilitas ditetapkan.
  3. Keandalan sinyal tinggi - Mengurangi sinyal palsu melalui validasi silang beberapa indikator.
  4. Parameter yang fleksibel dan dapat disesuaikan - Parameter strategi dapat dioptimalkan sesuai dengan karakteristik pasar yang berbeda.
  5. Logika eksekusi yang jelas - kondisi masuk dan keluar yang jelas, mudah dioperasikan secara real time.

Risiko Strategis

  1. Risiko pasar yang bergejolak - penghentian berkelanjutan dapat terjadi di pasar yang terikat kisaran. Saran: Tambahkan filter osilator atau sesuaikan ambang batas parameter.

  2. Risiko tergelincir - Anda mungkin menghadapi tergelincir besar selama periode volatilitas tinggi. Saran: Kendurkan posisi stop loss dengan tepat dan sisakan ruang untuk slippage.

  3. Risiko breakout palsu - kemungkinan salah menilai titik balik tren. Rekomendasi: Gabungkan indikator seperti volume perdagangan untuk mengonfirmasi sinyal.

  4. Sensitivitas parameter - kombinasi parameter yang berbeda dapat memiliki kinerja yang sangat berbeda. Rekomendasi: Temukan rentang parameter dengan stabilitas yang kuat melalui pengujian ulang.

Arah optimasi strategi

  1. Optimalisasi sinyal - Indikator ADX dapat diperkenalkan untuk mengevaluasi kekuatan tren, atau mekanisme konfirmasi volume dapat ditambahkan.

  2. Manajemen Posisi - Sesuaikan ukuran posisi secara dinamis berdasarkan kekuatan tren untuk mencapai pengendalian risiko yang lebih canggih.

  3. Kerangka waktu - Analisis beberapa periode waktu dapat dipertimbangkan untuk meningkatkan keandalan sinyal.

  4. Kemampuan beradaptasi pasar - Mekanisme penyesuaian parameter adaptif dapat dikembangkan berdasarkan karakteristik produk yang berbeda.

Meringkaskan

Strategi ini mencapai pelacakan tren dinamis dan pengendalian risiko dengan menggabungkan indikator tren dan indikator volatilitas. Desain strategi berfokus pada kepraktisan dan operasional, serta memiliki daya adaptasi pasar yang kuat. Masih ada ruang untuk perbaikan strategi lebih lanjut melalui optimalisasi parameter dan perbaikan sinyal. Investor disarankan untuk melakukan pengujian yang memadai dalam penerapan aktual dan membuat penyesuaian yang ditargetkan berdasarkan karakteristik pasar tertentu.

Kode Sumber Strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("使用 DI+ 和 DI- 的策略 (最終完整修正且含圖表止損止盈線)", overlay=true)

// 輸入參數
diLength = input.int(title="DI 長度", defval=14)
adxSmoothing = input.int(title="ADX Smoothing", defval=14)
trendFilterLength = input.int(title="趨勢過濾均線長度", defval=20)
strengthThreshold = input.int(title="趨勢強度門檻值", defval=20)
atrLength = input.int(title="ATR 長度", defval=14)
atrMultiplierStop = input.float(title="ATR 停損倍數", defval=1.5)
atrMultiplierTakeProfit = input.float(title="ATR 止盈倍數", defval=2.5)

// 計算 DI+ 和 DI-
[diPlus, diMinus, _] = ta.dmi(diLength, adxSmoothing)

// 計算趨勢過濾均線
trendFilterMA = ta.sma(close, trendFilterLength)

// 判斷趨勢方向和強度
strongUpTrend = diPlus > diMinus + strengthThreshold and close > trendFilterMA
strongDownTrend = diMinus > diPlus + strengthThreshold and close < trendFilterMA

// 計算 ATR
atr = ta.atr(atrLength)

// 追蹤止損止盈價格 (使用 var 宣告,只在進場時更新)
var float longStopPrice = na
var float longTakeProfitPrice = na
var float shortStopPrice = na
var float shortTakeProfitPrice = na

// 進場邏輯
longCondition = strongUpTrend
shortCondition = strongDownTrend

if (longCondition)
    strategy.entry("多單", strategy.long)
    longStopPrice := close - atr * atrMultiplierStop // 進場時計算並更新止損價
    longTakeProfitPrice := close + atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價

if (shortCondition)
    strategy.entry("空單", strategy.short)
    shortStopPrice := close + atr * atrMultiplierStop // 進場時計算並更新止損價
    shortTakeProfitPrice := close - atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價


// 出場邏輯 (使用 time 限制和 ATR)
inLongPosition = strategy.position_size > 0
inShortPosition = strategy.position_size < 0

lastEntryTime = strategy.opentrades.entry_bar_index(strategy.opentrades - 1)

if (inLongPosition and time > lastEntryTime)
    strategy.exit("多單出場", "多單", stop=longStopPrice, limit=longTakeProfitPrice)

if (inShortPosition and time > lastEntryTime)
    strategy.exit("空單出場", "空單", stop=shortStopPrice, limit=shortTakeProfitPrice)

// 繪製 DI+、DI- 和趨勢過濾均線
plot(diPlus, color=color.green, title="DI+")
plot(diMinus, color=color.red, title="DI-")
plot(trendFilterMA, color=color.blue, title="趨勢過濾均線")

// 繪製止損止盈線 (使用 plot 函數繪製)
plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多單停損")
plot(strategy.position_size > 0 ? longTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多單止盈")
plot(strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空單停損")
plot(strategy.position_size < 0 ? shortTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空單止盈")