Strategi Pembalikan Pengesanan Trend

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

img

Ringkasan

Strategi pembalikan trend adalah strategi perdagangan trend berdasarkan purata bergerak dan harga melampau. Strategi ini menggunakan dua purata bergerak untuk mengesan trend harga dan membuka kedudukan terbalik apabila trend berbalik. Pada masa yang sama, ia juga mengira saluran harga berdasarkan harga tertinggi dan terendah K-lines baru-baru ini untuk menghentikan kerugian apabila harga mendekati sempadan saluran, lebih mengawal risiko.

Logika Strategi

Strategi ini menggunakan purata bergerak titik tinggi dan rendah 3 tempoh hma dan lma untuk mengesan trend harga. Apabila harga melintasi di atas hma, ia ditafsirkan sebagai bullish; apabila harga jatuh di bawah lma, ia ditafsirkan sebagai bearish.

Strategi ini juga mengira rel atas dan bawah (uplevel dan dnlevel) saluran harga berdasarkan harga tertinggi dan terendah dalam bar K-garis baru-baru ini. uplevel adalah harga tertinggi dalam bar K-garis baru-baru ini ditambah pekali retracement ke atas; dnlevel adalah harga terendah dalam bar K-garis baru-baru ini dikurangkan pekali retracement ke bawah. Ini membentuk julat saluran harga.

Apabila membuka kedudukan panjang, harga stop loss ditetapkan pada rel atas saluran; apabila membuka kedudukan pendek, harga stop loss ditetapkan pada rel bawah saluran. Ini berkesan mengawal risiko kerugian daripada pembalikan harga.

Apabila isyarat terbalik muncul, strategi akan segera membalikkan kedudukan terbuka untuk mengikuti trend harga baru.

Kelebihan

  • Strategi ini memanfaatkan sepenuhnya purata bergerak untuk mengesan trend dan menangkap pergerakan harga dengan cepat.
  • Ia menggunakan saluran harga dan membalikkan kedudukan pembukaan untuk mengawal risiko dan mengunci keuntungan dengan berkesan.
  • Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan.
  • Parameter yang boleh disesuaikan seperti panjang penilaian trend, pekali retracement, dan lain-lain disesuaikan dengan produk yang berbeza.
  • Sokong piramid yang sama arah, sepenuhnya menangkap peluang trend.

Risiko

  • Rendah kepada isyarat palsu semasa penyatuan harga.
  • Pembalikan trend mungkin tidak selalu mencetuskan stop loss, kerugian maksimum tidak dapat dikawal.
  • Tetapan parameter yang tidak betul boleh menyebabkan reaksi yang terlalu sensitif atau perlahan.
  • Produk dan jangka masa yang sesuai perlu dipilih untuk hasil yang terbaik.

Penambahbaikan:

  1. Menapis isyarat yang tidak sah dengan penunjuk lain;
  2. Tambahkan stop loss bergerak untuk mengunci keuntungan dan hadkan pengeluaran maksimum;
  3. Uji dan optimumkan parameter untuk produk dan kitaran yang berbeza.

Arahan pengoptimuman

Terdapat ruang untuk pengoptimuman lanjut:

  1. Indikator lain boleh diperkenalkan untuk menapis beberapa isyarat yang tidak sah, seperti MACD, KD, dll.

  2. Logik stop loss adaptif boleh ditambah, seperti memindahkan stop loss, baki stop loss, dan lain-lain untuk mengawal risiko lebih lanjut.

  3. Uji kesan parameter yang berbeza terhadap prestasi strategi dan optimumkan kombinasi parameter, seperti panjang kitaran MA, saiz pekali retracement, dll.

  4. Strategi ini kini diperdagangkan dalam sesi berkala. Ia juga boleh diselaraskan untuk perdagangan sepanjang hari. Ini mungkin memerlukan peraturan penapisan tambahan.

Kesimpulan

Ringkasnya, ini adalah strategi perdagangan pembalikan trend yang menggabungkan saluran harga dan purata bergerak. Dengan mengesan trend dan kedudukan pembukaan terbalik tepat pada masanya, ia dapat dengan berkesan mengikuti pergerakan harga. Pada masa yang sama, langkah-langkah kawalan risiko saluran harga dan pembukaan terbalik juga membolehkannya mengawal kerugian tunggal dengan berkesan. Idea strategi adalah mudah dan jelas, dan bernilai ujian dan pengoptimuman 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 lanjut