
Strategi pembalikan harga yang diarahkan oleh ruang menentukan arah trend pergerakan harga dengan mengira garis pusat saluran harga. Apabila harga mendekati garis pusat saluran, isyarat lebih atau kurang dikeluarkan. Strategi ini menggabungkan beberapa syarat penapisan untuk mencari peluang perdagangan yang berkemungkinan tinggi.
Penunjuk utama strategi ini adalah garis tengah saluran harga. Cara pengiraan adalah mengambil purata harga tertinggi dan terendah 30 garis K terkini. Apabila titik rendah di atas garis pusat dianggap sebagai tren naik, dan apabila titik tinggi di bawah garis pusat dianggap sebagai tren turun.
Strategi hanya menghantar isyarat perdagangan apabila latar belakang trend berubah. Iaitu, dalam latar belakang kenaikan, hanya melakukan short apabila K line bertukar menjadi merah; dalam latar belakang penurunan, hanya melakukan lebih banyak apabila K line bertukar menjadi hijau.
Selain itu, strategi ini juga menetapkan syarat penapisan berganda: penapisan entiti penapisan dan penapisan bar saluran harga. Isyarat akan dicetuskan hanya apabila jumlah entiti penapisan lebih besar daripada 20% daripada nilai purata; mesti ada isyarat trend yang berterusan dalam kitaran penapisan untuk membuka kedudukan.
Strategi ini menggabungkan trend, zon nilai dan bentuk garis K, merupakan strategi perdagangan berbalik yang sangat berkesan.
Risiko utama dari strategi ini adalah kehilangan titik perubahan harga dan menunggu isyarat. Ia boleh dioptimumkan dengan kaedah berikut:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi pembalikan harga yang diarahkan ke ruang menghasilkan isyarat berkualiti tinggi dengan menentukan titik pembalikan melalui saluran harga, dengan menetapkan keadaan penapisan berganda. Ia adalah strategi kuantitatif yang boleh dipercayai, berdasarkan pada penyesuaian parameter dan kawalan angin.
/*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()