Strategi reversal trend tracking adalah strategi trading trend yang didasarkan pada moving average dan harga ekstrim. Strategi ini menggunakan dua moving average untuk melacak tren harga dan membuka posisi terbalik ketika tren terbalik. Pada saat yang sama, strategi ini juga menghitung saluran harga berdasarkan harga tertinggi dan terendah dari K-line terbaru untuk menghentikan kerugian ketika harga mendekati batas saluran, lebih mengendalikan risiko.
Strategi ini menggunakan rata-rata bergerak titik tinggi dan rendah tiga periode hma dan lma untuk melacak tren harga.
Strategi ini juga menghitung rel atas dan bawah (uplevel dan dnlevel) dari saluran harga berdasarkan harga tertinggi dan terendah dalam garis K-bar terbaru. uplevel adalah harga tertinggi dalam garis K-bar terbaru ditambah koefisien retracement ke atas; dnlevel adalah harga terendah dalam garis K-bar terbaru dikurangi koefisien retracement ke bawah. Ini merupakan kisaran saluran harga.
Ketika membuka posisi panjang, harga stop loss ditetapkan pada rel atas saluran; ketika membuka posisi pendek, harga stop loss ditetapkan pada rel bawah saluran. Ini secara efektif mengendalikan risiko kerugian dari pembalikan harga.
Ketika sinyal kebalikan muncul, strategi akan segera membalikkan posisi terbuka untuk melacak tren harga baru.
Peningkatan:
Ada ruang untuk optimasi lebih lanjut:
Indikator lain dapat diperkenalkan untuk menyaring beberapa sinyal yang tidak valid, seperti MACD, KD, dll.
Logika stop loss adaptif dapat ditambahkan, seperti stop loss bergerak, balance stop loss, dll untuk lebih mengendalikan risiko.
Uji dampak dari parameter yang berbeda pada kinerja strategi dan optimalkan kombinasi parameter, seperti panjang siklus MA, ukuran koefisien retracement, dll.
Strategi ini saat ini diperdagangkan dalam sesi berjam-jam. Ini juga dapat disesuaikan untuk perdagangan sepanjang hari. Ini mungkin memerlukan aturan penyaringan tambahan.
Singkatnya, ini adalah strategi perdagangan pembalikan tren yang menggabungkan saluran harga dan moving average. Dengan melacak tren dan posisi pembukaan terbalik yang tepat waktu, ini dapat secara efektif mengikuti pergerakan harga. Pada saat yang sama, langkah-langkah pengendalian risiko saluran harga dan pembukaan terbalik juga memungkinkannya untuk secara efektif mengendalikan kerugian tunggal. Ide strategi sederhana dan jelas, dan layak diuji dan dioptimalkan lebih lanjut dalam perdagangan langsung.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") corr = input(0.0, title = "Correction, %") bars = input(1, minval = 1) revers = input(false, defval = false, title = "revers") showll = input(true, defval = true, title = "Show Levels") showos = input(true, defval = true, title = "Show Levels one side") showcl = input(false, defval = false, title = "Show Levels continuous line") showbg = input(false, defval = false, title = "Show Background") showar = input(false, defval = false, title = "Show Arrows") 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") len = input(3) hma = sma(high, len) lma = sma(low, len) plot(hma) plot(lma) //Levels hbar = 0 hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0 lbar = 0 lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0 uplevel = 0.0 dnlevel = 0.0 hh = highest(high, bars + 1) ll = lowest(low, bars + 1) uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1] dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1] //Background size = strategy.position_size trend = 0 trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na bgcolor(col) //Lines upcol = na upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime plot(uplevel, color = upcol, linewidth = 2) dncol = na dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red plot(dnlevel, color = dncol, linewidth = 2) //Arrows longsignal = false shortsignal = false longsignal := size > size[1] shortsignal := size < size[1] plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0) //Trading lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if uplevel > 0 and dnlevel > 0 and revers == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel) strategy.entry("Long stop", strategy.short, 0, stop = lma) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel) strategy.entry("Short stop", strategy.long, 0, stop = hma) // if time > timestamp(toyear, tomonth, today, 23, 59) // strategy.close_all()