Strategi pengambilan untung berbilang peringkat EMA-ADX untuk penjejakan arah aliran dinamik

EMA ADX ATR
Tarikh penciptaan: 2025-02-18 14:08:02 Akhirnya diubah suai: 2025-02-18 14:08:02
Salin: 0 Bilangan klik: 405
1
fokus pada
1617
Pengikut

Strategi pengambilan untung berbilang peringkat EMA-ADX untuk penjejakan arah aliran dinamik

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking yang menggabungkan EMA dan ADX untuk mengoptimumkan pengurusan wang melalui pelbagai tahap berhenti dan berhenti bergerak. Strategi ini menggunakan garis lurus EMA sebagai arah trend, penapis kekuatan ADX sebagai trend, dan merancang mekanisme berhenti tiga tingkat untuk membahagikan keuntungan, sambil menggunakan ATR untuk menyesuaikan kedudukan berhenti secara dinamik untuk mengawal risiko.

Prinsip Strategi

Logik teras strategi merangkumi bahagian penting berikut:

  1. Menggunakan 50 kitaran EMA rata-rata untuk menentukan arah trend, harga menembusi EMA di atas terbuka lebih banyak, menembusi di bawah terbuka
  2. Penapisan trend lemah melalui indikator ADX 14 kitaran, trend disahkan sah apabila ADX> 20
  3. Berdasarkan 14 kitaran ATR, kedudukan hentian dinamik dikira, dengan 1 ATR dikurangkan pada harga terendah, 1 ATR ditambah pada harga tertinggi
  4. Terdapat tiga lapisan penghadang:
    • Lapisan Pertama: 30% kedudukan di 1 kali ganda ATR.
    • Lapisan Kedua: 50% kedudukan di 2 kali ganda ATR.
    • Lapisan Ketiga: 20% kedudukan menggunakan 3 kali ganda ATR untuk menghentikan bergerak
  5. Apabila harga mencapai titik berhenti tingkat kedua, semua kedudukan yang tersisa akan dihapuskan secara automatik

Kelebihan Strategik

  1. Reka bentuk multi-lapisan boleh mengunci keuntungan tepat pada masanya dan tidak terlepas peluang besar.
  2. MLM boleh menyesuaikan diri dengan turun naik pasaran dan menyediakan kawalan risiko yang dinamik
  3. Penapisan ADX berkesan mengelakkan isyarat palsu dari pasaran yang bergolak
  4. EMA dan persilangan harga memberi isyarat masuk yang jelas
  5. Penghentian batch mengurangkan ketidakselesaan emosi dan membantu pelaksanaan strategi dalam jangka masa panjang

Risiko Strategik

  1. Peningkatan kos mungkin disebabkan oleh kemasukan dan keluar yang kerap dalam pasaran yang bergolak
  2. EMA sebagai penunjuk ketinggalan mungkin tidak bertindak balas dengan cepat apabila berbalik
  3. Had ADX tetap mungkin perlu disesuaikan dalam keadaan pasaran yang berbeza
  4. Multi-Layer Stoppers Mungkin Mengurangkan Kedudukan Terdahulu Dalam Trend Unilateral Langkah-langkah mitigasi:
  • Had ADX boleh disesuaikan mengikut dinamik kitaran pasaran yang berbeza
  • Pertimbangkan untuk menambah indikator pengesahan trend
  • Pengoptimuman parameter yang lebih halus untuk nisbah hentian

Arah pengoptimuman strategi

  1. Pengenalan penunjuk jumlah pertukaran untuk meningkatkan pengesahan trend
  2. Peningkatan ADX mengikut pergerakan turun naik pasaran
  3. Mengoptimumkan peratusan peruntukan kedudukan di peringkat penangguhan
  4. Peningkatan tahap kekuatan trend untuk menangani strategi penangguhan yang berbeza
  5. Pertimbangan untuk memasukkan faktor bermusim dan penilaian kitaran pasaran

ringkaskan

Ini adalah strategi pengesanan trend yang berstruktur, logik dan jelas, yang mengimbangi keuntungan dan risiko dengan pelbagai tahap berhenti dan berhenti yang dinamik. Reka bentuk keseluruhan strategi sesuai dengan prinsip-prinsip asas perdagangan kuantitatif, dengan keluasan yang baik dan ruang untuk pengoptimuman. Dengan penyesuaian parameter yang munasabah dan peningkatan pengoptimuman, strategi ini dijangka mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.

Kod sumber strategi
/*backtest
start: 2024-03-06 18:40:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BTC Optimized Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)

// === 參數設定 ===
lengthEMA = input(50, title="EMA 週期")
adxLength = input(14, title="ADX 週期")
atrLength = input(14, title="ATR 週期")
riskReward = input(2.0, title="風險報酬比")
tp1_ratio = input(1.0, title="TP1 (ATR 倍數)")
tp2_ratio = input(2.0, title="TP2 (ATR 倍數)")
trailATR = input(3.0, title="移動止盈 ATR 倍數")

// === 計算技術指標 ===
ema = ta.ema(close, lengthEMA)
atr = ta.atr(atrLength)

// === 計算 ADX ===
upMove = math.max(high - nz(high[1], high), 0)
downMove = math.max(nz(low[1], low) - low, 0)
tr = math.max(math.max(high - low, math.abs(high - nz(close[1], close))), math.abs(low - nz(close[1], close)))
plusDM = upMove > downMove and upMove > 0 ? upMove : 0
minusDM = downMove > upMove and downMove > 0 ? downMove : 0
plusDI = 100 * ta.rma(plusDM, adxLength) / ta.rma(tr, adxLength)
minusDI = 100 * ta.rma(minusDM, adxLength) / ta.rma(tr, adxLength)
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLength)

// === 趨勢過濾條件 ===
isTrending = adx > 20

// === 進場條件 ===
longCondition = ta.crossover(close, ema) and isTrending
shortCondition = ta.crossunder(close, ema) and isTrending

// === 計算止損、止盈價格 ===
longStopLoss = low - atr
shortStopLoss = high + atr
longTP1 = close + tp1_ratio * atr
longTP2 = close + tp2_ratio * atr
shortTP1 = close - tp1_ratio * atr
shortTP2 = close - tp2_ratio * atr

// === 設定進場和出場 ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long_Exit1", from_entry="Long", qty_percent=30, limit=longTP1, stop=longStopLoss)
    strategy.exit("Long_Exit2", from_entry="Long", qty_percent=50, limit=longTP2, stop=longStopLoss)
    strategy.exit("Long_Trail", from_entry="Long", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short_Exit1", from_entry="Short", qty_percent=30, limit=shortTP1, stop=shortStopLoss)
    strategy.exit("Short_Exit2", from_entry="Short", qty_percent=50, limit=shortTP2, stop=shortStopLoss)
    strategy.exit("Short_Trail", from_entry="Short", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

// === 當價格超過 TP2 後,自動平倉 ===
if close >= longTP2
    strategy.close("Long")

if close <= shortTP2
    strategy.close("Short")

// === 畫圖標示 ===
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.labelup, title="買入")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="賣出")
plot(ema, color=color.orange, title="EMA")