
Sebuah strategi yang menggunakan kombinasi dari rata-rata bergerak cepat dan rata-rata bergerak lambat untuk menilai tren pasar, dan mengirimkan sinyal perdagangan ketika terjadi pergeseran arah tren. Strategi ini menggabungkan indikator garis rata dan indikator saluran harga untuk mengidentifikasi tren, yang dapat secara efektif menyaring kebisingan pasar dan menentukan arah tren.
Strategi pelacakan tren dua rata-rata bergerak menggunakan dua indikator rata-rata bergerak yaitu rata-rata bergerak cepat ((5 siklus) dan rata-rata bergerak lambat ((21 siklus). Rata-rata bergerak cepat digunakan untuk menghasilkan sinyal perdagangan, rata-rata bergerak lambat digunakan untuk menentukan arah tren pasar. Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat dari bawah ke atas, menghasilkan sinyal beli; Ketika rata-rata bergerak cepat melewati rata-rata bergerak lambat dari atas ke bawah, menghasilkan sinyal jual.
Strategi ini juga menggunakan indikator saluran harga untuk membantu menentukan tren. Saluran harga ditentukan oleh rata-rata bergerak dari harga tertinggi dan terendah. Ketika harga menembus saluran, menunjukkan bahwa tren berbalik. Strategi ini menggunakan dua saluran harga, dengan siklus saluran harga pertama 21, dan siklus saluran harga kedua 5, yang cocok dengan siklus garis rata-rata.
Dalam menilai sinyal beli dan jual, strategi ini meminta kolom merah muncul berturut-turut ((pengguna dapat mengatur jumlah kolom), sebagai kondisi penyaringan tambahan. Ini dapat menghindari sinyal yang salah di area yang dihitung.
Secara umum, strategi trend tracking linear-ganda memiliki logika untuk menilai tren:
Dengan penilaian tren multi-tingkat, kita dapat secara efektif menyaring kebisingan dan menentukan arah tren.
Strategi trend tracking linear memiliki keuntungan sebagai berikut:
Secara keseluruhan, strategi ini memiliki stabilitas yang lebih baik secara keseluruhan, dengan kinerja yang lebih baik di pasar yang sedang tren.
Strategi trend tracking linear juga memiliki beberapa risiko, terutama:
Dengan demikian, risiko strategi dapat dikurangi dengan:
Ada ruang untuk optimasi lebih lanjut dalam strategi trend tracking linear ganda, terutama dalam hal:
Hal ini dapat meningkatkan stabilitas, adaptasi, dan kecerdasan strategi.
Strategi pelacakan tren garis lurus ganda secara keseluruhan adalah strategi pelacakan tren yang lebih kuat. Ini menggabungkan indikator garis lurus dan saluran harga untuk menentukan arah dan kekuatan tren, dan mengirimkan sinyal perdagangan dengan garis lurus cepat.
/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", 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")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)
//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2
//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 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 and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]
trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -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 < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0
//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")
//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)
//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')
//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]
longCondition = up == 1
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
strategy.exit("Stop Long", "Long", stop = stoplong)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
strategy.exit("Stop Short", "Short", stop = stopshort)