ADX, MA dan EMA Long Only Trend Tracking Strategy

Penulis:ChaoZhang, Tarikh: 2024-01-29 11:30:15
Tag:

img

Ringkasan

Strategi ini terutamanya menggunakan penunjuk ADX untuk menilai trend dan menggabungkan purata bergerak MA dan EMA dengan tetapan parameter yang berbeza untuk membina strategi penjejakan trend yang panjang sahaja. Apabila ADX naik, ia menunjukkan arah panjang. Apabila harga memecahkan MA dan EMA ke atas, buka kedudukan panjang. Apabila ADX jatuh atau harga jatuh di bawah MA atau EMA, tutup kedudukan.

Prinsip Strategi

Strategi ini terutamanya menggunakan ADX untuk menilai trend dan kekuatan pasaran. ADX mengira tahap dan arah perubahan harga untuk menentukan kewujudan dan kekuatan trend. Apabila ADX naik, ini bermakna ia sedang dalam trend menaik. Apabila ADX jatuh, ini bermakna trend itu melemah.

Strategi ini juga menggunakan dua purata bergerak, MA dan EMA, dengan tetapan parameter yang berbeza sebagai penghakiman tambahan. Mereka dapat menapis secara berkesan keacakan harga dan menunjukkan arah trend utama harga. Apabila harga naik dan memecahkan MA dan EMA, ia adalah isyarat panjang. Apabila harga jatuh dan memecahkan, ia adalah isyarat penutupan.

Menggabungkan ciri-ciri ADX dan purata bergerak, strategi ini membina isyarat perdagangan untuk menilai arah trend: pergi panjang apabila ADX meningkat dan harga memecahkan MA dan EMA menaik, dan menutup kedudukan apabila ADX jatuh atau harga memecahkan MA / EMA. Ia melaksanakan strategi pengesanan trend panjang sahaja.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Gunakan ADX untuk menilai kekuatan trend, mengurangkan perdagangan yang tidak sah dan mengesan trend.
  2. Menggabungkan dua purata bergerak dengan tetapan parameter yang berbeza dapat mengenal pasti trend dengan berkesan.
  3. Hanya kedudukan panjang mengelakkan operasi terbalik yang kerap dan kehilangan seluncur.
  4. Syarat kemasukan yang ketat dapat mengawal risiko dengan berkesan.
  5. Melaksanakan strategi pengesanan trend jangka panjang sahaja.

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Indikator ADX mempunyai kelewatan, mungkin kehilangan titik masuk terbaik.
  2. Hanya kedudukan panjang yang tidak boleh mendapat keuntungan daripada pasaran yang jatuh.
  3. Terdapat risiko kerugian tertentu apabila trend berubah.
  4. Tetapan parameter yang tidak betul juga mempengaruhi prestasi strategi.

Penyelesaian:

  1. Sesuaikan parameter ADX untuk mengurangkan lag dengan munasabah.
  2. Tetapkan stop loss untuk mengawal kehilangan tunggal.
  3. Uji dan optimumkan parameter untuk memilih yang terbaik.

Pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Tambah strategi stop loss untuk mengawal risiko dengan lebih baik.
  2. Tambah pengurusan kedudukan untuk menyesuaikan kedudukan secara dinamik berdasarkan keadaan pasaran.
  3. Uji dan optimumkan parameter untuk mencari kombinasi terbaik.
  4. Tambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara dinamik.
  5. Membina strategi martingale untuk mengurangkan kesan nisbah keuntungan.

Kesimpulan

Secara umum, ini adalah strategi pengesanan trend yang menggunakan ADX untuk menilai kekuatan trend dan dua purata bergerak sebagai penapis tambahan. Ia berkesan mengawal kejadian perdagangan yang tidak sah dan mencapai kesan mengesan trend. Ini adalah strategi yang agak stabil. Dengan beberapa pengoptimuman, kestabilan dan hasil strategi dapat ditingkatkan lagi.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
dirmov(len) =>
    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)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)
    [plus, minus]
adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
    strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or  close < maValue or close < emaValue
if (exitCondition)
    strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")


Lebih lanjut