Strategi ini diperdagangkan berdasarkan Indeks Momentum Dinamis (DMI). DMI mengukur persentase penyimpangan antara harga dan rata-rata bergerak dari berbagai panjang untuk menentukan tren.
Logika perdagangan adalah:
Menghitung persentase penyimpangan harga dari MA panjang (misalnya 200 hari) sebagai DMI pertama
Menghitung penyimpangan dari MA rata-rata (misalnya 50 hari) sebagai DMI ke-2.
Menghitung penyimpangan dari MA pendek (misalnya 20 hari) sebagai DMI ke-3.
Ketika DMI ketiga lebih tinggi dari DMI pertama, bearish.
Sinyal perdagangan yang dihasilkan berdasarkan hubungan DMI
Dengan membandingkan kekuatan relatif secara dinamis di seluruh periode MA, DMI bertujuan untuk mengidentifikasi titik balik tren. Parameter dapat dioptimalkan untuk siklus yang berbeda.
DMI menggabungkan lookback multi-periode untuk ketahanan
Membandingkan kekuatan relatif vs tingkat absolut
Periode MA yang fleksibel untuk adaptasi pasar
DMI memiliki keterlambatan dan mungkin melewatkan pembalikan
Optimalisasi parameter periode yang cermat
Cenderung terhadap beberapa sinyal palsu
DMI menilai titik balik dengan membandingkan dinamika kekuatan multi-MA periode. Optimasi dapat sesuai dengan lingkungan pasar yang berbeda.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 31/06/2018 // The related article is copyrighted materialfrom Stocks & Commodities Dec 2009 // My strategy modification. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="CMOaDisparity Index Backtest") LengthFirst = input(200, minval=1) LengthSecond = input(50, minval=1) LengthThird = input(20, minval=1) ShowFirst = input(type=bool, defval=true) ShowSecond = input(type=bool, defval=true) ShowThird = input(type=bool, defval=true) reverse = input(false, title="Trade reverse") xEMAFirst = ema(close,LengthFirst) xEMASecond = ema(close,LengthSecond) xEMAThird = ema(close,LengthThird) xResFirst = 100 * (close - xEMAFirst) / close xResSecond = 100 * (close - xEMASecond) / close xResThird = 100 * (close - xEMAThird) / close pos = iff(xResThird > xResFirst, -1, iff(xResThird < xResSecond, 1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(ShowFirst ? xResFirst : na, color=red, title="DIX 1") plot(ShowSecond ? xResSecond : na, color=blue, title="DIX 2") plot(ShowThird ? xResThird : na, color=green, title="DIX 3")