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.
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.
Penambahbaikan:
Terdapat ruang untuk pengoptimuman lanjut:
Indikator lain boleh diperkenalkan untuk menapis beberapa isyarat yang tidak sah, seperti MACD, KD, dll.
Logik stop loss adaptif boleh ditambah, seperti memindahkan stop loss, baki stop loss, dan lain-lain untuk mengawal risiko lebih lanjut.
Uji kesan parameter yang berbeza terhadap prestasi strategi dan optimumkan kombinasi parameter, seperti panjang kitaran MA, saiz pekali retracement, dll.
Strategi ini kini diperdagangkan dalam sesi berkala. Ia juga boleh diselaraskan untuk perdagangan sepanjang hari. Ini mungkin memerlukan peraturan penapisan tambahan.
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()