Strategi Pengesanan Trend Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-12-21 11:45:35
Tag:

img

Ringkasan

Strategi Pengesanan Trend Purata Bergerak Berganda adalah strategi perdagangan kuantitatif yang mengesan trend harga saham. Strategi ini menggunakan sistem purata bergerak eksponensial berganda untuk menentukan arah trend harga dan menggabungkan penunjuk ADX untuk menilai kekuatan trend, menangkap trend harga dalam jangka sederhana hingga panjang.

Prinsip Strategi

Strategi ini terutamanya berdasarkan sistem purata bergerak eksponensial berganda untuk menentukan arah trend harga. Strategi ini menggunakan dua EMA yang cepat dan perlahan dengan parameter yang berbeza, EMA1 yang cepat bertindak balas terhadap perubahan harga dengan lebih cepat, dan EMA2 yang perlahan bertindak balas terhadap perubahan harga dengan lebih perlahan. Apabila garis cepat melintasi di atas garis perlahan, ia adalah isyarat beli yang menunjukkan harga telah mula meningkat; apabila garis cepat melintasi di bawah garis perlahan, ia adalah isyarat jual yang menunjukkan harga telah mula jatuh.

Selain itu, strategi ini juga memperkenalkan penunjuk ADX untuk menilai kekuatan trend. ADX mengira turun naik harga untuk menilai kekuatan trend. Apabila ADX naik, ini bermakna trend semakin kuat; apabila ADX jatuh, ini bermakna trend semakin lemah. Strategi ini menetapkan keadaan penapis perdagangan melalui penunjuk ADX, hanya mengeluarkan isyarat perdagangan apabila kekuatan trend agak kuat.

Khususnya, peraturan penjanaan isyarat strategi adalah:

  1. Pergi panjang apabila garis pantas melintasi di atas garis perlahan, dan pergi pendek apabila garis pantas melintasi di bawah garis perlahan
  2. Hanya membenarkan panjang dan pendek apabila ADX>25

Ini dapat menyaring isyarat yang tidak sah dengan kekuatan trend yang lebih lemah, meningkatkan lagi kestabilan sistem perdagangan.

Kelebihan Strategi

Strategi ini mempunyai kelebihan utama berikut:

  1. Mencatatkan trend harga jangka sederhana hingga panjang: Sistem EMA berganda dapat menentukan trend harga jangka sederhana hingga jangka panjang dengan berkesan dan mengelakkan gangguan oleh bunyi pasaran jangka pendek.

  2. Menyaring penyebaran palsu: Dengan menilai kekuatan trend melalui penunjuk ADX, ia mengelakkan kerugian yang tidak perlu yang disebabkan oleh pecah palsu di sekitar titik perubahan trend.

  3. Ruang pengoptimuman parameter yang besar: Parameter garis pantas dan perlahan, parameter ADX dan banyak lagi mempunyai ruang untuk pengoptimuman yang boleh menghasilkan hasil perdagangan yang lebih baik melalui kombinasi parameter.

  4. Kemudahan penyesuaian yang tinggi: Strategi ini sesuai untuk kebanyakan stok dan jangka masa, dan telah disahkan di pelbagai pasaran.

  5. Mudah dilaksanakan: Strategi ini hanya memerlukan penunjuk purata bergerak yang mudah, menggunakan sedikit sumber, mudah diprogram, dan mempunyai kos aplikasi praktikal yang rendah.

Risiko Strategi

Strategi ini juga mempunyai beberapa risiko, terutamanya tertumpu pada bidang berikut:

  1. Risiko pembalikan trend: Mana-mana strategi trend tidak dapat menentukan titik pembalikan trend dengan sempurna, dan pasti mengalami kerugian yang lebih besar apabila trend sebenar benar-benar berbalik.

  2. Lebih daripada risiko pengoptimuman: Mengoptimumkan parameter ke tahap yang melampau juga boleh menyebabkan strategi terlalu sesuai dengan data sejarah, yang akan mengurangkan kestabilan dan kesan praktikal strategi.

  3. Risiko peristiwa black swan: Kejadian besar yang tidak dijangka akan memecahkan model trend harga asal, menyebabkan penunjuk purata bergerak gagal, memerlukan campur tangan manual atau tetapan stop loss untuk mengawal kerugian.

Untuk menangani risiko di atas, kita boleh mengoptimumkan dari aspek berikut:

  1. Memperkenalkan penunjuk tambahan untuk menentukan titik perubahan harga. contohnya, memperkenalkan jumlah dagangan, yang akan meningkat apabila titik perubahan harga muncul.

  2. Ringankan parameter ADX dengan betul untuk memastikan peluang dapat ditangkap pada peringkat awal trend. MACD dan penunjuk penilaian tambahan lain juga boleh diperkenalkan.

  3. Melakukan latihan dan ujian gabungan parameter pelbagai kumpulan, dan pilih kombinasi dengan kestabilan dan kesan praktikal yang baik.

Arahan untuk Pengoptimuman Strategi

