Strategi ini menggunakan pengiraan purata bergerak dari dua tempoh yang berbeza dan membentuk isyarat beli dan jual berdasarkan garpu emas mereka.
Strategi ini pertama-tama membolehkan pengguna memilih jenis dan panjang purata bergerak. Jenis termasuk SMA, EMA, VWMA, dan lain-lain, dan panjangnya menentukan kitaran rata-rata.
Kemudian dua rata-rata bergerak dikira mengikut pilihan pengguna. Jika garis pantas melintasi garis perlahan dari bawah, membentuk garpu emas, maka akan dihasilkan isyarat beli. Jika garis pantas melintasi garis perlahan dari atas ke bawah, membentuk garpu mati, maka akan dihasilkan isyarat jual.
Dengan cara ini, apabila harga purata jangka pendek lebih tinggi daripada harga purata jangka panjang, ia dianggap sebagai pasaran dalam trend naik dan harus dibeli. Apabila harga jangka pendek lebih rendah daripada harga jangka panjang, ia dianggap sebagai pasaran dalam trend menurun dan harus dijual.
Risiko boleh dikawal dengan cara mengoptimumkan parameter yang sesuai, menggabungkan isyarat penjanaan indikator lain, dan menetapkan hentian kerugian.
Strategi ini secara keseluruhannya mudah dan jelas, dengan mengira tanda perdagangan yang terbentuk dengan pengiraan dua garis rata, parameter boleh disesuaikan secara fleksibel mengikut keadaan pasaran, dan kombinasi strategi lain dapat dioptimumkan, tetapi perlu berhati-hati untuk mencegah risiko pasaran yang bergolak, pengurusan dana yang masuk akal. Secara keseluruhannya adalah pilihan yang patut dipertimbangkan.
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
//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
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
plot(ma, color = blue, linewidth = 3, transp = 0)
trend = low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short)