Strategi Pengesanan Trend Berdasarkan Purata Bergerak dan Julat Benar Purata

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

img

Ringkasan

Strategi ini menggunakan purata bergerak dan julat sebenar purata untuk menentukan arah trend pasaran untuk perdagangan penjejakan trend.

Prinsip-prinsip

Strategi ini menggunakan purata bergerak ma tempoh len dan 2 kali purata julat sebenar atr tempoh len untuk menentukan trend pasaran.

Apabila tahap rendah lebih besar daripada purata bergerak ditambah dengan julat sebenar purata (rendah > ma + atr), ia dinilai sebagai trend menaik. Apabila tinggi adalah kurang daripada purata bergerak tolak julat sebenar purata (tinggi < ma - atr), ia dinilai sebagai trend ke bawah.

Dalam kes-kes lain, keputusan sebelumnya dikekalkan.

Apabila trend menaik ditentukan, pergi panjang pada peratusan tertentu apabila dibenarkan untuk pergi panjang. Apabila trend menurun ditentukan, pergi pendek pada peratusan tertentu apabila dibenarkan untuk pergi pendek.

Syarat penutupan adalah untuk mencapai tarikh akhir dagangan yang ditetapkan.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Gunakan purata bergerak untuk menentukan arah trend umum dan mengelakkan tertipu oleh turun naik pasaran jangka pendek.
  2. Menggunakan julat sebenar purata untuk menetapkan stop loss dinamik, yang menggalakkan kawalan risiko.
  3. Dapat menangkap peluang trend dengan cara yang tepat mengikut trend, dengan potensi keuntungan yang tinggi.
  4. Peraturan yang mudah dan mudah digunakan.

Analisis Risiko

Risiko utama yang dihadapi oleh strategi ini adalah:

  1. Ia terdedah kepada banyak kerugian dalam pasaran yang turun naik dengan tajam.
  2. Tidak dapat menentukan titik pembalikan trend dengan berkesan, terdapat risiko mengejar tinggi dan membunuh rendah.
  3. Tetapan parameter julat sebenar purata yang tidak betul boleh menyebabkan titik keluar yang terlalu longgar atau terlalu ketat.

Penyelesaian:

  1. Sesuaikan parameter purata bergerak dengan betul untuk menggunakan parameter yang lebih stabil.
  2. Memastikan isyarat dengan penunjuk lain untuk mengelakkan mengejar tinggi dan membunuh rendah.
  3. Mengoptimumkan dan menguji parameter julat sebenar purata untuk menetapkan parameter yang sesuai.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Uji sistem purata bergerak yang berbeza untuk mencari kombinasi parameter yang lebih stabil.
  2. Tambah penunjuk tambahan lain untuk menilai kebolehpercayaan isyarat.
  3. Uji parameter julat sebenar purata untuk mencari parameter optimum.
  4. Mengoptimumkan penggunaan modal melalui leverage untuk meningkatkan pulangan modal.
  5. Menggabungkan pembelajaran mesin dan kaedah lain untuk mencapai pengoptimuman parameter dinamik.

Ringkasan

Idea keseluruhan strategi ini jelas dan mudah difahami. Ia menggunakan purata bergerak untuk menentukan arah trend dan menggunakan purata julat sebenar untuk menetapkan berhenti. Ia boleh dengan berkesan mengesan trend. Tetapi terdapat risiko tertentu, dan pengoptimuman lebih lanjut tetapan parameter dan penambahan penunjuk penilaian lain diperlukan. Secara umum, strategi ini menyediakan pendekatan yang layak untuk perdagangan pengesanan trend.


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