Strategi Pengesanan Trend Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2024-02-04 15:57:12
Tag:

img

Ringkasan

Strategi Pengesanan Trend Purata Bergerak Berganda menggunakan gabungan purata bergerak cepat dan perlahan untuk menentukan arah trend, bersama dengan warna badan candlestick sebagai isyarat kemasukan.

Prinsip

Strategi ini menggunakan purata bergerak perlahan 20 tempoh untuk menentukan trend keseluruhan. Crossover ke atas menunjukkan trend menaik manakala crossover ke bawah menunjukkan trend menurun. MA pantas 5 tempoh berfungsi sebagai penapis kemasukan. Perdagangan hanya dicetuskan apabila harga memecahkan MA pantas. Di samping itu, warna badan lilin N baru-baru ini diperiksa. Isyarat panjang dicetuskan apabila warna badan berubah menjadi merah dalam trend menaik. Isyarat pendek dicetuskan apabila warna badan berubah menjadi hijau dalam trend menurun. Ini membantu mengelakkan pecah palsu.

Strategi ini mengkaji tindakan harga menggunakan tiga dimensi - trend, MA jangka pendek dan badan lilin, meningkatkan kebolehpercayaan isyarat. Isyarat dihasilkan hanya apabila ketiga-tiga sejajar, menapis beberapa bunyi bising.

Kelebihan

  1. Menggabungkan trend berikut dan pembalikan purata, dapat disesuaikan di seluruh persekitaran pasaran.

  2. Ulasan pelbagai faktor isyarat sebelumnya meningkatkan kadar kemenangan dengan mengelakkan isyarat palsu.

  3. Boleh dioptimumkan menggunakan panjang MA, warna lilin diperiksa dll.

  4. Logik yang jelas, ringkas, mesra pemula.

Risiko

  1. Whipsaws semasa pasaran julat boleh membawa kepada kerugian / pengeluaran. Pertimbangkan had kerugian atau mengoptimumkan parameter MA.

  2. Usahakan mengubah jumlah lilin yang diperiksa atau melumpuhkan pembalikan purata.

  3. Ujian belakang yang meluas diperlukan untuk mengesahkan parameter dan prestasi.

Peningkatan

  1. Meneroka jenis MA lain seperti EMA, KAMA dan lain-lain.

  2. Tambah peraturan saiz kedudukan e.g. kuantiti tetap atau berasaskan peratusan ekuiti.

  3. Membina mekanisme stop loss. Pertimbangkan untuk keluar jika harga ditutup di bawah MA yang perlahan.

  4. Ujian di pelbagai instrumen untuk mengesahkan kestabilan.

Kesimpulan

Strategi Dual MA mendapat keuntungan daripada perdagangan trend sambil mengekstrak alfa pembalikan purata dalam jangka masa yang lebih pendek. Prestasi dan potensi keuntungan dapat ditingkatkan lagi melalui pengoptimuman. Walaupun kesederhanaannya, ia membolehkan pemula memahami konsep utama sekitar menggabungkan trend dan pembalikan purata. Pengesahan komprehensif adalah mesti di seluruh instrumen dan parameter.


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

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Trend
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
trend = low > ma ? 1 : high < ma ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Lebih lanjut