Strategi ini menggunakan gabungan purata bergerak pantas dan perlahan untuk menentukan arah trend dan menangkap trend jangka menengah hingga panjang untuk perdagangan trend. Ia pergi lama apabila MA pantas melintasi di atas MA perlahan, dan pergi pendek apabila MA pantas melintasi di bawah MA perlahan. Ini adalah strategi trend yang biasa.
Strategi ini terutamanya bergantung kepada salib emas dan salib kematian purata bergerak untuk menentukan trend pasaran. Khususnya, ia menggunakan MA cepat 5 tempoh dan MA perlahan 21 tempoh.
Apabila MA pantas melintasi di atas MA perlahan, ia menandakan trend menaik di pasaran, dan strategi akan pergi panjang pada pembukaan bar seterusnya.
Di samping itu, parameter
Untuk perdagangan kripto, strategi ini juga menggabungkan logik nilai melampau - hanya apabila kedua-dua MA cepat dan perlahan mencapai kawasan melampau isyarat perdagangan akan dicetuskan. Ini seterusnya mengelakkan isyarat palsu.
Peraturan keluar adalah mudah dan langsung - kedudukan dekat apabila stop loss dipukul.
Risiko boleh dikurangkan dengan:
Strategi ini boleh ditingkatkan dari aspek berikut:
Uji lebih banyak kombinasi MA untuk mencari parameter optimum untuk pasaran semasa, contohnya MA cepat 10 tempoh dan MA perlahan 50 tempoh.
Uji tambah MACD, KDJ dan penunjuk lain untuk menetapkan peraturan kemasukan yang lebih ketat dan mengelakkan isyarat palsu.
Pendaftaran MA berganda mudah semasa boleh dipertingkatkan:
Uji mekanisme hentian lain seperti hentian belakang untuk mengelakkan hentian awal.
Membolehkan kemasukan semula selepas berhenti, untuk mengelakkan kehilangan trend.
Ringkasnya, strategi trend berikut asas ini mempunyai logik yang mudah dan mudah - menggunakan dua MA untuk arah trend dan bergerak berhenti untuk pengurusan risiko. Pro mudah difahami, boleh mendapat keuntungan daripada trend, dan menguruskan risiko. Tetapi batasan juga ada, seperti isyarat buruk semasa penyatuan, berhenti awal, dan lain-lain. Penyesuaian langsung dan pengoptimuman diperlukan, seperti menambahkan penapis, menyesuaikan berhenti, untuk menjadikannya dapat disesuaikan dengan persekitaran pasaran yang berbeza. Sebagai strategi perdagangan trend pengenalan, ia sesuai untuk pemula untuk belajar dan menerapkan. Tetapi keterbatasannya harus diperhatikan, dan strategi yang lebih maju harus diterokai. Hanya melalui peningkatan berterusan seseorang dapat mencapai keuntungan yang mampan di pasaran yang sentiasa berubah.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", 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, %") 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?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") src = close //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 trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[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 //Fast RSI fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //CryptoBottom mac = sma(close, 10) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) //Signals up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1 dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1 up2 = high < center and high < center2 and bar == -1 and needex dn2 = low > center and low > center2 and bar == 1 and needex up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //Lines plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] if up1 or up2 or up3 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Long", "Long", stop = stoplong) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Short", "Short", stop = stopshort) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()