
Strategi Pengesanan Trend Rata-rata Bergerak Ganda adalah strategi perdagangan kuantitatif yang menggunakan gabungan purata bergerak cepat dan purata bergerak perlahan untuk menentukan arah trend, dan menggabungkan warna entiti K-baris sebagai isyarat masuk. Strategi ini mempunyai ciri-ciri untuk mengesan trend dan membalikkan perdagangan pada masa yang sama.
Strategi ini menggunakan rata-rata bergerak perlahan dengan panjang 20 untuk menentukan arah trend keseluruhan, untuk menentukan trend menaik apabila harga naik, dan untuk menentukan trend menurun apabila harga turun. Pada masa yang sama, menggunakan rata-rata bergerak cepat dengan panjang 5 sebagai penapis masuk, untuk mengeluarkan dagangan hanya apabila harga menembusi rata-rata bergerak cepat.
Strategi ini mengintegrasikan maklumat tiga dimensi: trend keseluruhan, garis rata-rata jangka pendek dan entiti K, yang meningkatkan kebolehpercayaan isyarat perdagangan. Isyarat perdagangan dikeluarkan apabila ketiga-tiga arah itu sama, yang menyaring sebahagian daripada kebisingan.
Ia juga mempunyai ciri-ciri trend-following dan reverse trading, dan boleh menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pertimbangan berbilang dimensi sebelum isyarat perdagangan dikeluarkan, penapis isyarat palsu yang berkesan, meningkatkan kadar kemenangan.
Optimasi parameter adalah besar, ia boleh dioptimumkan dengan menyesuaikan panjang purata bergerak, warna entiti K, dan bilangan akar.
Strategi logiknya jelas dan ringkas, mudah difahami, sesuai untuk pelajar pemula.
Dalam keadaan gegaran yang besar, ia mudah membentuk streak osing, yang membawa kepada pengunduran yang lebih besar. Anda boleh menyesuaikan parameter purata bergerak dengan sewajarnya atau menambah stop loss untuk mengelakkannya.
Pada peringkat penyusunan cakera, mudah terbentuk whipsaw, membawa kerugian. Anda boleh menyesuaikan jumlah akar untuk menilai warna entiti K baris atau menutup perdagangan terbalik.
Pemantauan semula yang mencukupi diperlukan untuk memastikan parameter yang ditetapkan adalah wajar, jika tidak, ia akan menjejaskan prestasi strategi.
Cuba pelbagai jenis purata bergerak, seperti purata bergerak indeks, purata bergerak Kaufman, dan lain-lain.
Menambah kawalan jumlah urus niaga, seperti jumlah urus niaga tetap atau penyesuaian mengikut kepentingan akaun.
Menambah mekanisme penangguhan kerugian. Apabila harga jatuh kembali ke bawah purata bergerak perlahan, penangguhan kerugian boleh dipertimbangkan.
Anda boleh menguji pelbagai jenis untuk menilai kestabilan dan kebolehan adaptasi.
Strategi pengesanan trend garis rata bergerak berpasangan dengan penghakiman trend dan perdagangan pembalikan, dapat menangkap kelebihan trend garis tengah dan panjang dengan berkesan, tetapi juga dapat memperoleh keuntungan tambahan di garis pendek. Dengan pengoptimuman parameter dan penguatan mekanisme, ruang keuntungan dapat diperluaskan lagi. Logik strategi ini sederhana dan jelas, sangat sesuai untuk kajian pembelajaran pemula.
/*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)