Strategi Pelacakan Tren Berdasarkan Moving Average dan Average True Range

Penulis:ChaoZhang, Tanggal: 2024-01-12 11:14:01
Tag:

img

Gambaran umum

Strategi ini menggunakan rata-rata bergerak dan rentang rata-rata yang benar untuk menentukan arah tren pasar untuk perdagangan pelacakan tren.

Prinsip-prinsip

Strategi ini menggunakan rata-rata bergerak ma periode len dan 2 kali rata-rata rentang nyata atr periode len untuk menentukan tren pasar.

Ketika rendah lebih besar dari rata-rata bergerak ditambah rentang rata-rata yang benar (rendah > ma + atr), itu dinilai sebagai tren naik. Ketika tinggi kurang dari rata-rata bergerak dikurangi rentang rata-rata yang benar (tinggi < ma - atr), itu dinilai sebagai tren menurun.

Dalam kasus lain, putusan sebelumnya dipertahankan.

Ketika tren naik ditentukan, pergi panjang pada persentase tertentu ketika diizinkan untuk pergi panjang. Ketika tren menurun ditentukan, pergi pendek pada persentase tertentu ketika diizinkan untuk pergi pendek.

Kondisi penutupan adalah untuk mencapai tanggal akhir perdagangan yang ditentukan.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Gunakan rata-rata bergerak untuk menentukan arah tren umum dan menghindari tertipu oleh fluktuasi pasar jangka pendek.
  2. Gunakan rentang rata-rata yang benar untuk mengatur stop loss dinamis, yang kondusif untuk pengendalian risiko.
  3. Dapat menangkap peluang tren secara tepat waktu mengikuti tren, dengan potensi keuntungan yang tinggi.
  4. Aturan sederhana dan mudah dioperasikan.

Analisis Risiko

Risiko utama yang dihadapi oleh strategi ini adalah:

  1. Hal ini rentan terhadap banyak kerugian di pasar yang sangat berfluktuasi.
  2. Karena tidak dapat secara efektif menentukan titik pembalikan tren, ada risiko mengejar puncak dan membunuh titik terendah.
  3. Pengaturan parameter yang tidak benar dari rentang rata-rata yang benar dapat mengakibatkan titik keluar yang terlalu longgar atau terlalu ketat.

Solusi:

  1. Sesuaikan parameter rata-rata bergerak dengan tepat untuk menggunakan parameter yang lebih stabil.
  2. Mengkonfirmasi sinyal dengan indikator lain untuk menghindari mengejar tinggi dan membunuh rendah.
  3. Mengoptimalkan dan menguji parameter rentang rata-rata yang benar untuk menetapkan parameter yang sesuai.

Arahan Optimasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Uji sistem rata-rata bergerak yang berbeda untuk menemukan kombinasi parameter yang lebih stabil.
  2. Tambahkan indikator tambahan lainnya untuk menilai keandalan sinyal.
  3. Uji parameter rentang sebenarnya rata-rata untuk menemukan parameter optimal.
  4. Mengoptimalkan pemanfaatan modal melalui leverage untuk meningkatkan laba atas modal.
  5. Menggabungkan pembelajaran mesin dan metode lain untuk mencapai optimasi parameter dinamis.

Ringkasan

Ide keseluruhan strategi ini jelas dan mudah dipahami. Ini menggunakan moving average untuk menentukan arah tren dan menggunakan average true range untuk mengatur stop. Ini dapat secara efektif melacak tren. Tetapi ada risiko tertentu, dan pengoptimalan lebih lanjut dari pengaturan parameter dan penambahan indikator penilaian lainnya diperlukan. Secara umum, strategi ini memberikan pendekatan yang layak untuk pelacakan perdagangan tren.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//2019
//Noro

//@version=4
strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(30, minval = 2, title = "MA Length")
src = input(ohlc4, title = "MA Source")
limitmode = input(false)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA + BG
atr = sma(tr, len) * 2
ma = sma(src, len)
plot(ma, color = color.blue, linewidth = 4)
trend = 0
trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1]
col = trend == 1 ? color.lime : color.red
bgcolor(col, transp = 70)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1 and limitmode == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode == false
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if trend == 1 and limitmode
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if trend == -1 and limitmode
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()

Lebih banyak