Strategi pembalikan harga yang dipandu oleh saluran harga mengira garis tengah saluran harga untuk menentukan arah trend turun naik harga. Ia menghasilkan isyarat panjang dan pendek apabila harga mendekati garis tengah saluran. Strategi ini menggabungkan pelbagai keadaan penapis untuk mencari peluang perdagangan kebarangkalian tinggi.
Indikator teras strategi ini adalah garis pusat saluran harga. Ia dikira sebagai purata harga tertinggi dan harga terendah dari 30 candlestick yang paling baru. Apabila rendah lebih tinggi daripada garis pusat, ia dianggap sebagai trend menaik. Apabila tinggi lebih rendah daripada garis pusat, ia dianggap sebagai trend menurun.
Strategi ini hanya menghasilkan isyarat perdagangan apabila latar belakang trend berubah. iaitu, dalam latar belakang uptrend, ia akan pendek hanya apabila lilin berubah menjadi merah. Dalam latar belakang downtrend, ia akan panjang hanya apabila lilin berubah menjadi hijau.
Di samping itu, strategi ini juga menetapkan syarat penapis berganda: penapis badan candlestick dan penapis bar saluran harga. Isyarat hanya dicetuskan apabila jumlah badan candlestick lebih besar daripada 20% daripada nilai purata, dan mesti ada isyarat trend berturut-turut dalam kitaran penapis untuk membuka kedudukan.
Strategi ini menggabungkan trend, kawasan nilai dan corak candlestick, yang merupakan strategi perdagangan pembalikan yang cekap.
Risiko utama strategi ini berasal dari titik pembalikan harga yang hilang dan menunggu isyarat yang tidak perlu.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Strategi pembalikan harga yang dipandu oleh saluran harga menentukan titik pembalikan melalui saluran harga, dan menetapkan keadaan penapis berganda untuk menghasilkan isyarat berkualiti tinggi.
/*backtest start: 2023-11-19 00:00:00 end: 2023-11-26 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", 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") slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period") pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars") usecol = input(true, "Use color-filter") usebod = input(true, "Use body-filter") needbg = input(false, defval = false, title = "Need trend Background?") 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 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //Trend ub = low > center ? 1 : 0 db = high < center ? 1 : 0 trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1] //Body body = abs(close - open) abody = sma(body, 10) //Signals up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false) dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false) //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading if up 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))) if dn 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))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()