Strategi pengesanan trend binari adalah strategi yang menggunakan gabungan purata bergerak cepat dan purata bergerak perlahan untuk menilai trend pasaran dan mengeluarkan isyarat perdagangan apabila terdapat perubahan arah trend. Strategi ini menggabungkan indikator garis rata dan indikator saluran harga untuk mengenal pasti trend, yang dapat menyaring bunyi pasaran dengan berkesan dan menentukan arah trend.
Strategi trend pengesanan dua rata-rata menggunakan dua penunjuk rata-rata bergerak iaitu rata-rata bergerak cepat ((5 kitaran) dan rata-rata bergerak perlahan ((21 kitaran). Rata-rata bergerak cepat digunakan untuk menghasilkan isyarat perdagangan, rata-rata bergerak perlahan digunakan untuk menentukan arah trend pasaran. Apabila rata-rata bergerak cepat melintasi rata-rata perlahan dari bawah ke atas, ia menghasilkan isyarat membeli; apabila rata-rata bergerak cepat melintasi rata-rata perlahan dari atas ke bawah, ia menghasilkan isyarat menjual.
Strategi ini juga menggunakan indikator saluran harga untuk membantu menentukan trend. Saluran harga ditentukan oleh purata bergerak harga tertinggi dan terendah. Apabila harga menembusi saluran, menunjukkan bahawa trend berbalik. Strategi ini menggunakan dua saluran harga, dengan kitaran saluran harga pertama 21, dan kitaran saluran harga kedua 5, yang sepadan dengan kitaran garis rata-rata.
Dalam menilai isyarat membeli dan menjual, strategi ini memerlukan tiang merah muncul secara berturut-turut ((pengguna boleh menetapkan bilangan tiang), sebagai syarat penapisan tambahan. Ini dapat mengelakkan isyarat salah di kawasan persidangan.
Secara umum, logik untuk menentukan trend dalam strategi trend track adalah:
Menggunakan pelbagai peringkat penilaian trend, anda boleh menyaring kebisingan dan menentukan arah trend.
Strategi trend-following dua garis rata mempunyai kelebihan berikut:
Secara keseluruhannya, strategi ini mempunyai kestabilan yang lebih baik secara keseluruhan, dengan prestasi yang lebih baik dalam pasaran yang sedang tren.
Terdapat beberapa risiko dalam strategi trend-following linear.
Oleh itu, risiko strategik dapat dikurangkan dengan:
Terdapat ruang untuk pengoptimuman lebih lanjut dalam strategi trend pengesanan dua garis lurus, yang meliputi:
Arahan pengoptimuman ini dapat meningkatkan lagi tahap kestabilan, adaptasi dan kecerdasan strategi.
Strategi trend pengesanan dua garis rata adalah strategi trend pengesanan yang lebih kukuh secara keseluruhan. Ia menggabungkan petunjuk garis rata dan saluran harga untuk menentukan arah dan kekuatan trend, dan menghantar isyarat perdagangan dengan garis rata yang cepat. Keadaan penapis tiang tambahan juga dapat mengelakkan isyarat yang salah.
/*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)