Strategi penjejakan arah aliran turun naik dinamik berdasarkan penunjuk DI digabungkan dengan sistem henti untung dan henti rugi ATR

DI DMI ATR SMA MA
Tarikh penciptaan: 2025-01-06 16:18:01 Akhirnya diubah suai: 2025-01-06 16:18:01
Salin: 1 Bilangan klik: 383
1
fokus pada
1617
Pengikut

Strategi penjejakan arah aliran turun naik dinamik berdasarkan penunjuk DI digabungkan dengan sistem henti untung dan henti rugi ATR

Gambaran keseluruhan

Strategi ini ialah sistem mengikut aliran yang menggabungkan Indeks Pergerakan Arah (DMI) dan Julat Sebenar Purata (ATR). Teras strategi adalah untuk mengenal pasti hala tuju dan kekuatan arah aliran pasaran melalui penunjuk DI+ dan DI, dan menggunakan ATR untuk melaraskan kedudukan ambil untung dan henti rugi secara dinamik. Dengan memperkenalkan purata pergerakan yang ditapis arah aliran sebagai pengesahan tambahan, kebolehpercayaan isyarat dagangan dipertingkatkan lagi. Reka bentuk strategi mempertimbangkan sepenuhnya ketidaktentuan pasaran dan mempunyai kebolehsuaian yang baik.

Prinsip Strategi

Strategi ini beroperasi berdasarkan mekanisme teras berikut:

  1. Gunakan penunjuk DI+ dan DI- untuk mengukur arah aliran dan kekuatan. Apabila DI+ lebih tinggi daripada DI- dan perbezaan melebihi ambang, ini menunjukkan bahawa arah aliran menaik diwujudkan jika tidak, arah aliran menurun disahkan.
  2. Memperkenalkan purata bergerak (SMA) yang ditapis arah aliran sebagai alat pengesahan arah aliran. Isyarat akan dicetuskan hanya apabila harga dan kedudukan purata bergerak mengesahkan satu sama lain.
  3. Gunakan penunjuk ATR untuk mengira kedudukan stop loss dan ambil untung secara dinamik untuk memastikan pengurusan risiko boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza.
  4. Patuhi had masa dengan ketat semasa melaksanakan transaksi dan elakkan dagangan terlalu kerap.

Kelebihan Strategik

  1. Keupayaan pelarasan dinamik yang kukuh - Penyesuaian kepada turun naik pasaran dicapai melalui ATR.
  2. Kawalan risiko yang lebih baik - mekanisme henti rugi dan ambil untung dinamik berdasarkan turun naik disediakan.
  3. Kebolehpercayaan isyarat tinggi - Kurangkan isyarat palsu melalui pengesahan silang berbilang penunjuk.
  4. Parameter fleksibel dan boleh laras - Parameter strategi boleh dioptimumkan mengikut ciri pasaran yang berbeza.
  5. Logik pelaksanaan yang jelas - keadaan masuk dan keluar yang jelas, mudah dikendalikan dalam masa nyata.

Risiko Strategik

  1. Risiko pasaran tidak menentu - hentian berterusan mungkin berlaku dalam pasaran terikat julat. Cadangan: Tambah penapis pengayun atau laraskan ambang parameter.

  2. Risiko gelinciran - Anda mungkin menghadapi gelinciran besar semasa tempoh turun naik yang tinggi. Cadangan: Rehatkan kedudukan stop loss dengan sewajarnya dan biarkan ruang untuk gelincir.

  3. Risiko pecahan palsu - kemungkinan salah menilai titik perubahan arah aliran. Syor: Gabungkan penunjuk seperti volum dagangan untuk mengesahkan isyarat.

  4. Kepekaan parameter - kombinasi parameter yang berbeza boleh mempunyai prestasi yang sangat berbeza. Syor: Cari julat parameter dengan kestabilan yang kukuh melalui ujian belakang.

Arah pengoptimuman strategi

  1. Pengoptimuman isyarat - Penunjuk ADX boleh diperkenalkan untuk menilai kekuatan aliran, atau mekanisme pengesahan volum boleh ditambah.

  2. Pengurusan Kedudukan - Laraskan saiz kedudukan secara dinamik berdasarkan kekuatan aliran untuk mencapai kawalan risiko yang lebih canggih.

  3. Rangka masa - Analisis tempoh masa berbilang boleh dipertimbangkan untuk meningkatkan kebolehpercayaan isyarat.

  4. Kebolehsuaian pasaran - Mekanisme pelarasan parameter penyesuaian boleh dibangunkan berdasarkan ciri-ciri varieti yang berbeza.

ringkaskan

Strategi ini mencapai penjejakan arah aliran dinamik dan kawalan risiko dengan menggabungkan penunjuk arah aliran dan petunjuk turun naik. Reka bentuk strategi memberi tumpuan kepada kepraktisan dan kebolehkendalian, dan mempunyai kebolehsesuaian pasaran yang kukuh. Masih terdapat ruang untuk menambah baik strategi melalui pengoptimuman parameter dan penambahbaikan isyarat. Pelabur dinasihatkan untuk menjalankan ujian yang mencukupi dalam aplikasi sebenar dan membuat pelarasan yang disasarkan berdasarkan ciri pasaran tertentu.

Kod 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="空單止盈")