
Dual Moving Average Trend Tracking Strategy adalah strategi perdagangan kuantitatif yang menggunakan kombinasi rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menentukan arah tren, dan menggabungkan warna entitas K-line sebagai sinyal masuk. Strategi ini memiliki karakteristik untuk mengikuti tren dan berbalik perdagangan.
Strategi ini menggunakan rata-rata bergerak lambat dengan panjang 20 untuk menentukan arah tren secara keseluruhan, naik ketika harga naik dan turun ketika harga turun. Selain itu, strategi ini menggunakan rata-rata bergerak cepat dengan panjang 5 sebagai filter masuk, dan hanya melakukan perdagangan ketika harga menembus rata-rata bergerak cepat. Selain itu, strategi ini juga memeriksa warna entitas dari garis akar N K yang paling dekat.
Strategi ini mengintegrasikan informasi dari tiga dimensi: tren keseluruhan, garis rata-rata jangka pendek, dan entitas K-line, sehingga meningkatkan keandalan sinyal perdagangan. Sinyal perdagangan dikirimkan ketika ketiganya berlawanan arah, yang secara efektif menyaring sebagian dari kebisingan.
Dengan fitur trend-following dan reversal trading, dapat disesuaikan dengan kondisi pasar yang berbeda.
Perhitungan multi-dimensi sebelum sinyal perdagangan, filter sinyal palsu, meningkatkan tingkat kemenangan.
Optimasi parameter cukup luas, dapat dioptimalkan dengan menyesuaikan panjang rata-rata bergerak, warna entitas garis K, dan jumlah akar.
Strategi logis yang jelas dan sederhana, mudah dipahami, cocok untuk pemula.
Dalam situasi yang sangat bergolak, mudah terbentukosing streak, yang membawa penarikan yang lebih besar. Anda dapat menyesuaikan parameter moving average atau menambahkan stop loss untuk menghindari.
Pada tahap penyusunan lateral, mudah terbentuk whipsaw, membawa kerugian. Anda dapat secara tepat menyesuaikan K-line entitas warna penghakiman akar atau menutup perdagangan reverse.
Perlu dilakukan pemantauan ulang yang memadai untuk memastikan pengaturan parameter yang masuk akal, jika tidak, ini akan berdampak besar pada kinerja strategi.
Cobalah berbagai jenis rata-rata bergerak, seperti rata-rata bergerak indeks, rata-rata bergerak Kaufman adaptif, dan lain-lain.
Meningkatkan kontrol volume transaksi, seperti volume transaksi tetap atau penyesuaian berdasarkan kepentingan akun.
Meningkatkan mekanisme stop loss. Jika harga kembali turun di bawah rata-rata bergerak lambat, stop loss exit dapat dipertimbangkan.
Selain itu, berbagai varietas dapat diuji untuk menentukan stabilitas dan adaptasi strategi.
Strategi pelacakan tren garis rata bergerak ganda yang digabungkan dengan penilaian tren dan perdagangan reversal, dapat secara efektif menangkap sisa tren garis tengah dan panjang, tetapi juga dapat memperoleh keuntungan tambahan di garis pendek. Dengan pengoptimalan parameter dan penguatan mekanisme, ruang keuntungan dapat diperluas lebih lanjut. Logika strategi ini sederhana dan jelas, sangat cocok untuk penelitian 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)