Indeks Pergerakan Arah Strategi Dagangan Dua Arah

Penulis:ChaoZhang, Tarikh: 2023-12-19 14:13:52
Tag:

img

Ringkasan

Strategi ini mengira Indeks Pergerakan Arah (DI) komoditi dan menggabungkannya dengan parameter had untuk melaksanakan perdagangan dua arah.

Prinsip Strategi

Penunjuk teras strategi ini adalah Indeks Pergerakan Arah (DI).

DI + = (DM + / Julat Benar) × 100 DI- = (DM- / Julat Benar) × 100

Di mana DM + mewakili Positif Pergerakan Arah, DM- mewakili Negatif Pergerakan Arah. Julat Benar mewakili turun naik baru-baru ini dengan mengira nilai maksimum harga tertinggi, harga terendah dan harga penutupan hari sebelumnya selama tiga hari.

Menurut definisi DI, apabila DI + > DI-, ia bermakna momentum pasaran semasa lebih kuat, yang tergolong dalam pasaran lembu; apabila DI- > DI+, ia bermakna momentum beruang lebih kuat daripada momentum lembu, yang tergolong dalam pasaran beruang.

Strategi ini menggunakan ciri ini dan menetapkan parameter had. Apabila DI + lebih besar daripada DI- dengan parameter had, ia menentukan bahawa pasaran semasa adalah pasaran lembu dan pergi panjang. Apabila DI- lebih besar daripada DI + dengan parameter had, ia menentukan bahawa pasaran semasa adalah pasaran beruang dan pergi pendek.

Sebagai contoh, jika parameter had ditetapkan kepada 3, peraturan perdagangan khusus adalah:

  1. Apabila DI+ - DI- > 3, pergi panjang
  2. Apabila DI- - DI+ > 3, pergi pendek

Oleh kerana terdapat perbezaan turun naik kecil antara DI + dan DI-, menetapkan parameter had dapat menapis beberapa dagangan tanpa arah yang ketara dan mengurangkan dagangan yang tidak perlu.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. DI boleh dipercayai dalam menilai arah pasaran

    DI secara langsung menilai trend pasaran dengan mengira kuasa lembu dan beruang. Teori ini mudah dan boleh dipercayai tanpa algoritma yang rumit seperti pemasangan lengkung.

  2. Parameter had boleh menapis isyarat dengan berkesan

    Parameter had menapis turun naik kecil tanpa arah yang signifikan, hanya memilih bahagian dengan arah yang signifikan untuk perdagangan, mengelakkan terperangkap.

  3. Mencapai perdagangan dua arah automatik

    Posisi panjang dan pendek boleh ditukar secara automatik berdasarkan penunjuk DI tanpa penilaian manual, mengurangkan kesukaran perdagangan.

  4. Jangka masa dagangan yang boleh disesuaikan

    Menyokong tetapan untuk hanya berdagang dalam julat tarikh yang boleh disesuaikan dan menutup semua kedudukan secara automatik selepas itu, fleksibel dan mudah.

  5. Hanya boleh dipilih panjang atau pendek

    Melalui suis panjang dan pendek, hanya isyarat satu arah boleh dipilih untuk melaksanakan strategi panjang atau pendek yang sesuai untuk persekitaran pasaran yang berbeza.

Analisis Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Kemungkinan DI memberi isyarat yang salah

    DI boleh memberikan isyarat yang salah jangka pendek apabila turun naik pasaran yang drastik berlaku, yang membawa kepada perdagangan yang gagal.

  2. Tetapan parameter had yang tidak betul

    Tetapan parameter had tinggi atau rendah yang tidak betul boleh menyebabkan terlalu sedikit atau terlalu banyak isyarat perdagangan.

  3. Tidak dapat menentukan titik akhir trend

    DI hanya dapat menentukan arah trend semasa dan tidak dapat menilai sama ada trend telah berakhir atau berbalik.

Penyelesaian untuk risiko termasuk:

  1. Gabungkan purata bergerak dan penunjuk lain untuk menapis isyarat DI

  2. Sesuaikan parameter had berdasarkan hasil backtest

  3. Gabungkan Volume, MACD dan lain-lain untuk menentukan sama ada pembalikan trend

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dengan cara berikut:

  1. Gabungkan penunjuk penilaian trend lain seperti Profil Pasaran

    Menggabungkan penunjuk seperti Profil Pasaran yang juga secara intuitif menilai kuasa pendek panjang dengan DI dapat meningkatkan ketepatan penilaian.

  2. Tambah strategi henti keuntungan dan henti kerugian

    Menetapkan penangguhan keuntungan, masa atau peratusan penangguhan kerugian boleh mengunci keuntungan dan mengurangkan kerugian.

  3. Sesuaikan parameter untuk produk tertentu

    Penyesuaian parameter had dan masa dagangan mengikut ciri produk yang berbeza dapat meningkatkan prestasi strategi.

  4. Pengoptimuman dinamik menggunakan pembelajaran mesin

    Menggunakan algoritma pembelajaran penguat untuk mengoptimumkan tetapan parameter secara dinamik berdasarkan isyarat langsung.

Ringkasan

Ringkasnya, strategi ini agak mudah dan praktikal. Ia menggunakan pengiraan DI untuk menentukan arah pasaran; menapis isyarat melalui parameter had; menyokong perdagangan dua arah atau hanya panjang / pendek; membolehkan menetapkan bingkai masa perdagangan. Kelebihan utamanya adalah kebolehpercayaan yang tinggi dan penapisan isyarat yang berkesan. Ia juga mempunyai masalah seperti isyarat yang salah dan tetapan parameter. Kita boleh memperbaikinya dengan menggabungkan penunjuk lain, menetapkan stop-loss / keuntungan, menyesuaikan parameter dan lain-lain, atau mengoptimumkannya secara dinamik dengan pembelajaran mesin. Secara keseluruhan ia sesuai sebagai penunjuk arah untuk digabungkan dengan strategi lain untuk hasil yang baik.


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

//@version=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Lebih lanjut