Strategi Dagangan Purata Bergerak DMI

Penulis:ChaoZhang, Tarikh: 2023-09-13 14:42:19
Tag:

Baru-baru ini saya telah membangunkan strategi perdagangan kuantitatif baru yang terutamanya berdasarkan penunjuk DMI untuk mengenal pasti bahagian bawah dan atas di pasaran.

Logika Strategi

Indikator DMI, singkatan daripada Indeks Pergerakan Arah Purata, dicipta oleh Welles Wilder pada tahun 1970-an untuk mengukur trend dan kekuatan pasaran.

  • +DI: mewakili kekuatan trend menaik
  • -DI: mewakili kekuatan trend penurunan
  • ADX: mewakili kekuatan trend keseluruhan

Apabila +DI melintasi di atas -DI, ia menunjukkan penguatan trend menaik dan kedudukan panjang boleh dipertimbangkan. Apabila -DI melintasi di atas +DI, ia menandakan penguatan trend menurun dan kedudukan pendek boleh dipertimbangkan.

Logik teras strategi ini ialah:

  1. Pergi panjang apabila +DI turun di bawah 10 dan -DI naik di atas 40
  2. Pergi pendek apabila -DI turun di bawah 10 dan +DI naik di atas 40

Iaitu, apabila DI terbalik menyimpang dengan ketara daripada DI hadapan, ia boleh dinilai bahawa trend semasa mungkin akan berbalik, dan kedudukan perdagangan terbalik boleh diambil dengan sewajarnya.

Untuk menapis bunyi bising, strategi ini menggunakan purata bergerak DI dengan parameter yang ditetapkan sebagai:

  • Tempoh +DI dan -DI ialah 11
  • Tempoh penyelarasan ADX ialah 11

Dengan menyesuaikan parameter purata bergerak, kekerapan isyarat perdagangan boleh diselaraskan.

Strategi ini terutamanya digunakan untuk perdagangan pilihan indeks NIFTY50. Ia juga boleh digunakan pada produk lain. Khusus untuk perdagangan, pilih pilihan pada wang, tetapkan stop loss pada 20%, tambah kedudukan jika kerugian melebihi 10%, tetapi berhenti jika kerugian berkembang melebihi 20% daripada modal awal.

Kelebihan Strategi

Berbanding dengan strategi silang DI yang mudah, strategi ini menggunakan purata bergerak DI untuk menapis bunyi bising dan mengurangkan perdagangan, dengan itu mengurangkan kos transaksi dan slippage.

Berbanding dengan strategi mengikut trend murni, strategi ini lebih tepat dalam menangkap titik pembalikan trend, membolehkan entri tepat pada masanya di sekeliling belokan.

Pengoptimuman strategi adalah mudah dengan parameter fleksibel untuk penyesuaian prestasi.

Amaran Risiko

Strategi ini hanya memberikan isyarat arah. Keperluan khusus mengenai stop loss dan mengambil keuntungan harus ditetapkan mengikut keutamaan risiko peribadi.

DMI boleh menghasilkan banyak isyarat palsu semasa tempoh yang terikat julat.

DI crossovers tidak dapat meramalkan sepenuhnya pembalikan trend. Mungkin terdapat beberapa kesilapan masa. Indikator lain harus digunakan untuk mengesahkan isyarat perdagangan.

Kesimpulan

Dengan menyaring dengan purata bergerak DI, strategi ini dapat dengan berkesan mengenal pasti peluang pembalikan trend. Berbanding dengan strategi trend berikut yang lain, ia mempunyai kelebihan keupayaan pengenalan pembalikan yang lebih kuat. Secara keseluruhan, strategi ini mempunyai penyesuaian parameter yang fleksibel dan boleh digunakan sebagai modul dalam sistem perdagangan kuantitatif. Perhatikan isyarat palsu dan menilai dengan betul rejim pasaran semasa menggunakannya.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



Lebih lanjut