Strategi ini menggabungkan Indeks Gerakan Arah (DMI) dan moving average untuk mengidentifikasi arah tren dan menghasilkan sinyal perdagangan. Ini akan menghasilkan sinyal beli dan jual ketika DMI menunjukkan harga berada dalam keadaan tren dan moving average mengkonfirmasi arah tren.
Strategi ini didasarkan pada dua indikator utama:
DMI, termasuk DMI+ dan DMI-, digunakan untuk mengidentifikasi keberadaan dan arah tren. Ketika DMI+ berada di atas DMI-, tren naik hadir. Ketika DMI- berada di atas DMI+, tren menurun hadir.
Rata-rata bergerak, biasanya ditetapkan untuk 15 sampai 50 hari, digunakan untuk menentukan arah tren harga.
Strategi ini pertama-tama menghitung DMI+, DMI-, dan moving average. Ketika DMI menunjukkan keadaan tren (DMI+ di atas DMI- atau sebaliknya) dan moving average mengkonfirmasi arah, sinyal perdagangan dihasilkan. Secara khusus:
Ketika DMI + melintasi di atas DMI- dan harga melintasi di atas MA, pergi panjang.
Ketika DMI- melintasi di atas DMI + dan harga melintasi di bawah MA, pergi pendek.
Opsi input terbalik juga disertakan. Ketika diaktifkan, sinyal panjang dan pendek terbalik.
Menggabungkan indikator tren seperti DMI dan indikator tren seperti moving average dapat meningkatkan keandalan sinyal dengan memanfaatkan kekuatan keduanya.
Keuntungan dari DMI adalah identifikasi cepat tren yang muncul. Rata-rata bergerak membantu menyaring kebisingan dan mengkonfirmasi arah tren. Menggunakan keduanya bersama memungkinkan entri tren lebih awal sambil menghindari sinyal palsu di pasar non-trend.
Opsi terbalik juga menambah fleksibilitas untuk berdagang dengan atau melawan tren.
Risiko utama dari strategi ini adalah:
Sinyal yang salah dapat terjadi di sekitar transisi tren, yang menyebabkan kerugian.
Pembentukan tren membutuhkan waktu. Sementara itu, fluktuasi harga dapat menghasilkan sinyal palsu. Perpanjangan periode DMI dan MA dapat menyaring kebisingan ini.
Dengan reverse option, ukuran kerugian harus terbatas dan trailing stop digunakan untuk mengunci keuntungan.
Parameter perlu dioptimalkan kembali untuk produk dan kerangka waktu yang berbeda. Menyalin parameter secara langsung mungkin tidak bekerja dengan baik.
Optimasi yang mungkin untuk strategi ini meliputi:
Mencoba periode rata-rata bergerak yang berbeda untuk menemukan yang paling cocok untuk transisi tren.
Memeriksa periode perataan DMI untuk menyaring pembalikan pendek dalam tren.
Mengevaluasi efek dari opsi terbalik versus default trend-mengikuti dalam backtest sejarah untuk memilih pendekatan yang lebih baik.
Menggabungkan strategi stop seperti trailing stop, time stop, atau breakout stop untuk membatasi ukuran kerugian.
Mengevaluasi kinerja parameter di berbagai produk dan kerangka waktu dan mengoptimalkan parameter.
Menambahkan filter seperti RSI untuk menghindari sinyal palsu pada ekstrem lokal.
Strategi ini menggabungkan kekuatan DMI yang mengikuti tren dan indikator rata-rata bergerak untuk memasuki tren lebih awal sambil menghindari whipsaws di pasar yang bergolak. Opsi terbalik juga menambahkan fleksibilitas. Peningkatan stabilitas lebih lanjut dapat datang dari optimasi parameter, berhenti, dan menggabungkan dengan filter tambahan. Namun, parameter harus diuji ulang untuk penerapan di berbagai produk dan kerangka waktu.
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 03/03/2017 // The related article is copyrighted material from Stocks & Commodities Aug 2009 // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System") Length_MA = input(30, minval=1) Length_DMI = input(14, minval=1) reverse = input(false, title="Trade reverse") xMA = sma(close, Length_MA) up = change(high) down = -change(low) trur = rma(tr, Length_DMI) xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur) xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur) nPDI = xPDI nNDI = xNDI nMA = xMA nPDI_1 = xPDI[1] nNDI_1 = xNDI[1] nMA_1 = xMA[1] bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) bMALong = iff(close > nMA and close[1] < nMA_1, true, iff(close < nMA and close[1] > nMA_1, false, false)) bMAShort = iff(close > nMA and close[1] < nMA_1, false, iff(close < nMA and close[1] > nMA_1, true, false)) pos = iff(bMDILong and bMALong, 1, iff(bMDIShort and bMAShort, -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(nPDI, color=green, title="DMI Plus") plot(nNDI, color=red, title="DMI Minus")