
Strategi ini didasarkan pada indikator DMI yang dibangun untuk menilai arah tren harga saham dengan memantau persilangan + DI dan - DI, bekerja sama dengan indikator ADX untuk mengidentifikasi tren yang kuat dan lemah, sehingga memungkinkan pelacakan tren.
Strategi ini menggunakan dua komponen dari indikator DMI: +DI dan -DI. +DI mengukur momentum naik, +DI naik-DI menunjukkan momentum naik yang kuat dari posisi pembeli. -DI mengukur momentum turun, -DI turun +DI menunjukkan momentum turun yang kuat dari posisi penjual.
Ketika + DI di atas melewati - DI, menunjukkan tren naik terbentuk, saat ini strategi untuk masuk dengan banyak kepala. Setelah masuk, stop loss bergerak linier melacak sebagian dari harga tertinggi. Ketika harga terjadi rebound, harga stop loss akan turun, dan sebagian besar mengunci keuntungan sebelumnya.
Ketika -DI turun + DI, berarti tren turun diganti, dan saat ini strategi berpatokan. Anda dapat mengidentifikasi kekuatan dan kelemahan tren melalui indikator ADX, semakin tinggi ADX, menunjukkan tren harga saham semakin jelas. Oleh karena itu, strategi menggunakan ADX sebagai indikator penilaian tambahan, dan hanya masuk ketika ADX berada di dalam suatu zona.
Secara keseluruhan, strategi ini menangkap titik-titik perubahan tren harga saham dan memungkinkan pelacakan tren rata-rata bergerak.
Keunggulan dari strategi ini adalah tiga hal:
Menggunakan indikator DMI untuk menentukan arah tren harga saham secara akurat dan dapat diandalkan. DMI lebih akurat untuk menentukan pembalikan tren daripada indikator seperti rata-rata bergerak sederhana.
Menggunakan indikator ADX untuk mengidentifikasi kekuatan dan kelemahan tren, menghindari perdagangan yang sering terjadi dalam situasi yang bergejolak.
Mekanisme stop loss bergerak linier, dapat secara dinamis menyesuaikan posisi stop loss, stop loss lebih awal ketika tren berbalik. Dan mengunci sebagian dari keuntungan, secara efektif mengendalikan risiko.
Aturan strategi yang sederhana dan jelas, mudah dipahami dan diterapkan, cocok untuk perdagangan kuantitatif.
Risiko utama dari strategi ini adalah:
Indikator DMI mungkin gagal dalam beberapa pasar khusus. DMI tidak berlaku untuk semua pasar, dan mudah menghasilkan sinyal yang salah ketika tren tidak jelas.
Resiko harga saham melonjak kembali, dan setelah melewati titik stop loss, resikonya akan turun lagi. Ada beberapa ruang peredam untuk mengurangi risiko ini.
Risiko pengaturan parameter ADX yang tidak tepat. Parameter ADX secara langsung mempengaruhi hasil saat memilih strategi, jika terlalu besar atau terlalu kecil, itu akan mempengaruhi kinerja.
Karena menggunakan metode stop loss bergerak linier, risiko mudah terhenti dalam penarikan cepat. Anda dapat menyesuaikan parameter pelacakan stop loss sesuai dengan situasi tertentu.
Risiko dapat diturunkan lebih lanjut melalui pengaturan parameter, penghentian ketat, dan pengoptimalan kerangka prosedur.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Menggunakan MACD, KDJ dan indikator lainnya untuk penilaian tambahan, meningkatkan stabilitas strategi.
Uji berbagai cara penghentian, seperti penghentian pergerakan kurva, penghentian pergerakan waktu dan lain-lain.
Meningkatkan mekanisme manajemen posisi, menaikkan posisi secara bertahap setelah menentukan arah tren, meningkatkan tingkat keuntungan.
Menggabungkan faktor frekuensi tinggi, pembelajaran mesin dan metode lainnya untuk mengoptimalkan parameter DMI dan ADX secara dinamis, membuat strategi lebih cerdas.
Menambahkan modul pengendalian angin berprogram, menggunakan anggaran risiko dan metode lainnya untuk mengontrol maksimal penarikan.
Berkolaborasi dengan berbagai cara dapat meningkatkan efisiensi, stabilitas, dan keamanan strategi secara efektif.
Strategi ini secara keseluruhan menjalankan logika yang jelas dan mudah dimengerti, menggunakan indikator DMI untuk menentukan arah tren harga saham, indikator ADX untuk menilai kekuatan tren, metode linear untuk menghentikan kerugian secara efektif untuk mengendalikan risiko. Kinerja strategi relatif stabil, tetapi masih perlu untuk mencegah risiko tertentu. Dengan terus mengoptimalkan pengujian, secara bertahap menyempurnakan stabilitas dan efisiensi strategi.
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 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/
//@version=5
//1.0 - 240202 @caddjax
strategy(title = "+DI Crossover", overlay=false)
//DMI + ADX Chart w/ overlay
// © jrregencia
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(6, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100)
adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99)
//DI cross alert
DIPcross = ta.crossover(plus, minus) ? plus : na
plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute)
plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2)
p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1)
p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1)
adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid)
adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid)
fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50)
fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90)
// Configure trail stop level with input options (optional)
longTrailPerc = input.float(3, title="Trail Long Loss (%)",
minval=0.0, step=0.1) * 0.01
// Determine trail stop loss prices
longStopPrice = 0.0
// Determine entry condition
enterLong = ta.crossover(plus, minus) ? plus : na
longStopPrice := if strategy.position_size > 0
stopValue = high[1] * (1 - longTrailPerc)
math.max(stopValue, longStopPrice[1])
else
0
// Submit entry orders
if enterLong
strategy.entry("EL", strategy.long)
// Submit exit orders for trail stop loss price
if strategy.position_size > 0
strategy.exit("XL TRL STP", stop=longStopPrice)