ADX, MA dan EMA Long Only Trend Tracking Strategy (Strategi Pelacakan Tren Langsung)

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

img

Gambaran umum

Strategi ini terutama menggunakan indikator ADX untuk menilai tren dan menggabungkan rata-rata bergerak MA dan EMA dengan pengaturan parameter yang berbeda untuk membangun strategi pelacakan tren yang hanya panjang. Ketika ADX naik, itu menunjukkan arah panjang. Ketika harga menembus MA dan EMA ke atas, buka posisi panjang. Ketika ADX turun atau harga turun di bawah MA atau EMA, tutup posisi.

Prinsip Strategi

Strategi ini terutama menggunakan ADX untuk menilai tren dan kekuatan pasar. ADX menghitung tingkat dan arah perubahan harga untuk menentukan keberadaan dan kekuatan tren. Ketika ADX naik, itu berarti bahwa saat ini dalam tren kenaikan. Ketika ADX turun, itu berarti tren melemah.

Strategi ini juga menggunakan dua rata-rata bergerak, MA dan EMA, dengan pengaturan parameter yang berbeda sebagai penilaian tambahan. Mereka dapat secara efektif menyaring keacakan harga dan menunjukkan arah tren utama harga. Ketika harga naik dan menerobos MA dan EMA, itu adalah sinyal panjang. Ketika harga turun dan menerobos, itu adalah sinyal penutupan.

Menggabungkan karakteristik ADX dan moving average, strategi ini membangun sinyal perdagangan untuk menilai arah tren: pergi panjang ketika ADX naik dan harga menembus MA dan EMA ke atas, dan menutup posisi ketika ADX turun atau harga menembus MA / EMA. Ini menerapkan strategi pelacakan tren panjang saja.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Gunakan ADX untuk menilai kekuatan tren, mengurangi perdagangan yang tidak valid dan melacak tren.
  2. Menggabungkan dua rata-rata bergerak dengan pengaturan parameter yang berbeda dapat secara efektif mengidentifikasi tren.
  3. Hanya posisi panjang yang menghindari operasi terbalik yang sering dan kerugian slip.
  4. Kondisi masuk yang ketat dapat secara efektif mengendalikan risiko.
  5. Melakukan strategi pelacakan tren jangka panjang saja.

Analisis Risiko

Ada juga beberapa risiko:

  1. Indikator ADX memiliki lag, mungkin kehilangan titik masuk terbaik.
  2. Hanya posisi panjang yang tidak bisa mendapatkan keuntungan dari pasar yang jatuh.
  3. Ada risiko kerugian tertentu ketika tren berubah.
  4. Pengaturan parameter yang tidak benar juga mempengaruhi kinerja strategi.

Solusi:

  1. Sesuaikan parameter ADX untuk mengurangi keterlambatan secara wajar.
  2. Atur stop loss untuk mengontrol single loss.
  3. Uji dan optimalkan parameter untuk memilih yang terbaik.

Optimalisasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Tambahkan strategi stop loss untuk mengontrol risiko dengan lebih baik.
  2. Tambahkan manajemen posisi untuk menyesuaikan posisi secara dinamis berdasarkan kondisi pasar.
  3. Uji dan optimalkan parameter untuk menemukan kombinasi terbaik.
  4. Tambahkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara dinamis.
  5. Membangun strategi martingale untuk mengurangi dampak rasio keuntungan.

Kesimpulan

Secara umum, ini adalah strategi pelacakan tren hanya panjang yang menggunakan ADX untuk menilai kekuatan tren dan dua rata-rata bergerak sebagai filter tambahan. Ini secara efektif mengontrol terjadinya perdagangan yang tidak valid dan mencapai efek melacak tren. Ini adalah strategi yang relatif stabil hanya panjang. Dengan beberapa pengoptimalan, stabilitas dan hasil strategi dapat ditingkatkan lebih lanjut.


/*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 banyak