Strategi Dagangan DMI & Stochastic dengan Stop-Loss Dinamik

Penulis:ChaoZhang, Tarikh: 2023-12-26 14:30:23
Tag:

img

Ringkasan

Strategi dagangan ini menggabungkan Indeks Pergerakan Arah (DMI) dan Osilator Stochastic untuk menjana isyarat dagangan. DMI, dengan garis DI +, DI- dan Indeks Arah Purata (ADX), mengukur kekuatan dan arah trend. Strategi ini pergi panjang (beli) apabila DI + di atas DI-, ADX di atas 25 dan Stochastic %K di bawah 20 (terlalu dijual). Ia pergi pendek (jual) apabila DI- di atas DI +, ADX kekal di atas 25 dan Stochastic %K melebihi 80 (terlalu dibeli).

Logika Strategi

Strategi ini berdasarkan komponen utama berikut:

  1. DMI untuk pengenalan trend: Di +, DI- dan ADX garis DMI menentukan arah trend pasaran dan kekuatan. DI + di atas DI- menandakan trend menaik manakala DI- di atas DI + menandakan trend menurun. Nilai ADX yang lebih tinggi menunjukkan trend yang lebih kuat.

  2. Stochastic untuk overbought/oversold: %K garis Stochastic menunjukkan dekat semasa berbanding tertinggi dan terendah baru-baru ini. Nilai di bawah 20 menunjukkan oversold manakala di atas 80 overbought.

  3. Logik isyarat:Menggabungkan DMI dan Stochastic, strategi ini pergi panjang apabila DI+>DI- ((uptrend), ADX>25 (kekuatan trend) dan Stochastic %K <20 (oversold).

  4. Stop-loss dinamik: Penutupan tertinggi dan terendah baru-baru ini selepas masuk digunakan sebagai paras stop-loss dinamik, yang membolehkan kawalan risiko adaptif.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Kebolehpercayaan yang lebih tinggi menggunakan pengesahan berganda dari DMI (trend) & Stochastic (overbought/oversold).

  2. Stop loss dinamik yang inovatif berdasarkan perubahan harga baru-baru ini membolehkan kawalan risiko yang lebih baik.

  3. Kurang parameter menjadikan pengoptimuman dan pelaksanaan mudah.

  4. Keupayaan beradaptasi yang luas di pasaran kewangan ( saham, forex, crypto dan lain-lain) dan jangka masa.

  5. Skrip Pine membolehkan aplikasi langsung pada platform perdagangan.

Analisis Risiko

Beberapa risiko yang perlu dipertimbangkan:

  1. Potensi isyarat palsu dalam pasaran trend apabila ADX rendah.

  2. Stochastic adalah penunjuk yang tertinggal. Pasaran mungkin telah berbalik pada masa isyarat. Gabungkan dengan penunjuk utama.

  3. Perhentian dinamik tidak dapat sepenuhnya mengelakkan perubahan trend yang besar. Jarak berhenti yang munasabah adalah penting.

  4. Penyesuaian parameter yang tidak mencukupi memberi kesan negatif terhadap prestasi.

  5. Kejadian Black Swan memerlukan penangguhan strategi untuk mengelakkan kerugian yang tidak normal.

Arahan pengoptimuman

Beberapa cara untuk meningkatkan strategi:

  1. Menambah penapis dengan lebih banyak penunjuk seperti purata bergerak dan MACD meningkatkan kebolehpercayaan isyarat.

  2. Pengoptimuman parameter melalui backtesting membantu menemui tetapan optimum.

  3. Sesuaikan parameter berdasarkan instrumen dan jangka masa. Instrumen yang lebih cepat boleh menggunakan panjang yang lebih pendek.

  4. Masukkan output log terperinci menggunakan getInfo() untuk membolehkan analisis dan penyempurnaan yang lebih mudah.

  5. Menggambar titik isyarat dan garis stop-loss pada carta untuk pandangan tambahan.

  6. Membangunkan amaran tersuai untuk menerima pemberitahuan tepat pada masanya yang membolehkan campur tangan cepat.

Kesimpulan

Strategi ini menggabungkan kekuatan DMI dan Stochastic Oscillator untuk mengenal pasti arah trend dan tahap overbought / oversold untuk kemasukan perdagangan. Mekanisme stop loss dinamik yang inovatif juga membolehkan kawalan risiko yang lebih pintar. Dengan isyarat yang boleh dipercayai, penerapan yang luas, kemudahan penggunaan dan penyesuaian, ini adalah strategi perdagangan algoritma yang cekap. Pengoptimuman lanjut boleh membawa kepada prestasi yang unggul.


/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("DMI with Stochastic and Dynamic Stop-Loss", shorttitle="DMI_Stoch_SL", overlay=true)

length = input(14, title="DMI Length")
adxThreshold = input(25, title="ADX Threshold")
stochKLength = input(14, title="Stochastic %K Length")
stochDLength = input(3, title="Stochastic %D Length")

[diPlus, diMinus, adx] = ta.dmi(length, length)
stochKLine = ta.stoch(close, high, low, stochKLength)

var float lowestClose = na
var float highestClose = na
lowestClose := na(lowestClose) ? close : math.min(lowestClose, close)
highestClose := na(highestClose) ? close : math.max(highestClose, close)

longCondition = (diPlus > diMinus) and (adx > adxThreshold) and (stochKLine < 20)
shortCondition = (diMinus > diPlus) and (adx > adxThreshold) and (stochKLine > 80)

if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", stop=lowestClose)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", stop=highestClose)

Lebih lanjut