Strategi Dagangan berasaskan Indikator ADX dan MACD

Penulis:ChaoZhang, Tarikh: 2023-12-13 15:45:24
Tag:

img

Ringkasan

Strategi ini dinamakan Trend Following Strategy Based on ADX and MACD Indicators. Ia menggunakan Indeks Pergerakan Arah Purata (ADX) untuk menentukan arah trend dan kekuatan, digabungkan dengan isyarat perdagangan dari Moving Average Convergence Divergence (MACD), untuk melaksanakan trend mengikuti perdagangan. Ia akan menubuhkan kedudukan panjang atau pendek hanya apabila ADX menunjukkan trend yang kuat dan MACD memberikan isyarat perdagangan.

Logika Strategi

Strategi ini mengira garis ADX dan +DI, -DI untuk menilai arah trend pasaran dan intensiti. Apabila garis +DI melintasi di atas -DI, ia adalah trend menaik; apabila -DI jatuh di bawah +DI, ia adalah trend menurun. Di samping itu, apabila bacaan ADX di atas 20, ia menunjukkan trend itu cukup kuat. Strategi kemudian mengambil nilai perbezaan indikator MACD (macdline) dan penyeberangan garis isyarat (sinyal) sebagai isyarat beli dan jual, untuk menjalankan perdagangan mengikut trend.

Secara khusus, logik isyarat perdagangan adalah:

Isyarat panjang: +DI > -DI dan garis perbezaan MACD melintasi di atas garis isyarat
Isyarat pendek: -DI > +DI dan garis perbezaan MACD melintasi di bawah garis isyarat

Dengan logik ini, strategi dapat menangkap masa kemasukan yang optimum dalam trend yang kuat.

Kelebihan

Kelebihan terbesar strategi ini ialah ia mengambil kedua-dua penilaian trend dan pemilihan masa kemasukan ke dalam pertimbangan, yang membolehkan peniaga mencari titik kemasukan yang agak baik apabila terdapat pasaran arah yang kuat.

Di samping itu, logik stop loss juga dilaksanakan. Ia akan memotong kerugian secara aktif jika kerugian kedudukan melebihi harga stop loss yang ditentukan pengguna. Ini juga merupakan kemuncak strategi.

Risiko

Walaupun strategi ini mempunyai beberapa kelebihan, masih ada risiko yang perlu diketahui:

  1. Isyarat dagangan yang terdiri daripada ADX dan MACD mungkin gagal atau memberikan isyarat palsu dalam keadaan pasaran tertentu, menyebabkan kerugian yang tidak perlu.

  2. Harga stop loss yang ditakrifkan pengguna boleh ditembusi, yang membawa kepada kerugian melebihi jangkaan.

  3. Terlalu banyak perdagangan yang tidak berkesan boleh berlaku di pasaran yang berbeza, memakan kos transaksi.

Untuk mengurangkan risiko ini, pengoptimuman parameter ADX dan MACD disyorkan, serta pelaksanaan peraturan pengurusan wang yang ketat.

Arahan Peningkatan

Masih ada ruang untuk meningkatkan strategi ini:

  1. Lebih banyak penunjuk boleh diperkenalkan untuk membentuk isyarat perdagangan yang lebih kuat, contohnya menggabungkan indeks turun naik untuk mengehadkan perdagangan.

  2. Parameter ADX dan MACD boleh dioptimumkan secara automatik melalui pembelajaran mesin.

  3. Mekanisme hentian kerugian adaptif boleh ditubuhkan untuk mengesan turun naik pasaran secara dinamik.

Kaedah-kaedah ini boleh membantu meningkatkan lagi kestabilan dan keuntungan strategi.

Kesimpulan

Kesimpulannya, Strategi Mengikuti Trend Berdasarkan Indikator ADX dan MACD mempunyai kelebihan dalam menentukan arah trend, mencari masa kemasukan yang optimum, menetapkan logik stop loss dan lain-lain, menjadikannya sistem perdagangan yang cukup. Memandangkan penyesuaian parameter dan kawalan risiko yang betul, ia mampu menuai pulangan pelaburan yang baik. Tetapi peniaga masih harus berhati-hati terhadap risiko yang berpotensi, dan memantau dengan teliti persekitaran pasaran yang berubah. Dengan pemantauan dan peningkatan sistemik, strategi ini berpotensi mencapai alpha yang mampan.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)

showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")

/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)

[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)

//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC

longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline

int trade = 0

//Open from nothing

if trade == 0 and longcheck
    trade := 1

else if trade == 0 and shortcheck
    trade := -1
    
//Reversal

else if trade == 1 and shortcheck
    trade := -1
    
else if trade == -1 and longcheck
    trade := 1
    
//Keep status quo until crossover

else
    trade := trade[1]

//////////////////////////////////////////////////////////////////////////////////////////////PLOT 

colors = longcheck ? colorup : shortcheck ? colordown : color.white

plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)

plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)

///////////////////////////////////////////////////////////////////////////////////////////// ALERTS

// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")

if trade == 1
    strategy.entry("Long", strategy.long)

if trade == -1
    strategy.entry("Short", strategy.short)

if trade == 1 and close < close[1] - stopLossPrice
    strategy.close("LongExit")

if trade == -1 and close > close[1] + stopLossPrice
    strategy.close("ShortExit")


Lebih lanjut