Strategi Indeks Momentum Dinamik

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

Logika Strategi

Strategi ini berdagang berdasarkan Indeks Momentum Dinamik (DMI). DMI mengukur peratusan penyimpangan antara harga dan purata bergerak dengan panjang yang berbeza untuk menentukan trend.

Logik perdagangan adalah:

  1. Mengira peratusan penyimpangan harga daripada MA panjang (contohnya 200 hari) sebagai DMI pertama

  2. Mengira penyimpangan daripada MA purata (contohnya 50 hari) sebagai DMI ke-2.

  3. Mengira penyimpangan daripada MA pendek (contohnya 20 hari) sebagai DMI ke-3.

  4. Apabila DMI ke-3 lebih tinggi daripada DMI ke-1, penurunan.

  5. Isyarat perdagangan yang dijana berdasarkan hubungan DMI

Dengan membandingkan kekuatan relatif secara dinamik merentasi tempoh MA, DMI bertujuan untuk mengenal pasti titik perubahan trend. Parameter boleh dioptimumkan untuk kitaran yang berbeza.

Kelebihan

  • DMI menggabungkan penglihatan pelbagai tempoh untuk ketahanan

  • Membandingkan kekuatan relatif berbanding tahap mutlak

  • Tempoh MA yang fleksibel untuk penyesuaian pasaran

Risiko

  • DMI mempunyai lag dan mungkin terlepas pembalikan

  • Pengoptimuman yang teliti parameter tempoh

  • Rendah kepada beberapa isyarat palsu

Ringkasan

DMI menilai titik perubahan dengan membandingkan dinamik kekuatan tempoh multi-MA. Pengoptimuman boleh sesuai dengan persekitaran pasaran yang berbeza. Tetapi batasan lag memerlukan penapis tambahan.


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