Strategi perdagangan DMI & Stochastic dengan Stop-loss dinamis

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

img

Gambaran umum

Strategi trading ini menggabungkan Indeks Gerak Arah (DMI) dan Osilator Stokastik untuk menghasilkan sinyal perdagangan. DMI, dengan garis DI +, DI- dan Indeks Arah Rata-rata (ADX), mengukur kekuatan dan arah tren. Strategi ini pergi panjang (beli) ketika DI + di atas DI-, ADX di atas 25 dan Stochastic %K di bawah 20 (terlalu laris).

Logika Strategi

Strategi ini didasarkan pada komponen utama berikut:

  1. DMI untuk identifikasi tren: DI+, DI- dan ADX garis DMI menentukan arah tren pasar dan kekuatan. DI+ di atas DI- sinyal uptrend sementara DI- di atas DI+ sinyal downtrend. Nilai ADX yang lebih tinggi menunjukkan tren yang lebih kuat.

  2. Stochastic untuk overbought/oversoldNilai di bawah 20 menunjukkan oversold sedangkan di atas 80 berarti overbought.

  3. Logika sinyal: Menggabungkan DMI dan Stochastic, strategi pergi panjang ketika DI+>DI-(uptrend), ADX>25 (kekuatan tren) dan Stochastic %K <20 (oversold).

  4. Stop-loss dinamis: Penutupan tertinggi dan terendah terbaru setelah masuk digunakan sebagai tingkat stop loss dinamis, memungkinkan kontrol risiko adaptif.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Keandalan yang lebih tinggi menggunakan konfirmasi ganda dari DMI (trend) & Stochastic (overbought/oversold).

  2. Stop loss dinamis yang inovatif berdasarkan perubahan harga baru-baru ini memungkinkan pengendalian risiko yang lebih baik.

  3. Parameter yang lebih sedikit membuat optimasi dan implementasi mudah.

  4. Kemampuan beradaptasi yang luas di pasar keuangan (saham, forex, crypto dll.) dan kerangka waktu.

  5. Skrip pinus memungkinkan aplikasi langsung pada platform perdagangan.

Analisis Risiko

Beberapa risiko yang perlu dipertimbangkan:

  1. Potensi sinyal palsu di pasar tren ketika ADX rendah.

  2. Stochastic adalah indikator yang tertinggal. Pasar mungkin telah berbalik pada saat sinyal.

  3. Perhentian dinamis tidak dapat sepenuhnya menghindari perubahan tren yang besar.

  4. Penyesuaian parameter yang tidak memadai berdampak negatif pada kinerja.

  5. Black Swan Event membutuhkan penangguhan strategi untuk mencegah kerugian abnormal.

Arahan Optimasi

Beberapa cara untuk meningkatkan strategi:

  1. Menambahkan filter dengan lebih banyak indikator seperti moving average dan MACD meningkatkan keandalan sinyal.

  2. Optimasi parameter melalui backtesting membantu menemukan pengaturan optimal.

  3. Sesuaikan parameter berdasarkan instrumen dan kerangka waktu. Instrumen yang lebih cepat dapat menggunakan panjang yang lebih pendek.

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

  5. Grafik titik sinyal dan garis stop-loss pada grafik untuk wawasan tambahan.

  6. Mengembangkan peringatan khusus untuk menerima pemberitahuan tepat waktu yang memungkinkan intervensi cepat.

Kesimpulan

Strategi ini menggabungkan kekuatan DMI dan Stochastic Oscillator untuk mengidentifikasi arah tren dan tingkat overbought / oversold untuk entri perdagangan. Mekanisme stop loss dinamis inovatif juga memungkinkan kontrol risiko yang lebih cerdas. Dengan sinyal yang dapat diandalkan, penerapan yang luas, kemudahan penggunaan dan kustomisasi, ini adalah strategi perdagangan algoritmik yang efisien. Optimasi lebih lanjut dapat menyebabkan kinerja 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 banyak