Strategi ini dibangun berdasarkan indikator DMI dengan memantau persilangan +DI dan -DI untuk menentukan arah tren harga saham, dan menggunakan indikator ADX untuk mengidentifikasi kekuatan tren, sehingga dapat mencapai pelacakan tren. Ketika +DI melintasi di atas -DI, pergi panjang; ketika harga stop loss dipicu atau -DI melintasi di bawah +DI, tutup posisi.
Strategi ini menggunakan dua komponen dari indikator DMI: +DI dan -DI. +DI mengukur momentum naik. Crossover naik +DI atas -DI menunjukkan penguatan momentum naik. -DI mengukur momentum turun. Crossover turun -DI di bawah +DI menunjukkan penguatan momentum turun.
Ketika +DI melintasi di atas -DI, sebuah tren naik muncul dan strategi berjalan panjang. Setelah memasuki posisi, stop loss linier trailing melacak persentase tertentu dari harga tertinggi. Ketika harga menarik kembali, harga stop loss akan bergerak ke bawah sesuai, mengunci beberapa keuntungan sebelumnya sampai batas tertentu.
Ketika -DI melintasi di bawah +DI, sebuah downtrend mengambil alih dan strategi menutup posisinya. Indikator ADX dapat digunakan untuk mengidentifikasi kekuatan tren. Semakin tinggi ADX, semakin jelas tren. Dengan demikian, strategi menggunakan ADX sebagai indikator tambahan untuk masuk, hanya memasuki posisi ketika ADX berada dalam kisaran tertentu.
Singkatnya, strategi ini menangkap titik perubahan dalam tren harga untuk mewujudkan pelacakan tren rata-rata bergerak.
Keuntungan utama dari strategi ini tercermin dalam tiga aspek:
Menggunakan indikator DMI untuk menentukan arah tren harga adalah akurat dan dapat diandalkan.
Menerapkan indikator ADX untuk mengidentifikasi kekuatan tren menghindari perdagangan yang sering di pasar yang berbelit-belit, membuat strategi lebih kuat.
Mekanisme stop trailing linear dapat secara dinamis menyesuaikan posisi stop loss dan keluar lebih awal ketika tren berbalik, mengunci keuntungan parsial untuk mengontrol risiko secara efektif.
Aturan strategi sederhana dan jelas, mudah dimengerti dan diterapkan, cocok untuk perdagangan algoritmik.
Risiko utama dari strategi ini adalah:
Kemungkinan bahwa indikator DMI gagal di pasar khusus tertentu. DMI tidak berlaku untuk semua pasar. Hal ini dapat menghasilkan sinyal palsu ketika tren tidak jelas.
Risiko harga yang bergeser di bawah level stop loss sebelum berbalik ke bawah lebih jauh.
Risiko dari pengaturan parameter ADX yang tidak benar. parameter ADX secara langsung mempengaruhi hasil strategi waktu. kinerja akan terpengaruh jika diatur terlalu tinggi atau terlalu rendah.
Kemudahan untuk dihentikan dalam tren naik yang maju dengan cepat karena metode trailing stop linier. Parameter trailing stop dapat disesuaikan berdasarkan situasi tertentu.
Risiko dapat dikurangi lebih lanjut melalui penyesuaian parameter, stop loss yang ketat, mengoptimalkan arsitektur program, dll.
Strategi ini dapat dioptimalkan dalam beberapa aspek:
Gunakan indikator lain seperti MACD, KDJ untuk penilaian tambahan untuk meningkatkan stabilitas strategi.
Uji metode stop loss yang berbeda seperti curve trailing stop, time-based trailing stop, dll.
Menambahkan mekanisme ukuran posisi untuk secara bertahap membangun posisi setelah arah tren dikonfirmasi, meningkatkan profitabilitas.
Menggabungkan faktor frekuensi tinggi, pembelajaran mesin dll untuk secara dinamis mengoptimalkan parameter DMI dan ADX untuk kecerdasan yang lebih tinggi.
Tambahkan modul pengendalian risiko programmatic menggunakan penganggaran risiko dll untuk mengelola penarikan maksimum secara ketat.
Berbagai cara dapat dikombinasikan untuk secara efektif meningkatkan efisiensi, stabilitas dan keamanan strategi.
Logika keseluruhan strategi ini jelas dan mudah dipahami, menggunakan indikator DMI untuk menentukan arah tren harga dan indikator ADX sebagai pengukur tambahan kekuatan tren, dengan stop trailing linear secara efektif mengendalikan risiko. Strategi ini relatif stabil tetapi masih membutuhkan hati-hati terhadap risiko tertentu. Melalui optimasi dan pengujian terus-menerus, peningkatan bertahap dapat dilakukan pada kekuatan dan efisiensi strategi. Diyakini bahwa strategi ini memiliki potensi untuk menjadi perwakilan yang sangat baik dari strategi pelacakan rata-rata tren bergerak.
/*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)