Indeks Gerakan Arah Strategi Perdagangan Dua Arah

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

img

Gambaran umum

Strategi ini menghitung Indeks Gerakan Arah (DI) komoditas dan menggabungkannya dengan parameter batas untuk menerapkan perdagangan dua arah.

Prinsip Strategi

Indikator inti dari strategi ini adalah Indeks Gerakan Arah (DI).

DI+ = (DM+ / True Range) × 100 DI- = (DM- / True Range) × 100

Di mana DM+ mewakili Positif Gerakan Arah, DM- mewakili Negatif Gerakan Arah. Jangkauan Sejati mewakili volatilitas baru-baru ini dengan menghitung nilai maksimum harga tertinggi, harga terendah dan harga penutupan hari sebelumnya selama tiga hari.

Menurut definisi DI, ketika DI+ > DI-, itu berarti momentum pasar saat ini lebih kuat, termasuk pasar bull; ketika DI- > DI+, itu berarti momentum bear lebih kuat daripada momentum bull, termasuk pasar bear.

Strategi ini memanfaatkan fitur ini dan menetapkan parameter batas. Ketika DI + lebih besar dari DI- dengan parameter batas, ia menentukan bahwa pasar saat ini adalah pasar bull dan pergi panjang. Ketika DI- lebih besar dari DI + dengan parameter batas, ia menentukan bahwa pasar saat ini adalah pasar beruang dan pergi pendek.

Misalnya, jika parameter batas ditetapkan menjadi 3, aturan perdagangan khusus adalah:

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

Karena sering ada perbedaan berfluktuasi kecil antara DI + dan DI-, menetapkan parameter batas dapat menyaring beberapa perdagangan tanpa arah yang signifikan dan mengurangi perdagangan yang tidak perlu.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. DI dapat diandalkan dalam menilai arah pasar

    DI secara langsung menilai tren pasar dengan menghitung kekuatan bulls dan bears.

  2. Parameter batas dapat secara efektif menyaring sinyal

    Parameter batas menyaring fluktuasi kecil tanpa arah yang signifikan, hanya memilih bagian dengan arah yang signifikan untuk perdagangan, menghindari terjebak.

  3. Mencapai perdagangan dua arah otomatis

    Posisi panjang dan pendek dapat secara otomatis beralih berdasarkan indikator DI tanpa penilaian manual, mengurangi kesulitan perdagangan.

  4. Kerangka waktu perdagangan yang dapat disesuaikan

    Mendukung pengaturan hanya untuk perdagangan dalam kisaran tanggal yang dapat disesuaikan dan menutup semua posisi secara otomatis setelahnya, fleksibel dan nyaman.

  5. Hanya dapat dipilih panjang atau pendek

    Melalui saklar panjang dan pendek, hanya sinyal satu arah yang dapat dipilih untuk menerapkan strategi panjang atau pendek yang cocok untuk lingkungan pasar yang berbeda.

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Kemungkinan DI memberikan sinyal yang salah

    DI dapat memberikan sinyal yang salah jangka pendek ketika terjadi fluktuasi pasar yang drastis, yang mengarah pada kegagalan perdagangan.

  2. Pengaturan parameter batas yang tidak benar

    Pengaturan parameter batas tinggi atau rendah yang tidak benar dapat menyebabkan terlalu sedikit atau terlalu banyak sinyal perdagangan.

  3. Tidak dapat menentukan titik akhir tren

    DI hanya dapat menentukan arah tren saat ini dan tidak dapat menilai apakah tren telah berakhir atau terbalik.

Solusi untuk risiko termasuk:

  1. Menggabungkan rata-rata bergerak dan indikator lain untuk menyaring sinyal DI

  2. Sesuaikan parameter batas berdasarkan hasil backtest

  3. Gabungkan Volume, MACD dll untuk menentukan apakah pembalikan tren

Arahan Optimasi

Strategi dapat dioptimalkan lebih lanjut dengan cara berikut:

  1. Menggabungkan indikator penilaian tren lainnya seperti Profil Pasar

    Menggabungkan indikator seperti Market Profile yang juga secara intuitif menilai daya jangka pendek dengan DI dapat meningkatkan akurasi penilaian.

  2. Tambahkan strategi stop profit dan stop loss

    Menetapkan stop-profit, waktu atau persentase stop-loss dapat mengunci keuntungan dan mengurangi kerugian.

  3. Sesuaikan parameter untuk produk tertentu

    Mengatur parameter batas dan waktu perdagangan sesuai dengan karakteristik produk yang berbeda dapat meningkatkan kinerja strategi.

  4. Optimasi dinamis menggunakan pembelajaran mesin

    Menerapkan algoritma pembelajaran penguatan untuk mengoptimalkan pengaturan parameter secara dinamis berdasarkan sinyal langsung.

Ringkasan

Singkatnya, strategi ini relatif sederhana dan praktis. Ini memanfaatkan perhitungan DI untuk menentukan arah pasar; menyaring sinyal melalui parameter batas; mendukung perdagangan dua arah atau hanya panjang / pendek; memungkinkan pengaturan kerangka waktu perdagangan. Keuntungan utama adalah keandalan tinggi dan penyaringan sinyal yang efektif. Ini juga memiliki masalah seperti sinyal dan pengaturan parameter yang salah. Kita dapat memperbaikinya dengan menggabungkan indikator lain, mengatur stop-loss / profit, menyesuaikan parameter dll, atau mengoptimalkannya secara dinamis dengan pembelajaran mesin. Secara keseluruhan, ini cocok sebagai indikator arah untuk dikombinasikan dengan strategi lain untuk hasil yang layak.


/*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 banyak