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:
Mengira peratusan penyimpangan harga daripada MA panjang (contohnya 200 hari) sebagai DMI pertama
Mengira penyimpangan daripada MA purata (contohnya 50 hari) sebagai DMI ke-2.
Mengira penyimpangan daripada MA pendek (contohnya 20 hari) sebagai DMI ke-3.
Apabila DMI ke-3 lebih tinggi daripada DMI ke-1, penurunan.
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.
DMI menggabungkan penglihatan pelbagai tempoh untuk ketahanan
Membandingkan kekuatan relatif berbanding tahap mutlak
Tempoh MA yang fleksibel untuk penyesuaian pasaran
DMI mempunyai lag dan mungkin terlepas pembalikan
Pengoptimuman yang teliti parameter tempoh
Rendah kepada beberapa isyarat palsu
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")