Strategi Indeks Momentum Dinamis

Penulis:ChaoZhang, Tanggal: 2023-09-14 16:15:42
Tag:

Logika Strategi

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:

  1. Menghitung persentase penyimpangan harga dari MA panjang (misalnya 200 hari) sebagai DMI pertama

  2. Menghitung penyimpangan dari MA rata-rata (misalnya 50 hari) sebagai DMI ke-2.

  3. Menghitung penyimpangan dari MA pendek (misalnya 20 hari) sebagai DMI ke-3.

  4. Ketika DMI ketiga lebih tinggi dari DMI pertama, bearish.

  5. 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.

Keuntungan

  • DMI menggabungkan lookback multi-periode untuk ketahanan

  • Membandingkan kekuatan relatif vs tingkat absolut

  • Periode MA yang fleksibel untuk adaptasi pasar

Risiko

  • DMI memiliki keterlambatan dan mungkin melewatkan pembalikan

  • Optimalisasi parameter periode yang cermat

  • Cenderung terhadap beberapa sinyal palsu

Ringkasan

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")

Lebih banyak