Strategi Pelacakan Tren Rata-rata Bergerak Ganda

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

img

Gambaran umum

Strategi Pelacakan Tren Rata-rata Bergerak Ganda menggunakan kombinasi rata-rata bergerak cepat dan lambat untuk menentukan arah tren, bersama dengan warna tubuh lilin sebagai sinyal masuk.

Prinsip

Strategi ini menggunakan rata-rata bergerak lambat 20 periode untuk mendefinisikan tren keseluruhan. Crossover ke atas menunjukkan tren naik sementara crossover ke bawah menunjukkan tren turun. MA cepat 5 periode berfungsi sebagai filter masuk. Perdagangan hanya dipicu ketika harga melanggar MA cepat. Selain itu, warna tubuh lilin N terbaru diperiksa. Sinyal panjang dipicu ketika warna tubuh berubah menjadi merah dalam tren naik. Sinyal pendek dipicu ketika warna tubuh berubah menjadi hijau dalam tren turun. Ini membantu menghindari breakout palsu.

Strategi ini meneliti aksi harga menggunakan tiga dimensi - tren, MA jangka pendek dan tubuh lilin, meningkatkan keandalan sinyal.

Keuntungan

  1. Menggabungkan trend mengikuti dan rata-rata pembalikan, dapat disesuaikan di seluruh lingkungan pasar.

  2. Multi-faktor review sinyal sebelumnya meningkatkan tingkat menang dengan menghindari sinyal palsu.

  3. Dapat dioptimalkan dengan menggunakan panjang MA, warna lilin diperiksa dll.

  4. Logika yang jelas, ringkas, ramah pemula.

Risiko

  1. Whipsaws selama pasar rentang dapat menyebabkan kerugian/drawdown. Pertimbangkan batas kerugian atau mengoptimalkan parameter MA.

  2. Cobalah mengubah jumlah lilin yang diperiksa atau menonaktifkan pengembalian rata-rata.

  3. Pengujian backtesting yang luas diperlukan untuk memvalidasi parameter dan kinerja.

Peningkatan

  1. Jelajahi jenis MA lainnya misalnya EMA, KAMA dll.

  2. Tambahkan aturan ukuran posisi misalnya berdasarkan kuantitas tetap atau persentase ekuitas.

  3. Pertimbangkan untuk keluar jika harga ditutup di bawah MA yang lambat.

  4. Uji di berbagai instrumen untuk memverifikasi stabilitas.

Kesimpulan

Strategi Dual MA menghasilkan keuntungan dari perdagangan tren sambil mengekstrak reversi rata-rata alfa dalam kerangka waktu yang lebih singkat. Kinerja dan potensi keuntungan dapat ditingkatkan lebih lanjut melalui optimasi. Meskipun kesederhanaannya, ini memungkinkan pemula untuk memahami konsep kunci seputar menggabungkan tren dan reversi rata-rata. Validasi komprehensif harus 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 banyak