Sumber dimuat naik... memuat...

Tren Dinamis yang Disesuaikan Volatiliti Mengikuti Strategi Berdasarkan Penunjuk DI dengan Pengurusan Hentian ATR

Penulis:ChaoZhang, Tarikh: 2025-01-06 16:18:01
Tag:DIDMIATRSMAMA

img

Ringkasan

Strategi ini adalah sistem mengikuti trend yang menggabungkan Indeks Pergerakan Arah (DMI) dengan Julat Benar Purata (ATR). Mekanisme teras menggunakan indikator DI + dan DI- untuk mengenal pasti arah trend pasaran dan kekuatan, sementara menggunakan ATR untuk penyesuaian stop-loss dan mengambil keuntungan yang dinamik. Pengenalan purata bergerak penapis trend lebih meningkatkan kebolehpercayaan isyarat. Reka bentuk strategi mempertimbangkan turun naik pasaran dan menunjukkan daya adaptasi yang baik.

Prinsip Strategi

Strategi ini beroperasi berdasarkan mekanisme teras berikut:

  1. Menggunakan penunjuk DI + dan DI- untuk mengukur arah trend dan kekuatan. Apabila DI + melebihi nilai ambang DI-, trend menaik disahkan; sebaliknya untuk trend menurun.
  2. Menggabungkan purata bergerak penapis trend (SMA) sebagai alat pengesahan trend. Isyarat hanya dicetuskan apabila kedudukan harga dan purata bergerak saling mengesahkan.
  3. Menggunakan penunjuk ATR untuk mengira secara dinamik tahap stop-loss dan mengambil keuntungan, memastikan pengurusan risiko disesuaikan dengan keadaan pasaran yang berbeza.
  4. Mengikuti ketat sekatan masa dalam pelaksanaan perdagangan untuk mengelakkan kekerapan perdagangan yang berlebihan.

Kelebihan Strategi

  1. Penyesuaian Dinamik Kuat - Mencapai penyesuaian terhadap turun naik pasaran melalui ATR.
  2. Kawalan Risiko Komprehensif - Melaksanakan mekanisme stop-loss dan mengambil keuntungan dinamik berdasarkan turun naik.
  3. Kebolehpercayaan Isyarat Tinggi - Mengurangkan isyarat palsu melalui pengesahan silang pelbagai penunjuk.
  4. Parameter fleksibel - Parameter strategi boleh dioptimumkan untuk ciri pasaran yang berbeza.
  5. Logik pelaksanaan yang jelas - Syarat kemasukan dan keluar yang tepat memudahkan pelaksanaan dunia nyata.

Risiko Strategi

  1. Risiko pasaran turun naik - Boleh menyebabkan berhenti berturut-turut di pasaran yang terhad. Cadangan: Tambah penunjuk getaran untuk penapisan atau sesuaikan ambang parameter.

  2. Risiko slippage - Boleh menghadapi slippage yang ketara semasa tempoh turun naik yang tinggi. Cadangan: Luaskan kedudukan stop-loss yang sesuai untuk menampung kebocoran.

  3. Risiko pecah palsu - Potensi salah penilaian pada titik perubahan trend. Cadangan: Sertakan penunjuk jumlah untuk pengesahan isyarat.

  4. Sensitiviti Parameter - Prestasi berbeza dengan ketara dengan kombinasi parameter yang berbeza. Cadangan: Cari julat parameter yang stabil melalui backtesting.

Arahan Pengoptimuman Strategi

  1. Pengoptimuman Isyarat - Pertimbangkan untuk memperkenalkan penunjuk ADX untuk penilaian kekuatan trend atau menambah mekanisme pengesahan jumlah.

  2. Pengurusan Posisi - Melaksanakan saiz kedudukan dinamik berdasarkan kekuatan trend untuk kawalan risiko yang lebih halus.

  3. Struktur Masa - Pertimbangkan analisis pelbagai jangka masa untuk meningkatkan kebolehpercayaan isyarat.

  4. Kesesuaian pasaran - Membangunkan mekanisme penyesuaian parameter adaptif berdasarkan ciri instrumen yang berbeza.

Ringkasan

Strategi ini mencapai trend berikut dinamik dan kawalan risiko dengan menggabungkan arah dan penunjuk turun naik. Reka bentuk strategi menekankan kepraktisan dan operasi, menunjukkan daya adaptasi pasaran yang kuat. Melalui pengoptimuman parameter dan penambahbaikan isyarat, terdapat ruang untuk peningkatan lanjut. Pelabur dinasihatkan untuk menguji dengan teliti dan membuat penyesuaian khusus berdasarkan ciri pasaran sebelum pelaksanaan.


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

Berkaitan

Lebih lanjut