Strategi Pembalikan Tren Pelacakan

Penulis:ChaoZhang, Tanggal: 2024-01-03 16:34:28
Tag:

img

Gambaran umum

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.

Logika Strategi

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.

Keuntungan

  • Strategi ini memanfaatkan sepenuhnya rata-rata bergerak untuk melacak tren dan menangkap pergerakan harga dengan cepat.
  • Ini menerapkan saluran harga dan posisi pembukaan terbalik untuk mengendalikan risiko dan mengunci keuntungan secara efektif.
  • Logika strategi sederhana dan jelas, mudah dimengerti dan diterapkan.
  • Parameter yang dapat disesuaikan seperti panjang penilaian tren, koefisien retracement, dll.
  • Mendukung piramida arah yang sama, sepenuhnya menangkap peluang tren.

Risiko

  • Cenderung terhadap sinyal palsu selama konsolidasi harga.
  • Pembalikan tren mungkin tidak selalu memicu stop loss, kerugian maksimum tidak dapat dikendalikan.
  • Pengaturan parameter yang tidak benar dapat menyebabkan reaksi yang terlalu sensitif atau lambat.
  • Produk dan kerangka waktu yang tepat harus dipilih untuk hasil terbaik.

Peningkatan:

  1. Menyaring sinyal yang tidak valid dengan indikator lain;
  2. Tambahkan stop loss bergerak untuk mengunci keuntungan dan membatasi penarikan maksimum;
  3. Uji dan optimalkan parameter untuk produk dan siklus yang berbeda.

Arahan Optimasi

Ada ruang untuk optimasi lebih lanjut:

  1. Indikator lain dapat diperkenalkan untuk menyaring beberapa sinyal yang tidak valid, seperti MACD, KD, dll.

  2. Logika stop loss adaptif dapat ditambahkan, seperti stop loss bergerak, balance stop loss, dll untuk lebih mengendalikan risiko.

  3. Uji dampak dari parameter yang berbeda pada kinerja strategi dan optimalkan kombinasi parameter, seperti panjang siklus MA, ukuran koefisien retracement, dll.

  4. Strategi ini saat ini diperdagangkan dalam sesi berjam-jam. Ini juga dapat disesuaikan untuk perdagangan sepanjang hari. Ini mungkin memerlukan aturan penyaringan tambahan.

Kesimpulan

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()

Lebih banyak