Strategi Pengesanan Trend Purata Bergerak Berganda adalah strategi yang menggunakan gabungan purata bergerak pantas dan perlahan untuk menentukan trend pasaran, dan menghasilkan isyarat perdagangan apabila arah trend berubah.
Strategi Pengesanan Trend Purata Bergerak Berganda menggunakan dua purata bergerak - purata bergerak pantas (5 tempoh) dan purata bergerak perlahan (21 tempoh). MA pantas digunakan untuk menjana isyarat perdagangan manakala MA perlahan digunakan untuk menentukan arah trend pasaran. Apabila MA pantas melintasi di atas MA perlahan, isyarat beli dihasilkan. Apabila MA pantas melintasi di bawah MA perlahan, isyarat jual dihasilkan.
Strategi ini juga menggunakan penunjuk saluran harga untuk membantu menentukan trend. Saluran harga ditentukan oleh purata bergerak harga tertinggi dan terendah. Apabila harga menembusi saluran, ia menunjukkan pembalikan trend. Strategi ini menggunakan dua saluran harga dengan tempoh masing-masing 21 dan 5, yang sepadan dengan tempoh MA.
Apabila menentukan isyarat beli dan jual, strategi memerlukan lilin merah / hijau berturut-turut muncul (boleh disesuaikan pengguna) sebagai keadaan penapis tambahan.
Ringkasnya, logik untuk menentukan trend dalam strategi ini adalah:
Dengan menghakimi trend merentasi jangka masa, bunyi bising pasaran dapat ditapis dengan berkesan dan arah trend disahkan.
Strategi Pengesanan Trend Purata Bergerak Berganda mempunyai kelebihan berikut:
Kesimpulannya, strategi ini mempunyai kestabilan keseluruhan yang agak baik dan berprestasi baik di pasaran dengan trend yang kuat.
Strategi Pengesanan Trend Purata Bergerak Berganda juga mempunyai beberapa risiko, terutamanya:
Langkah-langkah yang sepadan untuk mengurangkan risiko termasuk:
Terdapat ruang untuk pengoptimuman lagi strategi, terutamanya dalam arah seperti:
Arahan pengoptimuman ini dapat meningkatkan kestabilan, kebolehsesuaian dan tahap kecerdasan strategi.
Kesimpulannya, strategi Pengesanan Trend Purata Bergerak Berganda adalah strategi trend yang agak kukuh. Ia menggabungkan purata bergerak dan saluran harga untuk menentukan arah trend dan kekuatan, menjana isyarat perdagangan dengan MA yang cepat. Penapis lilin tambahan juga membantu mengelakkan isyarat yang salah. Parameter yang boleh disesuaikan membolehkan penyesuaian dengan persekitaran pasaran yang berbeza. Terdapat juga ruang yang cukup untuk pengoptimuman lanjut untuk membina strategi perdagangan automatik yang boleh dipercayai dan pintar.
/*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)