Strategi Dagangan Harian Dual DI Crossover

Penulis:ChaoZhang, Tarikh: 2023-11-13 11:32:08
Tag:

img

Ringkasan

Strategi ini menghasilkan isyarat perdagangan berdasarkan persilangan penunjuk arah positif (DI +) dan penunjuk arah negatif (DI-) yang dikira dari julat sebenar purata (ATR).

Logika Strategi

  1. Mengira ATR(14): Mengira julat sebenar purata selama 14 hari yang lalu menggunakan harga tinggi, rendah dan dekat.

  2. Mengira DI+ dan DI-:

    • DI+ = 100 * RMA(MAX(UP,0),N) / ATNR

    • DI- = 100 * RMA(MAX(DOWN,0),N) / ATNR

    Di mana UP adalah perbezaan antara paras tertinggi semasa dan penutupan sebelumnya, DOWN adalah perbezaan antara paras rendah semasa dan penutupan sebelumnya, N adalah tempoh parameter, lalai kepada 14, dan ATNR adalah ATR yang dikira dari langkah 1.

  3. Menentukan masuk dan keluar:

    • Apabila DI + melintasi DI-, isyarat beli dihasilkan.

    • Apabila DI + melintasi di bawah DI-, isyarat jual dihasilkan.

  4. Tetapkan stop loss dan mengambil keuntungan:

    • Stop loss panjang ialah harga masuk dikurangkan ATR didarabkan dengan pengganda stop loss

    • mengambil keuntungan panjang adalah harga masuk ditambah ATR didarabkan dengan pengganda mengambil keuntungan

    • Stop loss pendek ialah harga kemasukan ditambah ATR didarabkan dengan pengganda stop loss

    • Keuntungan mengambil pendek adalah harga masuk dikurangkan ATR dikalikan dengan pengganda mengambil keuntungan

Analisis Kelebihan

  1. Menggunakan silang DI + / DI- untuk menentukan pembalikan trend memberikan isyarat tepat pada masanya untuk arah trend baru.

  2. ATR sebagai penunjuk stop loss/take profit dinamik boleh menetapkan tahap yang munasabah berdasarkan turun naik pasaran.

  3. Strategi ini mempunyai beberapa parameter dan mudah difahami dan dilaksanakan.

  4. Hasil ujian belakang menunjukkan strategi ini mempunyai faktor keuntungan positif dan melebihi beli & pegang.

Risiko dan Penyelesaian

  1. Risiko isyarat palsu daripada persilangan DI

    • Menapis isyarat dengan purata bergerak dan lain-lain untuk mengelakkan pecah palsu.
  2. Stop loss/take profit terlalu dekat

    • Sesuaikan pengganda ATR untuk menampung turun naik.
  3. Tidak berkesan di pasaran terhad

    • Gabungkan dengan penunjuk lain untuk menapis isyarat dalam penyatuan.
  4. Risiko penggunaan

    • Pengurangan adalah boleh diterima tetapi tidak dapat dielakkan untuk strategi sistematik.

Cadangan Pengoptimuman

  1. Tambah penapis seperti purata bergerak untuk mengelakkan isyarat palsu dalam tempoh julat.

  2. Melaksanakan saiz kedudukan seperti pecahan tetap atau Martingale untuk mengawal pengeluaran dan meningkatkan keuntungan.

  3. Mengoptimumkan parameter ATR untuk memadankan turun naik instrumen dagangan yang berbeza.

  4. Pengoptimuman parameter pada tempoh DI, tempoh ATR, pengganda ATR dan lain-lain untuk mencari kombinasi yang optimum.

  5. Tambah logik malam dan sesi awal untuk menjalankan strategi 24/7.

Kesimpulan

Ini adalah strategi yang mudah dan praktikal menghasilkan isyarat dari crossover DI dan menetapkan stop loss / mengambil keuntungan dinamik dengan ATR. Dengan beberapa parameter, ia mudah untuk diuji dan dioptimumkan. Tetapi crossover DI kurang berkesan semasa penyatuan. Ke hadapan, menggabungkan penapis tambahan adalah kawasan utama penambahbaikan. Secara keseluruhan strategi ini menunjukkan prestasi yang stabil yang sesuai untuk perdagangan harian jangka pendek.


/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
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/
// © TheHulkTrading
//@version=4
strategy("DI Crossing Daily Straregy HulkTrading", overlay=true)
// ATR Multiplier. Recommended values between 1..4
atr_multiplier = input(1, minval=1, title="ATR Multiplier") 
//Length of DI. Recommended default value = 14
length = input(14, minval=1, title="Length di")
up = change(high)
down = -change(low)
range = rma(tr, 14)

//DI+ and DI- Calculations
di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range)
di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range)

//Long and short conditions
longCond = crossover(di_plus,di_minus)
shortCond = crossunder(di_plus,di_minus) 


//Stop levels and take profits
stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14)
take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14)
stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14)
take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14)


//Entries and exits 
strategy.entry("Long", strategy.long, when=longCond)
strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long)
strategy.entry("Short", strategy.short, when=shortCond)
strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)



Lebih lanjut