
Strategi ini menggunakan gabungan dua indikator kuat yang terbina dalam pandangan perdagangan, iaitu penunjuk arah bergerak (DMI) dan penyokong harga turun naik (DPO), untuk membentuk asas keputusan perdagangan yang boleh dipercayai. Logik teras strategi ini adalah menilai apakah nilai indikator DPO lebih besar daripada 0 jika lebih besar daripada 0 menghasilkan isyarat multihead jika penunjuk DMI muncul di persimpangan emas; jika penunjuk DMI muncul di persimpangan mati, menilai apakah nilai indikator DPO lebih kecil daripada 0 jika kurang daripada 0 menghasilkan isyarat kosong.
Strategi ini menggunakan indikator DMI untuk menentukan arah dan kekuatan trend. DMI terdiri daripada tiga kurva: +DI, -DI dan ADX. +DI mewakili kekuatan multi-arah, -DI mewakili kekuatan kosong, dan persimpangan mereka dapat menentukan arah trend semasa; ADX mewakili kekuatan trend, nilai yang lebih tinggi menunjukkan trend yang lebih jelas.
Untuk menyaring isyarat palsu yang dihasilkan dalam gegaran selang, strategi memperkenalkan penunjuk DPO untuk penilaian tambahan. Penunjuk DPO mewakili sejauh mana harga menyimpang dari orbitnya, DPO adalah positif apabila harga berada di atas orbit tengah, negatif di bawah. Strategi ini menggunakan positif negatif penunjuk DPO untuk menentukan sama ada ia kini berada dalam trend, jika penunjuk DMI muncul bersilang tetapi penunjuk DPO mendekati tahap 0, ia akan dinilai sebagai gegaran, tidak menghasilkan isyarat perdagangan.
Secara khusus, logik penghakiman adalah:
Apabila + DI di atas DI, ia adalah persilangan emas dan dianggap sebagai pasaran berbilang. Apabila indikator DPO lebih besar daripada 0, ia akan menghasilkan isyarat berbilang untuk mengesahkan bahawa ia kini berada dalam trend menaik.
Apabila -DI turun melalui +DI, ia termasuk dalam garpu mati dan dianggap sebagai pasaran kosong. Pada masa ini, jika indikator DPO kurang dari 0, ia akan menghasilkan isyarat kosong yang mengesahkan bahawa ia kini berada dalam trend menurun.
Jika +DI/-DI bersilang tetapi penunjuk DPO hampir 0, ia dinilai sebagai gegaran dan tidak menghasilkan isyarat.
Kelebihan terbesar strategi gabungan ini adalah ketepatan tinggi dalam mengenal pasti trend, menghasilkan isyarat perdagangan hanya apabila terdapat pembalikan trend yang sebenar, untuk mengelakkan kerugian berulang di kawasan yang bergolak. Kelebihan utamanya adalah:
Menggunakan DMI untuk menentukan arah dan kekuatan trend adalah satu petunjuk teknikal yang boleh dipercayai.
Penunjuk DPO menyaring isyarat palsu yang berpunca dari pergerakan dalam-dalam, dan hanya memberi isyarat apabila trend terbentuk, untuk mengelakkan kerugian.
Menggabungkan beberapa petunjuk, ia boleh berfungsi sebagai pengesahan antara satu sama lain, meningkatkan kebolehpercayaan isyarat.
Logik strategi mudah difahami, mudah difahami dan dilaksanakan, sesuai untuk perdagangan automatik atau manual.
Oleh kerana ia hanya berdagang dalam trend, ia mempunyai kadar pulangan yang lebih tinggi.
Walaupun ini adalah strategi yang boleh dipercayai, terdapat risiko berikut:
Kejadian yang tidak dijangka menyebabkan pasaran mengalami pergerakan unilateral yang besar, dan mungkin kehilangan peluang trend ini. Risiko ini dapat dikurangkan dengan menurunkan parameter DPO.
Indikator DMI sendiri juga boleh menghasilkan isyarat yang salah, risiko yang tidak dapat dielakkan sepenuhnya. Anda boleh menetapkan hentian kerugian untuk mengawal kerugian.
Tetapan parameter penunjuk DPO yang tidak betul juga boleh menyebabkan kesalahan penghakiman. Parameter terbaik harus ditentukan melalui pengulangan berulang.
Kos urus niaga akan memberi kesan kepada keuntungan, dan kekerapan urus niaga harus dikawal. Anda boleh mengurangkan urus niaga yang tidak berkesan dengan mengoptimumkan parameter.
Strategi ini masih boleh dioptimumkan:
Anda boleh menguji kombinasi parameter yang berbeza untuk mencari parameter terbaik untuk mengurangkan kelewatan isyarat dan meningkatkan kadar keuntungan.
Ia boleh digabungkan dengan penunjuk lain seperti KDJ, MACD dan sebagainya untuk mengesahkan dan meningkatkan ketepatan isyarat.
Parameter penyesuaian boleh ditetapkan mengikut pelbagai jenis, tempoh, dan lain-lain untuk menjadikan strategi lebih sesuai.
Anda boleh menetapkan stop loss dinamik untuk mengawal kerugian tunggal. Anda juga boleh menetapkan stop loss yang berbeza mengikut tahap trend.
Anda boleh mengoptimumkan masa masuk dan keluar dengan menggunakan kaedah seperti pembelajaran mesin untuk mendapatkan keuntungan yang lebih tinggi.
Strategi ini menggabungkan kelebihan kedua-dua penunjuk DMI dan DPO, yang mempunyai ketepatan yang tinggi dalam menentukan perubahan trend, dan dapat dipercayai untuk mengenal pasti trend. Di samping itu, penggunaan penunjuk DPO secara berkesan menapis bunyi yang disebabkan oleh gegaran dalam tempoh dan mengelakkan perdagangan yang tidak berkesan. Ini menjadikannya strategi yang sangat cekap yang sesuai untuk perdagangan automatik dan penggunaan manual.
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("DMI DPO Guard Strategy", calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, currency="USD", commission_type=strategy.commission.percent, commission_value=0.25)
///Tradingview's DMI indicator logic///
len = input(34, minval=1, title="DI Lookback")
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / trur)
minus = fixnan(100 * rma(minusDM, len) / trur)
plot(plus, color=color.orange, title="+DI")
plot(minus, color=color.aqua, title="-DI")
period_ = input(34, title="Length", minval=1)
isCentered = input(false, title="Centered")
barsback = period_/2 + 1
ma = sma(close, period_)
dpo = isCentered ? close[barsback] - ma : close - ma[barsback]
plot(dpo, offset = isCentered ? -barsback : 0, title="Detrended Price Oscillator", color=#C0C000)
hline(0, title="Zero Line", color = #C0C0C0)
long = crossover(plus, minus) and (dpo > 0)
short = crossunder(plus, minus) and (dpo < 0)
strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)