
Strategi reversal harga orientasi spasial dengan menghitung garis pusat saluran harga untuk menentukan arah tren pergerakan harga. Ketika harga mendekati garis pusat saluran, sinyal melakukan lebih banyak atau lebih sedikit. Strategi ini menggabungkan beberapa kondisi penyaringan untuk mencari peluang perdagangan dengan probabilitas tinggi.
Indikator utama dari strategi ini adalah garis tengah saluran harga. Perhitungan dilakukan dengan mengambil rata-rata harga tertinggi dan terendah dari 30 garis K terbaru. Ketika titik rendah di atas garis tengah dianggap sebagai tren naik, dan ketika titik tinggi di bawah garis tengah dianggap sebagai tren turun.
Strategi ini hanya mengirimkan sinyal perdagangan ketika ada perubahan dalam latar belakang tren. Dengan kata lain, dalam latar belakang bullish, hanya melakukan shorting ketika garis K berubah menjadi merah; dalam latar belakang bearish, hanya melakukan over ketika garis K berubah menjadi hijau.
Selain itu, strategi ini juga menetapkan kondisi penyaringan ganda: penyaringan entitas penyaringan dan penyaringan bar saluran harga. Sinyal hanya akan dipicu jika volume entitas penyaringan lebih besar dari rata-rata 20%; harus ada sinyal tren yang berkelanjutan dalam siklus penyaringan untuk membuka posisi.
Strategi ini menggabungkan tren, zona nilai, dan bentuk garis K. Strategi ini merupakan strategi perdagangan berbalik yang sangat efisien. Keuntungan utama adalah:
Risiko utama dari strategi ini berasal dari kehilangan titik balik harga dan tidak perlu menunggu sinyal. Strategi ini dapat dioptimalkan dengan cara berikut:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi reversal harga orientasi spasial menghasilkan sinyal berkualitas tinggi dengan menentukan titik reversal melalui saluran harga, dengan pengaturan kondisi penyaringan ganda. Berbasis pada penyesuaian parameter dan kontrol angin, ini adalah strategi kuantitatif yang andal.
/*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()