Terdapat juga beberapa arah di mana strategi ini boleh dioptimumkan:

  1. Memperkenalkan mekanisme stop loss: Tetapkan stop loss bergerak atau peratusan stop loss, yang boleh secara aktif menghentikan kerugian apabila trend berbalik untuk mengelakkan kerugian yang berlebihan.

  2. Menggabungkan penunjuk jumlah dagangan: Sebagai contoh, jumlah dagangan, yang boleh mengelakkan isyarat yang salah apabila jumlah dagangan berkembang pada titik perubahan harga.

  3. Pengoptimuman penyesuaian diri parameter: Membolehkan parameter penunjuk disesuaikan secara adaptif mengikut perubahan pasaran masa nyata, dan bukannya parameter statik tetap, yang dapat meningkatkan kestabilan strategi.

  4. Memperkenalkan pembelajaran mesin: Gunakan algoritma pembelajaran mesin untuk menganalisis sejumlah besar data sejarah untuk menentukan parameter untuk purata bergerak dan ADX, dan bahkan meramalkan pergerakan harga masa depan.

  5. Pengoptimuman kitaran silang: Parameter kitaran dagangan yang berbeza boleh ditetapkan secara berbeza, dan konfigurasi optimum di bawah setiap kitaran boleh diuji.

Ringkasan

Secara umum, strategi Pengesanan Trend Purata Bergerak Berganda adalah idea strategi yang matang dan stabil. Strategi ini menangkap trend harga jangka menengah hingga panjang melalui sistem EMA berganda, dan mempunyai penunjuk ADX untuk menapis isyarat, yang dapat menangkap trend harga saham dengan berkesan dan mengelakkan gangguan dari bunyi bising pasaran jangka pendek. Pada masa yang sama, strategi ini juga mempunyai risiko tertentu, yang memerlukan pengoptimuman kombinasi parameter dan kaedah berhenti kerugian, dan bahkan boleh memperkenalkan lebih banyak penunjuk tambahan dan algoritma pembelajaran mesin untuk meningkatkan kestabilan strategi. Ringkasnya, strategi Pengesanan Trend Purata Bergerak Berganda mempunyai keseimbangan yang baik, dan merupakan idea strategi kuantitatif yang sesuai untuk pelabur jangka menengah hingga panjang.


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

//@version=3
strategy("Kitaec Strategy4", shorttitle = "Kitaec str4", 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 = "Lot")
len = input(14, defval=14, minval=1, maxval=1000, title="Smoothing")
len2 = input(14, defval=14, minval=1, maxval=1000, title="Smoothing2")
len3=input(550)
src = close
ema1=ema(src, len)
ema2=ema(ema1, len2)
d=ema1-ema2
zlema=ema1+d

ema21=ema(src, (len/3)*2)
ema22=ema(ema21, (len2/3)*2)
d2=ema21-ema22
zlema2=ema21+d2

ema31=ema(src, len3)
ema32=ema(ema21, len3)
d3=ema31-ema32
zlema3=ema31+d2

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")

//MAs
//ma1 = security(tickerid, "60", vwma(src, len)[1])
//ma2 = security(tickerid, "120", vwma(src, len)[1])
//plot(ma1, linewidth = 2, color = blue, title = "MA")
//plot(ma2, linewidth = 2, color = red, title = "MA2")

// ADX
lenadx = 14
lensig = 14
limadx = 18

up = change(high)
down = -change(low)
trur = rma(tr, lenadx)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, lenadx) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, lenadx) / trur)
sum = plus + minus 
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adx2 = ema(adx, 14)
adx2i = ema(adx2,14)
dadx2 = adx2 - adx2i
zladx2 = adx2 + dadx2
plus2 = ema(plus, 14)
plus2i = ema (plus2, 14)
dplus2 = plus2 - plus2i
zlplus2 = plus2 + dplus2

minus2 = ema(minus, 14)
minus2i = ema (minus2, 14)
dminus2 = minus2 - minus2i
zlminus2 = minus2 + dminus2

vwma = vwma(close, 150)
vwma2 = ema(vwma, 9)
vwma2i = ema(vwma2, 9)
dvwma2 = vwma2 - vwma2i
zlvwma2 = vwma2 + dvwma2


rmax=rma(src, len)
rmax2=rma(rmax, len2)
rmd=rmax-rmax2
zlrmax=rmax+rmd
rmaxz=rma(src, (len/3)*2)
rmaxz2=rma(rmaxz, (len2/3)*2)
rmzd=rmaxz-rmaxz2
zlrmaxz=rmaxz+rmzd
rmaxcol2=zlrmaxz[1] > zlema2[1] ? red:lime
rmaxcol= zlrmax[1] > zlema[1] ? red:lime


rmazlema3=rma(zlema3, 100)
plot(rmazlema3, color=gray, linewidth=2)
plot(zlema, color=green)
plot(zlema2, color=yellow)
plot(zlema3, color=teal, linewidth=2)
plot(ema2, color=na)
plot(rmax, color=rmaxcol2, linewidth=3)
plot(zlrmax, color=rmaxcol, linewidth=3)


//Trading
size = strategy.position_size
lot = 0.0 
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if zlrmax[1] < zlema[1]
    strategy.entry("Buy", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if zlrmax[1] > zlema[1]
    strategy.entry("Sell", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))


Lebih lanjut