
Transition zone strategi adalah strategi perdagangan garis pendek yang didasarkan pada zona fluktuasi harga. Ini menggunakan zona fluktuasi yang terbentuk dalam harga dalam jangka waktu tertentu untuk menilai tren pasar, dan masuk ke dalam zona ketika zona tersebut pecah.
Strategi ini membangun zona fluktuasi harga dengan menghitung harga tertinggi dan terendah dari garis K akar N yang lalu. Ketika garis K terbaru menembus zona ini, maka akan terjadi pergeseran tren dan menghasilkan sinyal perdagangan.
Secara khusus, strategi terus melacak harga tertinggi dan harga terendah pada N akar terakhir K garis ((N parameter yang dapat disesuaikan), di mana:
Dengan demikian, harga bisa berfluktuasi.
Ketika harga penutupan K-line terbaru lebih tinggi dari harga tertinggi dalam kisaran, ini menandakan bahwa kisaran telah pecah, menghasilkan sinyal melakukan lebih banyak. Ketika harga penutupan K-line terbaru lebih rendah dari kisaran harga terendah, ini menandakan bahwa kisaran telah pecah, menghasilkan sinyal melakukan lebih banyak.
Selain itu, kebijakan ini juga menambahkan filter warna dan filter entitas. Filter warna memfilter sinyal berdasarkan warna entitas K; Filter entitas memfilter sinyal berdasarkan ukuran entitas K. Ini dapat memfilter beberapa sinyal palsu.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Risiko ini dapat dikurangi dengan menyesuaikan parameter interval dan mengoptimalkan kondisi penyaringan sinyal.
Strategi ini dapat dioptimalkan dari beberapa arah:
Transition zone strategi secara keseluruhan adalah strategi perdagangan garis pendek yang relatif sederhana dan praktis. Ini dapat menangkap peluang pasar dengan cepat dengan menilai titik balik tren melalui kisaran harga. Namun, ada beberapa risiko yang perlu diperhatikan. Dengan penyesuaian dan pengoptimalan parameter, strategi ini dapat disempurnakan lebih lanjut dan meningkatkan efektivitas keuntungan.
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy("Noro's Transient Zones Strategy v1.0", shorttitle = "TZ str 1.0", 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, %")
usecol = input(true, defval = true, title = "Use Color-Filter")
usebod = input(true, defval = true, title = "Use Body-Filter")
h_left = input(title = "H left", defval = 10)
h_right = -1
sample_period = input(title = "Sample bars for % TZ", defval = 5000)
show_ptz = input(title = "Show PTZ", type = bool, defval = true)
show_channel = input(title = "Show channel", type = bool, defval = true)
fromyear = input(2018, defval = 2018, 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")
//By Jurij w/ TZ percent occurrence by SPYderCrusher
//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
plotshape(newlow and show_ptz, style=shape.triangledown, location=location.belowbar, color=red)
plotshape(newhigh and show_ptz, style=shape.triangleup, location=location.abovebar, color=green)
channel_high = plot(show_channel ? h_left_low : 0, color=silver)
channel_low = plot (show_channel ? h_left_high : 0, color=silver)
//check true TZ back in history
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotarrow(central_bar_is_highest ? -1 : 0, offset=-h_right-1)
plotarrow(central_bar_is_lowest ? 1 : 0, offset=-h_right-1)
//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Signals
up1 = central_bar_is_lowest and body and (bar == -1 or usecol == false)
dn1 = central_bar_is_highest and body and (bar == 1 or usecol == false)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up1
if strategy.position_size < 0
strategy.close_all()
strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()