Strategi ini dilakukan dengan menghitung moving averages dari dua periode yang berbeda dan membentuk sinyal beli dan jual berdasarkan pijakan mereka.
Strategi ini pertama-tama memungkinkan pengguna untuk memilih jenis dan panjang rata-rata bergerak. Jenis termasuk SMA, EMA, VWMA, dan lain-lain, dan panjangnya menentukan periode rata-rata.
Kemudian, dua rata-rata bergerak yang dipilih oleh pengguna dihitung. Jika garis cepat melewati garis lambat dari bawah, membentuk garpu emas, maka akan ada sinyal beli. Jika garis cepat melewati garis lambat dari atas ke bawah, membentuk garpu mati, maka akan ada sinyal jual.
Dengan demikian, ketika harga rata-rata jangka pendek lebih tinggi dari harga rata-rata jangka panjang, dianggap sebagai pasar dalam tren naik, harus dibeli. Ketika harga jangka pendek lebih rendah dari harga jangka panjang, dianggap sebagai pasar dalam tren turun, harus dijual.
Risiko dapat dikontrol dengan cara mengoptimalkan parameter yang sesuai, menggabungkan indikator lain untuk menghasilkan sinyal, dan mengatur stop loss.
Strategi ini secara keseluruhan sederhana dan jelas, dengan menghitung sinyal perdagangan yang terbentuk dari dua garis yang sama, parameter dapat disesuaikan secara fleksibel sesuai dengan kondisi pasar, dan kombinasi strategi lainnya dapat dioptimalkan, tetapi perlu berhati-hati untuk mencegah risiko pasar yang bergoyang, manajemen dana yang masuk akal. Secara keseluruhan adalah pilihan yang layak 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)