Strategi ini menggunakan kombinasi garis rata-rata cepat dan garis rata-rata lambat untuk menilai arah tren, untuk menangkap tren garis tengah dan panjang untuk melakukan perdagangan tren. Melakukan overtrading ketika melewati garis rata-rata cepat di atas garis rata-rata lambat, dan mengambil posisi kosong ketika melewati garis rata-rata lambat di bawah garis rata-rata cepat, adalah strategi pelacakan tren yang khas.
Strategi ini terutama mengandalkan garis rata untuk menilai tren pasar. Secara khusus, strategi ini menggunakan rata-rata cepat 5 siklus dan rata-rata lambat 21 siklus.
Ketika kecepatan rata-rata melewati kecepatan rata-rata di atas, berarti tren pasar bergeser lebih banyak, strategi ini akan melakukan lebih banyak pada saat membuka K berikutnya; ketika kecepatan rata-rata melewati kecepatan rata-rata di bawah, berarti tren pasar bergeser, strategi ini akan melakukan lebih banyak pada saat membuka K berikutnya.
Selain itu, strategi ini juga mengatur parameter filter bars untuk memfilter penembusan palsu. Parameter ini memiliki nilai default 2, yang berarti bahwa garis rata-rata cepat membutuhkan 2 garis K berturut-turut di atas garis rata-rata lambat untuk menghasilkan sinyal ganda, yang dapat memfilter penembusan palsu secara efektif.
Untuk mata uang kripto, strategi ini juga menambahkan logika penilaian nilai ekstrem. Sinyal perdagangan hanya akan dikirimkan ketika garis rata-rata cepat dan garis rata-rata lambat berada di zona ekstrem pada saat yang sama.
Strategi untuk keluar dari aturan ini sederhana dan langsung, keluar dari posisi saat ini ketika harga memicu stop loss.
Risiko dapat dikurangi dengan melakukan hal berikut:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Anda dapat menguji lebih banyak kombinasi untuk menemukan parameter garis rata-rata yang lebih sesuai dengan pasar saat ini. Misalnya, menyesuaikan garis cepat dengan 10 siklus dan garis lambat dengan 50 siklus.
Dapat diuji dengan menambahkan MACD, KDJ dan indikator lainnya, dan mengatur kondisi yang lebih ketat untuk menghindari penembusan palsu.
Akses saat ini terlalu sederhana dan bergantung pada rata-rata, yang dapat dioptimalkan sebagai berikut:
Metode lain untuk menghentikan kerugian dapat diuji, misalnya, dengan melacak harga untuk menghindari terjadinya kerugian yang terlalu dini.
Setelah posisi terhenti, Anda dapat masuk kembali, sehingga mengurangi kemungkinan terhenti di luar dan kehilangan tren.
Strategi ini sebagai dasar strategi trend tracking, ide inti sederhana dan langsung, menggunakan arah penilaian tren dua garis lurus, dan stop loss bergerak untuk mengendalikan risiko. Keuntungan adalah mudah dipahami dan diterapkan, dapat mengikuti tren untuk mendapatkan keuntungan, risiko juga dapat dikendalikan. Namun, ada juga beberapa kelemahan, sinyal tidak akurat dalam perdagangan pasar, dan stop loss mudah terlalu cepat dipicu. Ini membutuhkan kita untuk terus menyesuaikan dan mengoptimalkan dalam perdagangan, menambahkan indikator teknis lainnya untuk memfilter, agar strategi lebih sesuai dengan lingkungan pasar yang berbeda.
/*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()